在Colab中使用Vakyansh TTS模型报错,无法生成WAV文件求助
解决Vakyansh TTS中/src/glow_tts目录不存在的错误
出现SystemExit: Error: /src/glow_tts directory does not exist错误的核心原因有两个:
- Colab中单独使用
!cd命令不会持续切换目录,每个!开头的命令都是独立子进程,执行后会回到初始目录 - 未下载Vakyansh所需的预训练Glow-TTS和HiFi-GAN模型,这两个模型目录不会随项目克隆自动生成
修正步骤及完整代码
1. 修正目录切换与依赖安装
将分散的!cd命令改为用&&串联,或使用IPython魔法命令%cd确保目录切换持续生效:
!git clone https://github.com/Open-Speech-EkStep/vakyansh-tts %cd vakyansh-tts !bash install.sh !python setup.py bdist_wheel !pip install -e . %cd tts_infer !wget https://storage.googleapis.com/vakyansh-open-models/translit_models.zip && unzip -q translit_models.zip
2. 下载预训练模型
添加命令下载Glow-TTS和HiFi-GAN模型到当前目录:
# 下载印地语Glow-TTS模型(其他语言替换对应URL) !wget https://storage.googleapis.com/vakyansh-open-models/hindi/glow_tts.zip && unzip -q glow_tts.zip # 下载印地语HiFi-GAN模型(其他语言替换对应URL) !wget https://storage.googleapis.com/vakyansh-open-models/hindi/hifi_gan.zip && unzip -q hifi_gan.zip
注:若使用其他语言模型,需替换上述URL为对应语言的模型地址
3. 调整代码中的模型路径
将原代码中的绝对路径改为当前目录下的相对路径:
from tts_infer.tts import TextToMel, MelToWav from tts_infer.transliterate import XlitEngine from tts_infer.num_to_word_on_sent import normalize_nums import re from scipy.io.wavfile import write # 改为当前目录下的模型路径 text_to_mel = TextToMel(glow_model_dir='./glow_tts', device='cuda') mel_to_wav = MelToWav(hifi_model_dir='./hifi_gan', device='cuda') def translit(text, lang): reg = re.compile(r'[a-zA-Z]') engine = XlitEngine(lang) words = [engine.translit_word(word, topk=1)[lang][0] if reg.match(word) else word for word in text.split()] updated_sent = ' '.join(words) return updated_sent def run_tts(text, lang): text = text.replace('।', '.') # 仅针对印地语模型 text_num_to_word = normalize_nums(text, lang) # 将数字转换为对应语言的文字 text_num_to_word_and_transliterated = translit(text_num_to_word, lang) # 将英文单词音译为目标语言 mel = text_to_mel.generate_mel(text_num_to_word_and_transliterated) audio, sr = mel_to_wav.generate_wav(mel) write(filename='temp.wav', rate=sr, data=audio) # 保存wav文件 return (sr, audio)
4. 测试运行
调用函数生成语音,例如印地语文本测试:
sr, audio = run_tts("आप कैसे हैं?", "hi")
关键说明
- 确保使用对应语言的预训练模型,不同语言的模型存储地址不同
- Colab中需使用
%cd切换目录,单独!cd无法保持目录状态 - 若仍有路径问题,可通过
!pwd命令查看当前工作目录,确认模型路径是否正确
内容的提问来源于stack exchange,提问作者Taha Habib
相关产品推荐
相关产品推荐

