MeloTTS安装实践
一、MeloTTS项目介绍
git地址:https://github.com/myshell-ai/MeloTTS
MeloTTS 是麻省理工学院和 MyShell.ai 开发的高质量多语言文本转语音库。支持的语言包括:英语、西班牙语、法语、中文(混合英语)、日语、朝鲜语
显著优势:
- 中文使用者支持中英文混合
- 足够快,可以进行 CPU 实时推理 。
二、安装步骤
1、 踩坑
为了与本机环境更加解耦合,我首先尝试的是使用docker来部署(踩坑)
docker直接部署有几个问题:
- 每次打镜像很慢, 大概需要半个小时左右(而且官方提供的代码直接打镜像是有问题的)
- requements当中的依赖有缺失的情况, 或者版本不对的情况,需要修改版本不断尝试, 而且大部分情况下, 打镜像是成功的,只有到了启动服务的时候,才会发现启动有问题,或者启动没问题,点击生成语音的时候报错,使得整个发现问题和排查问题的链特别长,非常浪费时间
- 除了下载python依赖, 还需要下载模型参数快照,且下载模型快照至少3个,非常耗时
2、在本机新建python虚拟环境安装
硬件环境:
我本机为mac系统,M系列芯片
python版本
使用anaconda管理python版本, 安装python版本为 3.9
具体安装步骤
1、 下载代码
git clone https://github.com/myshell-ai/MeloTTS.git
2、 修改依赖文件
cd MeloTTS
vim requirements.txt
增加或者修改依赖文件:
botocore==1.34.88
cached_path==1.6.2
pydantic==2.10.6
gradio==4.44.1
g2pkk>=0.1.2
解释:
- pydantic==2.10.6 : 如果不修改为这个版本, 则在调用推理的时候会报错:TypeError: argument of type ‘bool’ is not iterable
- botocore1.34.88、gradio4.44.1 和其他的包安装都是比较耗费时间的,因为安装过程 会不断的尝试不同的版本, 最终安装成功的是我以上指定的版本, 避免耗费不必要的尝试时间
3、 下载依赖
确定好了所有依赖的版本, 就可以下载依赖了, 这里同样可以进行加速,指定国内清华源
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
下载数据依赖, 暂时没有加速方法, 这里如果你本机有代理的话,可以开启代理进行加速
HTTPS_PROXY=http://127.0.0.1:7890 python -m unidic download
#或者直接运行
python -m unidic download
4、修改代码
Dockerfile
在dockerfile中 安装python依赖时指定 清华源, 增加安装速度
RUN pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
melo/api
如果为mac笔记本, 则将31行注释掉,本项目不支持mps加速,如果这里的device指定为mps,则会报错:
Error: Output channels > 65536 not supported at the MPS device. As a temporary fix, you can set the environment variable `PYTORCH_ENABLE_MPS_FALLBACK=1` to use the CPU as a fallback for this op. WARNING: this will be slower than running natively on MPS.
melo/app
- 注释或者删除不需要的语言, 减少模型下载时间及模型加载时间
- 指定模型下载地址为国内镜像地址:os.environ[“HF_ENDPOINT”] = “https://hf-mirror.com”
melo/text/chinese_bert.py
这里同样,如果部署在mac机器上,则不能指定device为mps
5、项目启动
python melo/app.py
首次启动速度较慢, 因为至少要下载一下几个模型:
hfl/chinese-roberta-wwm-ext-large
tohoku-nlp/bert-base-japanese-v3
frpc-gradio-0.2/frpc_darwin_arm64
启动后,会开启本机7860 端口
6、 界面
三、其他tts项目
目前业界效果比较好的tts项目还包括
1、GPT-SoVITS
2、 ChatTTS.
3、CosyVoice
当然在硬件资源有限的情况下,还是可以考虑MeloTTS