KVoiceWalk是一款针对Kokoro文本转语音(TTS)系统的语音风格克隆应用,通过随机游走算法与混合评分方法(结合Resemblyzer相似度、特征提取和自相似度),生成接近目标语音的新Kokoro语音风格张量。
KVoiceWalk早期仅使用Resemblyzer相似度的尝试导致模型过拟合,生成效果不佳。后来团队引入自相似度以确保模型输出稳定性,避免不同输入导致的音质波动,同时增加音频特征相似度对比,防止因单纯追求相似度而牺牲音质(例如生成类似金属碰撞的噪音)。
评分函数采用调和平均计算,允许自相似度、特征相似度和目标相似度在合理范围内波动,避免因要求所有指标同步提升而导致算法停滞。特征相似度的权重较低,主要用于防止语音特征偏离合理范围。
环境要求 1、克隆仓库:
git clone https://github.com/RobViren/kvoicewalk.git
cd kvoicewalk
2、准备目标音频:
• 格式要求:24000 Hz采样率的WAV文件,时长建议20-30秒,单 speaker 录音。
• 转换示例(使用FFmpeg):
ffmpeg -i input_file.wav -ar 24000 target.wav
基础运行命令
uv run main.py --target_text "待合成的文本内容" --target_audio ./路径/目标音频.wav
程序会遍历voices
文件夹中的语音文件,筛选与目标音频最接近的初始样本,通过随机游走迭代优化,将结果保存至out
文件夹。
高级功能:插值启动
uv run main.py --target_text "音频中的文本内容" --target_audio ./路径/目标音频.wav --interpolate_start
该模式会先对预训练语音进行插值搜索,生成优化后的初始张量种群(保存于interpolated
文件夹),再启动随机游走,该过程需较强计算资源(GPU加速效果显著)。
以example/target.wav
为例:
基线模型:Kokoro内置的af_heart.pt
,Resemblyzer相似度71%,评分为81.22。
插值搜索结果:生成的af_jessica.pt_if_sara.pt_0.10.pt
,相似度提升至78%,评分84.20。
随机游走10,000步后:相似度达93%,评分92.99,在保持模型稳定性的同时显著提升音质匹配度。
1、非并行运行:支持对低质量张量提前终止计算,单卡(如RTX 3070)可并行运行2个实例。
2、结果随机性:迭代过程可能长期停滞或突然优化,需多次尝试以获得理想效果。
3、未来改进方向:
• 构建结果数据库,训练相似度预测模型以引导语音生成;
• 探索PCA以外的语音生成方法;
• 实现遗传算法替代随机游走,提升优化效率。
文件/文件夹 | 功能描述 |
---|---|
example |
包含示例音频和配置文件 |
voices |
存储预训练语音张量 |
main.py |
主程序入口,处理核心逻辑 |
voice_generator.py |
语音张量生成模块 |
speech_generator.py |
语音合成模块 |
fitness_scorer.py |
评分函数实现 |