
如何用 tts_with_vc_to_file 让 TTS 单说话人模型输出目标音色【免费下载链接】TTS - a deep learning toolkit for Text-to-Speech, battle-tested in research and production项目地址: https://gitcode.com/GitHub_Trending/tt/TTS单说话人 TTS 模型只能合成固定的一个音色无法直接“克隆”别人声音。Coqui TTS 的 Python API 提供了tts_with_vc_to_file它先用 TTS 模型把文本合成出来再用语音转换voice conversion模型把合成结果转成speaker_wav指定说话人的音色最后写入 wav 文件。按照 docs/source/inference.md 的说法这种方式“can clone voices by using any model in TTS”。下文以仓库文档中的单说话人示例为准说明完整的操作路径。准备条件先安装 TTS文档推荐用 PyPIpip install TTS需要准备两样东西一个单说话人 TTS 模型。可以用 CLI 的tts --list_models或 Python 的TTS().list_models()列出可用模型从列表里挑一个单说话人模型。文档示例使用德语单说话人模型tts_models/de/thorsten/tacotron2-DDC。一段目标说话人的参考 wav作为目标音色的参考音频。文档示例中路径写作target/speaker.wav实际操作时替换成你自己的参考音频路径。API docstring 中提到“Some models might be too slow on CPU”如果你有 GPU可以按文档的模式把模型移到设备上。这个方法内部做了什么结合 TTS/api.py 中tts_with_vc的实现tts_with_vc_to_file执行三步用当前加载的 TTS 模型合成文本先写入一个临时 wav 文件如果还没有加载语音转换模型自动加载voice_conversion_models/multilingual/vctk/freevc24以临时 wav 作为source_wav、以传入的speaker_wav作为target_wav做音色转换把转换后的音频保存到file_path采样率取自语音转换模型配置中的vc_config.audio.output_sample_rate。注意speaker_wav在这个调用里扮演的是目标音色参考而不是“要被转换掉的源声音”——源声音是 TTS 模型刚刚合成的那一段。另外与tts_to_file不同tts_with_vc_to_file的源码实现中没有返回值判断是否成功以file_path处的文件是否生成为准。执行步骤文档给出的单说话人主路径示例README.md 与 docs/source/inference.md 内容一致from TTS.api import TTS # Init TTS with the target model name tts TTS(tts_models/de/thorsten/tacotron2-DDC) tts.tts_with_vc_to_file( Wie sage ich auf Italienisch, dass ich dich liebe?, speaker_wavtarget/speaker.wav, file_pathoutput.wav )参数说明来自 TTS/api.py 的函数签名与 docstringtext第一个位置参数要合成的文本。示例使用德语单说话人模型因此文本是德语。speaker_wav目标说话人的参考 wav 路径本场景的必需输入示例路径target/speaker.wav需替换为你自己的文件。file_path输出文件路径默认output.wav。language多语言模型的语言代码。对非多语言模型传入该参数会抛出ValueError(Model is not multi-lingual butlanguageis provided.)_check_arguments的检查所以德语单说话人示例中没有传它。speaker多说话人模型的说话人名称单说话人模型不需要。split_sentences默认True分句合成再拼接音频设为False会占用更多显存并可能触发模型特有的文本长度或显存限制。首次运行时模型会自动下载构造函数可用progress_bar参数控制下载进度条的显示文档其他示例中写作TTS(..., progress_barFalse)。有 GPU 时可选地把模型移到设备import torch device cuda if torch.cuda.is_available() else cpu tts TTS(tts_models/de/thorsten/tacotron2-DDC, progress_barFalse).to(device)可选分支fairseq 多语言单说话人模型。名称格式为tts_models/lang-iso_code/fairseq/vits覆盖约 1100 种语言同样支持该 APIapi TTS(tts_models/deu/fairseq/vits) api.tts_with_vc_to_file( Wie sage ich auf Italienisch, dass ich dich liebe?, speaker_wavtarget/speaker.wav, file_pathoutput.wav )结果验证与已知限制调用结束后检查file_path指定的输出文件是否生成播放确认音色已转为speaker_wav中的说话人。文档对语音转换模型的描述是“Convert source wav to target speaker”即输出应带目标参考音频的音色。输出文件的采样率由语音转换模型配置vc_config.audio.output_sample_rate决定而不是 TTS 模型本身的输出采样率这是源码中save_wav的实际行为。走tts_with_vc_to_file时语音转换模型固定为自动加载的voice_conversion_models/multilingual/vctk/freevc24文档没有提供在此调用中更换其他 VC 模型的参数。如果只是想把一段已有音频转成目标音色而不经过 TTS可以用文档中的独立 APIvoice_conversion_to_file(source_wav..., target_wav..., file_path...)那是另一条调用路径不属于本场景。单说话人模型对文本语言有固定性示例中的tts_models/de/thorsten/tacotron2-DDC对应德语文本。需要其他语言时用tts --list_models/TTS().list_models()选择对应语言的单说话人模型再走同样的调用。【免费下载链接】TTS - a deep learning toolkit for Text-to-Speech, battle-tested in research and production项目地址: https://gitcode.com/GitHub_Trending/tt/TTS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考