部署含60+克隆语音的YourTTS多语言模型时遇TypeError问题求助
解决YourTTS部署中的TypeError问题
问题场景
Windows本地部署含多克隆语音的多语言YourTTS模型,执行合成命令后触发错误:
File "C:\Users\Home\Environments\lib\site-packages\TTS\tts\utils\managers.py", line 194, in <setcomp> speakers = sorted({x["name"] for x in embeddings.values()}) TypeError: 'int' object is not subscriptable
执行的合成命令:
python synthesize.py --text "This is a test sentence." --out_path "C:/Users/Home/OneDrive/Projects/Projects/QuranBeheld/scripts/coqui_TTS/nanonomad_models/output.wav" --model_path "c:/Users/Home/Environments/quranbeheld3.10.11/Lib/site-packages/TTS/nanonomad_models/checkpoint_1978000.pth" --config_path "c:/Users/Home/Environments/quranbeheld3.10.11/Lib/site-packages/TTS/nanonomad_models/config.json" --speakers_file_path "C:/Users/Home/OneDrive/Projects/Projects/QuranBeheld/scripts/coqui_TTS/nanonomad_models/speaker_ids.json" --speaker_idx "VCTK_johnw"
错误原因
代码期望embeddings.values()返回包含name字段的字典对象,但实际返回整数类型,无法通过x["name"]取值。核心问题是手动创建的speaker_ids.json格式不符合YourTTS要求,或config.json中speaker embedding配置路径错误。
解决步骤
修正
speaker_ids.json格式
YourTTS要求该文件为键值对结构,值需是包含name和embedding字段的字典,示例格式:{ "VCTK_johnw": { "name": "VCTK_johnw", "embedding": [0.123, 0.456, ...] } }需从模型配套资源中获取正确的speaker embedding数据,禁止手动生成空或错误格式的文件。
检查
config.json关键配置
确认config.json中:speaker_embedding_file指向正确的speaker embedding文件,格式需匹配model_args.speaker_embedding_dim与模型训练时的维度一致
避免路径错误导致加载的文件内容不符合预期。
验证文件路径与权限
确保--speakers_file_path参数指向的路径正确,Windows系统注意使用/或转义\\作为路径分隔符,同时保证文件有可读权限。对齐Coqui TTS版本
安装模型说明文档指定的Coqui TTS版本,版本不兼容会导致数据解析逻辑不匹配,引发类型错误。
内容的提问来源于stack exchange,提问作者Ghulam
相关产品推荐
相关产品推荐

