发布信息

语音模型:小而强大,本地 GPU 机器轻松训练,效果惊人

作者:软荐小编      2024-08-15 10:37:29     113

文本语音合成软件_语音合成软件_语音文本合成软件哪个好

1 简介

相对于大型语言模型(LLM),语音模型相对来说比较小,可以在本地有GPU的机器上训练。我的机器是很久以前买的1080Ti,10G显存,可以正常训练。声音模拟效果也相当不错,我下载了一段10分钟长的讲故事的音频,训练这个模型只花了5分钟,我觉得模拟的音色和语调都相当不错,虽然不能完全模拟出讲故事的声音,但已经是我用过效果最好的了。

此外,作者的评估显示,使用1分钟的语音与30分钟的效果差不多。目前该项目只发布了TTS工具,变声器工具还在开发中。

2 安装 2.1 环境

建议在docker环境中安装。这样可以让它与其他工具共存,而不会破坏宿主机当前的环境。我下载的是与install.sh中指定的底层软件版本最接近的版本。基础镜像7.2G,全部安装总大小10.5G,下载的模型和源代码也在5G以内。

$ docker pull pytorch/pytorch:2.1.1-cuda12.1-cudnn8-runtime$ nvidia-docker run --network host --rm -v /exports:/workspace/exports -it pytorch/pytorch:2.1.1-cuda12.1-cudnn8-runtime bash

Docker镜像占用7.2G空间

2.2 安装软件

安装软件的时候,如果设置了代理,可能会更快;另外为了避免重复安装,我修改了install.sh里的cuda版本,使之与docker版本一致。

$ git clone https://github.com/RVC-Boss/GPT-SoVITS$ cd GPT-SoVITS$ . install.sh

如果需要中文语音识别,还需要安装以下软件:

$ pip install modelscope torchaudio sentencepiece funasr

2.3 下载模型

训练和使用GPT-SoVITS都需要下载基础模型,如果需要训练模型还需要对要模仿的音频进行分割和识别,至少还要安装语音识别模型ASR。

2.3.1 下载预先训练的 GPT-SoVITS 模型

在 huggingface 下载

$ cd GPT_SoVITS/pretrained_models$ git clone https://huggingface.co/lj1995/GPT-SoVITS$ mv GPT-SoVITS/* .

不包括.git,模型大约1.1G

2.3.2 下载asr模型

在魔塔平台下载

$ cd tools/damo_asr/models$ git clone https://www.modelscope.cn/iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch.git$ git clone https://www.modelscope.cn/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch.git$ git clone https://www.modelscope.cn/iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch.git

不包括.git文件夹,大约有1.4G。

2.4 运行程序

如果需要更改端口,请在config.py中设置

$ python webui.py

此时可以在默认端口9874上看到gradio界面。

2.4.1 准备训练音频

分割音频

语音识别

编辑语音识别结果

2.4.2 训练模型

切换到第二个选项卡GPT-SOVITS-TTS,输入要创建的模型的名称。

界面分为A数据格式化、B模型训练、C语音合成三部分。

1A-数据集格式化

设置之前处理过的列表位置和音频数据目录,然后按照ABC步骤进行,或者单击下面的按钮一次执行所有步骤。

1B-微调训练

点击两个按钮即可训练模型,SoVITS训练大约需要5GB显存和5分钟,GPT训练大约需要5GB显存和3分钟。

训练过程中可能会出现共享内存错误。解决方案请参阅问题与解决方案部分。

1C-推理

点击刷新按钮后,下拉列表中会出现刚刚训练好的模型,选择模型后,打开推理WEB界面,并在9872端口开启接口。

在Inference界面需要设置一个音频文件和其对应的文本,可以使用之前切分好的wav文件,输入其对应的文本,我觉得这个是为了让GPT根据前面的文本生成后面的文本。

然后输入需要合成的文本,点击合成按钮。

如果您收到与 pyopenjtalk 相关的错误,请参阅问题和解决方案部分。

2.5 问题与解决方案

从下载到修改到训练、综合大概花了半天时间,安装过程中遇到了一些错误,工具链还有改进的空间。

2.5.1 问题1:pyopenjtalk版本问题

理论上来说,运行install.sh脚本就可以直接安装需要的软件,可能是因为requirements.txt文件中没有指定软件版本号,导致我在安装pyopenjtalk时遇到了错误,似乎是编译工具的问题导致的,解决办法如下:

$ apt-get update$ apt-get install build-essential

这是一个日语合成库,我们一般用不到,如果实在不想用,可以加个try或者注释掉text/japanese.py里包含pyopenjtalk的部分。

2.5.2 问题2:markupsafe 版本问题

importError: cannot import name 'soft_unicode' from 'markupsafe'

降级两个软件版本后,即可正常运行。

$ pip install werkzeug==2.0.1$ pip install markupsafe==1.1.1

2.5.3 问题三:Modelscope无法识别funasr

当我使用语音识别asr功能时,出现错误信息“funasr-pipeline is not in the pipelines...” 解决办法是从源代码安装modelscope(使用pip安装相同版本会给出错误信息说找不到funasr),同时还需要匹配modelscope和funasr的版本 请在modelscopt中搜索funasr来确定它的版本。

$ git clone -b funasr1.0 --single-branch https://github.com/alibaba-damo-academy/FunASR.git$ cd FunASR$ pip install -e ./$ git clone https://github.com/modelscope/modelscope.git$ pip install -e ./

修改完之后又出现了“TypeError: AutoModel.generate() missing 1 required positional arc: 'input'”的错误,我想可能是版本问题,于是修改了源码:

vi tools/damo_asr/cmd-asr.py修改:26         text = inference_pipeline(input="%s/%s"%(dir,name))[0]["text"]27         #text = inference_pipeline(audio_in="%s/%s"%(dir,name))["text"] # xieyan test

2.5.4 问题四:共享内存错误

错误信息如下:

RuntimeError: DataLoader worker (pid 14958) 被信号杀死:总线错误。可能是因为 dataloader 的 worker 共享内存不足。请尝试提高共享内存限制。

解决办法是修改GPT_SoVITS/s2_train.py

在第 112 行左右,将 DataLoader 的 num_workers 从 6 更改为 1

110     train_loader = DataLoader(111         train_dataset,112         #num_workers=6,113         num_workers=1,

3 代码分析

代码主要用Python编写文本语音合成软件,约13000行,包括:

4 原则

GPT_SoVITS 是一个由三部分组成的模型:这里的 GPT 不是指常见的大语言模型 GPT,而是它的字面意思——Generative Pre-training Transformer,通常是指从上一个上下文生成下一个上下文的生成模型,这也可以从上面的操作中看出,在推理过程中,以“音频”作为引子,合成新的音频。

SoVITS是2023年非常流行的歌声转换器文本语音合成软件,主要建立在SoftVC和VITS两个音频模型之上,其名字也是两者的结合,后面的文章会介绍这两个模型相关的论文。

5. 收益

本项目实现了定制化的语音合成,并在训练过程中具体应用了语音识别、人声与背景音分离、微调模型、声音转换等技术,可以说是一个优秀的语音模型入门。

6 参考文献

作者视频:

语音文本合成软件哪个好_语音合成软件_文本语音合成软件

相关内容 查看全部