大模型日常:支持中英混合及多语言文生语音的MeloTTS本地部署

简要介绍

MeloTTS 是一个强大的多语言文本转语音库,特别设计以支持CPU环境下的实时语音合成,无需依赖GPU。该库能够输出自然流畅的语音,提供了一种高效便捷的方式,将文本信息转换为听觉内容。MeloTTS不仅支持多种语言,包括英语、西班牙语、法语、中文、日语和韩语,还能处理混合语言文本,如含有英语单词的中文文本。此外,用户还可以根据需求调整语速,选择不同的发音口音,如美式英语、英式英语、印度英语和澳大利亚英语

🎖︎主要功能

  1. 国际化语言覆盖:MeloTTS具备广泛的多语言能力,能够将文本转换为语音,涵盖英语(细分为美式、英式、印度及澳大利亚口音)、西班牙语、法语、中文、日语和韩语等多个语种,满足全球多语境应用需求。
  2. 中英混读优化:针对中文环境,特别强化了中英文混合文本的发音处理能力,有效应对跨语言交流场景中的英文词汇嵌入问题,提升了实用性与准确性。
  3. 即时CPU驱动合成:系统经过精心优化,确保即便在缺乏GPU加速的硬件配置下,依旧能够在CPU平台上实现无缝实时的语音合成,增强了其在多样化硬件平台上的部署灵活性与普适性。
  4. 卓越语音品质:致力于生产清晰流畅、接近真人的语音输出,MeloTTS在所有支持语言中均追求最高标准的自然度与清晰度,确保每一次合成都能达到高品质水平。
  5. 便捷安装与集成:伴随详尽的安装指南与直观的Python接口,MeloTTS简化了部署流程,用户可快速在Linux系统中完成设置,并通过简洁的编程指令实现文本至语音的快速转换,大大降低了技术门槛。

对于中文支持不足之处在于目前只有一种女生音色,没有其他音色可选

MeloTTS的本地部署支持Docker及代码私有化部署。

本地的运行可以通过Web UI,CLI,Python API三种方式进行运行,本文着重介绍如何通过非Docker模式的Python API使用MeloTTS进行文本转为语音。

前期准备

第一步:拉取MeloTTS仓库

相应操作

值得注意的是使用非Dokcer模式,系统支持需要至少Ubuntu 20.04和Python 3.9

打开终端执行下面的命令

git clone https://github.com/myshell-ai/MeloTTS.git
cd MeloTTS
pip install -e .
python -m unidic download

异常情况

最后的命令python -m unidic download是需要魔法上网的,如果出现异常报错且没条件魔法上网可以参考下面解决方案

首先查看python安装的库依赖,如果项目采用虚拟环境就进入到项目文件夹下的.venv\Lib\site-packages文件夹内查看

不采用虚拟环境的python安装的库通常位于python安装目录下的Lib\site-packages

查看文件目录中是否有unidecunidec_lite两个文件夹

如果没有则执行pip install unidec

对这两个文件夹内容进行对比能发现unidec_lite中比uidec多了一个dicdir文件夹,复制过来就好了

此举相当于跳过了python -m unidic download命令完成所需的操作

第二步:下载所需模型

再拉取完项目后,因为我们需要本地化运行相关服务,要将放在Hugging Face上的模型下载到本地。如果可以魔法上网,可以直接跳过这个步骤利用项目本身运行时进行下载。没有魔法上网或想提前下好的可以参考下列步骤。

相应操作

下载内容

首先进入Hugging Face官网

**有魔法上网:**https://huggingface.co/

**没有魔法上网:**https://hf-mirror.com/(这个是Hugging Face的国内镜像)

在搜索框中搜索指定模型进行下载

在这里插入图片描述

在这里插入图片描述

我们一共需要下载下列模型

  • hfl/chinese-roberta-wwm-ext-large
  • google-bert/bert-base-multilingual-uncased
  • google-bert/bert-base-uncased
  • tohoku-nlp/bert-base-japanese-v3
  • myshell-ai/MeloTTS-Japanese
  • myshell-ai/MeloTTS-Chinese
下载方式

下载方式有多种,可以通过命令行工具下载也可通过网站下载

浏览器下载

hfl/chinese-roberta-wwm-ext-large为例,搜索到对应模型进入页面后,点击Files and versions

在这里插入图片描述

可以看到所有的模型相关文件列表,将除.gitattributesREADME.md这两个文件外的所有文件都下载到本地

命令行工具下载

如果想使用命令行工具进行下载我们需要安装一些东西

huggingface-cli是 Hugging Face 官方提供的命令行工具,自带完善的下载功能,下述操作需要魔法上网

1. 安装依赖

pip install -U huggingface_hubCopy

2. 设置环境变量
Linux

export HF_ENDPOINT=https://hf-mirror.comCopy

Windows Powershell

$env:HF_ENDPOINT = "https://hf-mirror.com"Copy

建议将上面这一行写入 ~/.bashrc

3.1 下载模型

huggingface-cli download --resume-download hfl/chinese-roberta-wwm-ext-large --local-dir 本地文件夹

3.2 下载数据集(仅作示例介绍,本项目无需使用)

huggingface-cli download --repo-type dataset --resume-download wikitext --local-dir 本地文件夹

下载命令可以添加 --local-dir-use-symlinks False 参数禁用文件软链接,这样下载路径下所见即所得(建议添加)

如果没有魔法上网也别着急

hfd是国内镜像网站开发的 huggingface 专用下载工具,基于成熟工具 git+aria2,可以做到稳定下载不断线。

相关介绍:https://gist.github.com/padeoe/697678ab8e528b85a2a7bddafea1fa4f

1. 下载hfd

wget https://hf-mirror.com/hfd/hfd.sh
chmod a+x hfd.shCopy

2. 设置环境变量
Linux

export HF_ENDPOINT=https://hf-mirror.comCopy

Windows Powershell

$env:HF_ENDPOINT = "https://hf-mirror.com"Copy

3.1 下载模型

./hfd.sh gpt2 --tool aria2c -x 4Copy

3.2 下载数据集

./hfd.sh wikitext --dataset --tool aria2c -x 4

异常情况

如果出现下面的报错就是没有魔法上网或连接异常,没有办法连接到Hugging Face官网,建议访问国内镜像

https://i-blog.csdnimg.cn/blog_migrate/ca1902cc8a11fd6350ada8ee3264dffc.png

第三步 修改MeloTTS源码

这一步操作主要是将原本通过网络仓库ID指向的模型资源转为指向本地下载的模型,彻底完成本地离线部署

  • /MeloTTS/melo/api.py

在这里插入图片描述

找到上面这段代码,将use_hf=True改为use_hf=False。这里意思是取消使用Hugging Face上存放的模型

  • /MeloTTS/melo/download_utils.py

在这里插入图片描述

找到上面这段代码,找到两个字典中的’ZH’属性,把对应的值改为上一步中下载的MeloTTS-Chinese模型中两个文件对应的文件路径,现在我们只用到了中文,中英混合。后续如果使用其他语言可以自行更改其他属性。

  • /MeloTTS/melo/text/init.py

在这里插入图片描述

找到上面这段代码,按如图所示进行代码注释。现在我们只用到了中文,中英混合,没有下载其他语言对应的模型文件,所以不需要引用其他语言文件的代码,避免报错。后续如果用使用其他语言,将对应的代码注释解除就好。

  • /MeloTTS/melo/text/chinesse_bert.py

在这里插入图片描述

找到上面这段代码,将mode_id的值改为之前下载的hfl/chinese-roberta-wwm-ext-large模型路径

  • /MeloTTS/melo/text/chinese_mix.py

在这里插入图片描述

在这里插入图片描述

找到上面这两段代码,将mode_id改为之前下载的google-bert/bert-base-multilingual-uncased模型路径

  • /MeloTTS/melo/text/cleaner.py

在这里插入图片描述

在这个文件最开始的代码部分,将上述两个位置的代码修改为如图所示。现在我们只用到了中文,中英混合,所以不需要引用其他语言文件的代码,避免报错。后续如果需要其他语言按原有格式加回就好。

  • /MeloTTS/melo/text/english.py

在这里插入图片描述

找到上面这段代码,将mode_id的值改为之前下载的google-bert/bert-base-uncased模型路径

  • /MeloTTS/melo/text/english_bert.py

在这里插入图片描述

找到上面这段代码,将mode_id的值改为之前下载的google-bert/bert-base-uncased模型路径

  • /MeloTTS/melo/text/japanese.py

在这里插入图片描述

找到上面这段代码,将mode_id的值改为之前下载的tohuku-nlp/bert-base-japanese-v3模型路径

开始运行

写一个简单的test.py

from melo.api import TTS

# 语速
speed = 1.0
# 如果确定电脑有GPU支持cuda可直接写0
# 确定电脑没有GPU支持cuda直接写cpu
# 不确定有没有写auto,交给程序自行判断
device = 'cpu' # or cuda:0

text = "10月22日,我国首个国产移动操作系统——华为原生鸿蒙操作系统正式发布,这也是继苹果iOS和安卓系统后,全球第三大移动操作系统。据介绍,此前已经发布过的鸿蒙系统,由于系统底座仍使用了部分AOSP开放源代码,而不得不兼容部分安卓应用软件。而此次发布的原生鸿蒙,实现了系统底座的全部自研,系统的流畅度、性能、安全特性等提升显著,也实现了国产操作系统的自主可控。"
model = TTS(language='ZH', device=device)
speaker_ids = model.hps.data.spk2id

output_path = 'test.mp3'
model.tts_to_file(text, speaker_ids['ZH'], output_path, speed=speed)

运行异常解决

找不到melo下的某个模块

在这里插入图片描述

将所有原本from melo的地方都改为上图这种格式

连接不上huggingface.co

修改MeloTTS源码部分有步骤遗漏,建议详细检查。如已使用魔法上网请检查魔法上网可行性。

Resource averaged_perceprtron_tagger not found

在这里插入图片描述

这部分报错通常由NLTK引起,是nltk加载词性词库报错。一旦缺少可能会缺少若干。我们可以到报错提示中的网页根据指引下载对应的库文件。还有请注意,这个报错会告诉你 searched in 下列目录,意思就是我们需要将下载后的库文件放到任选其一的文件夹目录下,每个人的目录不一定一样哦。

下载文件地址:https://www.nltk.org/nltk_data/(需要魔法上网)

下载文件时不用管名字,只需要文件名下方的ID和需要的匹配上即可

在这里插入图片描述

还需要注意的是根据报错信息提示,不仅要在指定目录下存放,而且一定要建立多级

在这里插入图片描述

因此在选好目录后需要建nltk_data/taggers/两级文件夹,二级文件夹名称根据报错提示来确定。

TypeError: unsupported operand type(s) for +: ‘ZipFilePathPointer’ and ‘str’

报错翻译是一个对象格式数据和一个字符串无法进行拼接,这个问题通常出现在NLTK库和Linux的关系上。当使用Linux直接运行本项目的时候会产生这样的错误。我们需要将NLTK上下载的zip压缩包进行解压后再放到对应的文件夹里。请注意,要保证解压后的文件夹和压缩包同名,且压缩包和解压后的文件需要同时存在于目录中,否则将同样报错Resource xxx not found

欢迎关注公众号:“全栈开发指南针”
这里是技术潮流的风向标,也是你代码旅程的导航仪!🚀
Let’s code and have fun! 🎉

★★★★★★ 软件介绍 ★★★★★★一,软件名:TTS-Reader版本号:1.5二,功能介绍 ⒈功能清单 ①英文全文朗读  英语朗读新增语气符号:陈述句语气符号为".",感叹句语气符号"!",疑问句语气符号为"?"。添加新的语气过滤后,更加接近真人发音!不信?您听听!^&^ ②中文全文朗读 ③中英混合朗读 ④直接导入外部文本文件★⑤文本文件 → WAV音频文件(有转换进度条及时间提示) ⑥可进行暂停朗读、继续朗读、停止朗读等操作 ⑦朗读时亦可调整音量和语速 ⑧特有鼠标选定朗读、录入朗读功能 ⑨新增朗读角色选项,分别有3个角色朗读英文(2男1女),目前只有一个男中文朗读者★↘↓↙★★★↘↙★★★↘↓↙★欢迎您选用本版软件,该版本绝对不用其它任何体积庞大的语音支持,真正无须金山词霸语音驱动支持,功能强大,体积娇小!采用XP界面方案,赏心悦目!希望她能给您的生活、生习和工作带来便利!同时,若您对本软件有任何意见、建议或是发现Bug(水平有限,Bug难免),请EMail我,没有您的支持就没有我的进步,谢谢使用!☆☆本软件采取自愿交费注册,注册后可在软件上提供个性服务(如:嵌入个性照片、个性文字、程序源代码等等)。 ★ 风之竹 20030718 QQ122512447 信息安全工作室 isxuzhu@sohu.com fengzhizhu@hotmail.com http://isxuzhu.myrice.com
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值