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

news2024/10/24 13:46:09

简要介绍

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! 🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2222431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu20.04安装opencv3.1.0(包含详细解决报错方法)

我的环境是cuda10.1 cmake是3.16.5 第一步骤:下载安装包 第二步骤:编译环境安装 第三步骤:解压opencv安装包,并且在opencv文件夹内新建build文件夹 第四步骤:打开cmake-gui, 第五步骤:进行…

驱动-----内核启动

目录 一、最小系统 二.操作系统 三.操作系统的启动 四.linux启动准备工作 五.安装nfs和tftp环境 六.总结 设备驱动:驱使设备行动的程序。 裸机程序:没有和操作系统结合的驱动程序pwm.c,uart.c,adc.c 有操作系统的时候,应用层不能直接操作硬件,由底层写驱动的人写…

凹凸性和拐点的概念

二阶导不存在也可能是拐点 判断拐点的充分条件

第三十一篇:TCP协议如何解决丢包的问题,TCP系列六

前面我们说TCP协议是可靠的、基于字节流、面向连接的传输层通信协议; 这里我想换种说法:与其说是TCP协议是可靠的,不如说传输层程序软件实现了TCP协议的规范(网络层次模型,每一层都有对应的程序软件)&…

【从零开始的LeetCode-算法】3185. 构成整天的下标对数目 II

给你一个整数数组 hours&#xff0c;表示以 小时 为单位的时间&#xff0c;返回一个整数&#xff0c;表示满足 i < j 且 hours[i] hours[j] 构成 整天 的下标对 i, j 的数目。 整天 定义为时间持续时间是 24 小时的 整数倍 。 例如&#xff0c;1 天是 24 小时&#xff0c…

ApacheShiro反序列化 550 721漏洞

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理个漏洞被称为 Shiro550 是因为在Apache Shiro的GitHub问题跟踪器中&#xff0c;该漏洞最初被标记为第550个问题,721漏洞名称也是由此而来 Shiro-550 CVE-2016-4437 Shiro反序列化Docker复现 …

重学SpringBoot3-Spring WebFlux之HttpHandler和HttpServer

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-Spring WebFlux之HttpHandler和HttpServer 1. 什么是响应式编程&#xff1f;2. Project Reactor 概述3. HttpHandler概述3.1 HttpHandler是什么3.2 Http…

Flink 1.18安装 及配置 postgres12 同步到mysql5.7(Flink sql 方式)

文章目录 1、参考2、flink 常见部署模式组合3、Standalone 安装3.1 单节点安装3.2 问题13.3 修改ui 端口3.4 使用ip访问 4 flink sql postgres --->mysql4.1 配置postgres 124.2 新建用户并赋权4.3. 发布表4.4 Flink sql4.5 Could not find any factory for identifier post…

落实“双碳”行动,深兰科技推动分子能源技术在AI硬件产品领域的应用及产业化进程

10月21日&#xff0c;上海气候周分子能研究中心(筹)成立仪式在上海环境能源交易所举行。仪式上&#xff0c;深兰科技践行“双碳”目标&#xff0c;与上海东八能源技术有限公司签署分子能源AI应用产业化合作协议。 根据协议&#xff0c;国际分子能量发电开拓者、上海气候周分子能…

Notepad++将搜索内容所在行选中,并进行复制等操作

背景 Notepad在非常多的数据行内容中&#xff0c;按照指定内容检索&#xff0c;并定位到具体行&#xff0c;而后对内容行的数据进行复制、剪切、删除等处理动作。 操作说明 检索并标记所在行 弹出搜索框&#xff1a;按下 Ctrl F。 输入查找字符串&#xff1a;在搜索框中输入要…

YOLOv11入门到入土使用教程(含结构图)

一、简介 YOLOv11是Ultralytics公司在之前的YOLO版本上推出的最新一代实时目标检测器&#xff0c;支持目标检测、追踪、实力分割、图像分类和姿态估计等任务。官方代码&#xff1a;ultralytics/ultralytics&#xff1a;ultralytics YOLO11 &#x1f680; (github.com)https://g…

【小洛的VLOG】Web 服务器高并发压力测试(Reactor模型测试)

目录 引言 工具介绍 环境介绍 测试结果 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 大部分的网络通信都是支持TCP/IP协议栈&#xff0c;为了保证通信的可靠性&#xff0c;客户端和服务端之间需要建立链接。服务端能并发处理多少个链接&#xff0c;平均每秒钟能处理…

QML----Webengineview点击网页上的下载没反应,下载文件

问题 使用webe加载网页时&#xff0c;点击下载页面会没有反应。原因就是它默认是关闭下载功能 解决 需要在profile里监听下载事件打开onDownloadRequested,当有下载时会触发这个信号,会获取到一个WebEngineDownloadItem这是下载的东西,查询它的一些相关参数,可以修改路径和开…

项目一:3-8译码器的设计与实现(FPGA)

本文以Altera公司生产的Cyclone IV系列的EP4CE15F17C8为主芯片的CRD500开发板作为项目的硬件实现平台&#xff0c;并以Quarter 18.1和ModelSim为开发工具和仿真工具。 目录 一、3-8译码器工作原理 二、设计步骤 1、创建工程文件夹和编辑设计文件 &#xff08;1&#xff09;…

(三)将PaddleOCR编译成dll通过Java调用实现ocr识别

说明&#xff1a; 本文编译的PaddleOCR版本&#xff1a;v2.8.1&#xff0c;关于windows下如何生成c项目及如何编译PaddleOCR请参照我的上一篇文章《&#xff08;二&#xff09;Windows通过vs c编译PaddleOCR-2.8.1-CSDN博客》&#xff0c;本文是上一个篇文章的延伸。 背景&…

douyin uid转sec_uid 各种进行转换

第一步输入uid&#xff1a; 进行转换&#xff1a; 同时支持接口转换&#xff0c;批量转换&#xff0c;是一个很实用的工具 uid转sec_uid

微信小程序上传图片添加水印

微信小程序使用wx.chooseMedia拍摄或从手机相册中选择图片并添加水印&#xff0c; 代码如下&#xff1a; // WXML代码&#xff1a;<canvas canvas-id"watermarkCanvas" style"width: {{canvasWidth}}px; height: {{canvasHeight}}px;"></canvas&…

如何使用 Spring Cloud 实现客户端负载平衡

微服务系统通常运行每个服务的多个实例。这是实施弹性所必需的。因此&#xff0c;在这些实例之间分配负载非常重要。执行此操作的组件是负载均衡器。Spring 提供了一个 Spring Cloud Load Balancer 库。在本文中&#xff0c;您将学习如何使用它在 Spring Boot 项目中实现客户端…

QPainterPath路径类

函数drawPath()绘制的是一个复合的图形&#xff0c;它使用一个QPainterPath类型的参数作为绘图的对象,QPainterPath类用于记录绘图的操作顺序&#xff0c;优点是绘制复杂图形时只需要创建一个painterpath,然后重复调用就可以了 在使用QPainterPath把路径画好之后&#xff0c;我…

脚本-把B站缓存m4s文件转换成mp4格式

js脚本&#xff0c;自动处理视频 1. 需求简介1.1 pc安装b站客户端1.2 设置视频缓存目录1.3 找个视频缓存1.4 打开缓存文件夹![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0eb346a84d5f42a7908f1d39bf410c3b.png)1.5 用notepad编辑后缀m4s文件&#xff0c;删除文件内…