ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何在 TTS 中用 Tortoise 模型克隆指定说话人?

如何在 TTS 中用 Tortoise 模型克隆指定说话人? 如何在 TTS 中用 Tortoise 模型克隆指定说话人【免费下载链接】TTS - a deep learning toolkit for Text-to-Speech, battle-tested in research and production项目地址: https://gitcode.com/GitHub_Trending/tt/TTS本文解决的问题是在 TTSCoqui TTS中使用 Tortoise 模型基于指定说话人的参考音频生成该说话人声音的语音文件。Tortoise 是基于 GPT 式自回归声学模型、扩散模型和 Univnet 声码器组成的 TTS 系统文档明确指出它具有出色的语音克隆能力impressive voice cloning capabilities代价是比 VITS 等并行 TTS 模型慢很多。适用前提已按 安装文档 安装 TTS推荐方式为pip install TTS项目支持 Python 3.7 3.11.0官方在 Ubuntu 18.10、19.10、20.10 上测试过已准备目标说话人的参考音频目录结构见下文。完成后会得到一个output.wav其音色由你指定的voice_dir和speaker决定。准备说话人参考语音目录Tortoise 的克隆机制依赖一个语音参考目录目录下的每个子目录对应一个说话人子目录内放该说话人的参考音频。audio_utils.py 中get_voices的扫描逻辑是遍历voice_dir下每个子目录收集其中的.wav、.mp3文件或恰好一个.pth文件.pth会被直接加载为 conditioning latent。因此目录形如path/to/tortoise/voices/dir/ └── lj/ ├── 1.wav └── 2.wav文中所有path/to/tortoise/voices/dir/均指这个由你自己准备的语音参考目录根路径lj是文档示例中使用的说话人子目录名可换成你要克隆的说话人名称。需要说明文档示例注释提到lj的语音来自TTS/tts/utils/assets/tortoise/voices/lj但当前仓库中 TTS/tts/utils/assets/tortoise/ 目录只包含tokenizer.json并没有voices目录所以请用自己准备的参考音频目录替换该路径不要直接照抄。用 Python API 克隆指定说话人模型文档 给出的 API 用法如下voice_dir加上speaker两个参数共同决定克隆对象from TTS.api import TTS tts TTS(tts_models/en/multi-dataset/tortoise-v2) # cloning lj voice from TTS/tts/utils/assets/tortoise/voices/lj # with custom inference settings overriding defaults. tts.tts_to_file(textHello, my name is Manmay , how are you?, file_pathoutput.wav, voice_dirpath/to/tortoise/voices/dir/, speakerlj, num_autoregressive_samples1, diffusion_iterations10)参数说明均来自文档示例voice_dir上一步准备的语音参考目录speakervoice_dir下的说话人子目录名num_autoregressive_samples1、diffusion_iterations10文档注释写明这是覆盖默认值的自定义推理设置用于降低推理开销。不传voice_dir和speaker时同一条接口生成随机音色可用于对照克隆效果# Random voice generation tts.tts_to_file(textHello, my name is Manmay , how are you?, file_pathoutput.wav)用命令行克隆指定说话人如果不想写脚本ttsCLI 提供等价路径--voice_dir加--speaker_idx指定克隆对象# cloning the lj voice tts --model_name tts_models/en/multi-dataset/tortoise-v2 \ --text This is an example. \ --out_path output.wav \ --voice_dir path/to/tortoise/voices/dir/ \ --speaker_idx lj \ --progress_bar True # Random voice generation tts --model_name tts_models/en/multi-dataset/tortoise-v2 \ --text This is an example. \ --out_path output.wav \ --progress_bar True--out_path是输出音频保存位置--progress_bar True显示生成进度。不传--voice_dir/--speaker_idx即随机音色。CLI 的一般用法如--list_models查看可用模型见 推理文档。控制生成速度preset 与低层接口Tortoise 很慢文档给出了两个提速手段。其一Python API 使用 preset文档示例使用presetultra_fast# Using presets with the same voice tts.tts_to_file(textHello, my name is Manmay , how are you?, file_pathoutput.wav, voice_dirpath/to/tortoise/voices/dir/, speakerlj, presetultra_fast)notebooks/Tortoise.ipynb 中列出的 preset 选项为{ultra_fast, fast (default), standard, high_quality}对应质量与速度的取舍。其二文档还给出了绕过TTS封装、直接操作模型的低层写法可选路径适合需要自定义 checkpoint 目录的场景from TTS.tts.configs.tortoise_config import TortoiseConfig from TTS.tts.models.tortoise import Tortoise config TortoiseConfig() model Tortoise.init_from_config(config) model.load_checkpoint(config, checkpoint_dirpaths/to/models_dir/, evalTrue) # with random speaker output_dict model.synthesize(text, config, speaker_idrandom, extra_voice_dirsNone, **kwargs) # cloning a speaker output_dict model.synthesize(text, config, speaker_idspeaker_n, extra_voice_dirspath/to/speaker_n/, **kwargs)其中checkpoint_dir需替换为你本地模型 checkpoint 所在目录speaker_id/extra_voice_dirs与上文的speaker/voice_dir语义对应。Notebook 中对应的低层入口是TextToSpeech()加load_voice(voice)首次实例化时会自动从 HuggingFace hub 下载 Tortoise 所需的全部模型。验证结果三条路径的成功判据一致在file_path/--out_path指定的位置生成 wav 文件。tts_to_file会调用save_wav把合成音频写入file_path并返回该路径见 api.py 中tts_to_file实现Notebook 中则用torchaudio.save(generated.wav, gen.squeeze(0).cpu(), 24000)落盘并通过IPython.display.Audio(generated.wav)播放确认内容。对照检查建议先跑一次不带voice_dir/speaker的随机音色生成再跑带参数的克隆生成用听感确认第二次输出确实接近voice_dir中该说话人的参考音频。文档未给出量化的相似度指标克隆效果以人工听辨为准。已知限制速度慢文档原文指出 Tortoise very slow compared to the parallel TTS models like VITS。对速度敏感时用presetultra_fast或显式调低num_autoregressive_samples、diffusion_iterations文档示例取 1 和 10。模型名tts_models/en/multi-dataset/tortoise-v2面向英文文档示例文本均为英文。参考目录格式错误会导致找不到说话人voice_dir下必须存在与speaker同名的子目录且子目录内含.wav/.mp3文件或恰好一个.pth文件load_voice对voice random之外但不存在的说话人会直接取voices[voice]报错不会静默回退。多说话人组合限制load_voices只允许组合纯音频语音或纯 latent 语音不允许混合源码中会断言报错。如果想在交互式环境里完整走一遍克隆流程含 preset 选择与播放可参考 notebooks/Tortoise.ipynb更多 Tortoise 的论文与相关资源链接见 docs/source/models/tortoise.md。【免费下载链接】TTS - a deep learning toolkit for Text-to-Speech, battle-tested in research and production项目地址: https://gitcode.com/GitHub_Trending/tt/TTS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表