提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
记录一下PaddleSpeech语音合成
1.用ai studio线上运行
2.win10部署到本地遇到的问题和解决方案。
一、线上运行
**1.用ai studio线上运行
参考链接:参考1
很详细,线上运行一般没什么问题,一步步来就行运行环境要选32g,只是因为部署到本地的话需要用到自己线上运行的模型,所以还是要跑一下。
2.下载模型压缩包和声码器(记住路径),本地部署会用到。
二、本地部署
系统环境:win10
参考文章链接:参考2
2.1配置环境
1.创建conda环境,我创建的环境为paddle
2.虚拟环境内下载paddlepaddle,需要和自己电脑的cuda版本对应飞桨paddlepaddle下载官网
3.虚拟环境内安装paddlespeech
pip install paddlespeech -i https://pypi.tuna.tsinghua.edu.cn/simple
这一步的时候,出现了报错
Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“
报错有一个webrtcvad包安装不了,需要安装Micosoft C++的生成工具。我在网上搜到的一些简单方法,我的电脑并不适用,所以最后只能官网下载一个生成工具,差不多有10g。
参考链接如下:参考3
安装之后,再次运行
pip install paddlespeech -i https://pypi.tuna.tsinghua.edu.cn/simple
paddlespeech安装成功。
百度搜索解决方法的途中还找到一个以后可能会用到的方法,先附上希望遇不上
在下方网站上下载对应的python库的wheel(.whl)文件,然后pip install .whl文件的绝对路径,或者cd到,whl文件的路径,然后pip install .whl文件
清华镜像网站链接在网站地址后面加入依赖包名,比如我要搜索scikit-learn,则对应网址为:https://pypi.tuna.tsinghua.edu.cn/simple/scikit-learn/
2.2运行项目
1.从Aistudio上下载打包好的模型和声码器
我的模型名为demo,保存路径为:D:\PycharmProject\paddlespeech\demo
下载的声码器保存路径(以p…为例):D:\PycharmProject\paddlespeech\pwgan_aishell3_static_1.1.0
我在paddlespeech文件夹内新建了inference_demo文件夹用来存放生成的音频,路径为
D:\PycharmProject\paddlespeech\inference_demo
2.pycharm新建项目文件paddlespeech,配置前边的conda环境
新建python文件,复制下面代码,记得修改代码中的路径。
am_inference_dir(你解压训练好的模型路径), voc_inference_dir(声码器路径), wav_output_dir(想要生成的音频路径)
text_dict语句下面的中文句子也可以修改为自己想要生成的话。
from pathlib import Path
import soundfile as sf
import os
from paddlespeech.t2s.exps.syn_utils import get_am_output
from paddlespeech.t2s.exps.syn_utils import get_frontend
from paddlespeech.t2s.exps.syn_utils import get_predictor
from paddlespeech.t2s.exps.syn_utils import get_voc_output
# 在其他环境中,记得修改下面这两个变量的路径
am_inference_dir = "/Project/github/finetuneTTS-Demo/spka"
voc_inference_dir = "/home/mingroot123/Project/github/finetuneTTS-Demo/pwgan_aishell3_static_1.1.0" # 这里以 pwgan_aishell3 为例子
# 音频生成的路径,修改成你音频想要保存的路径
wav_output_dir = "/home/mingroot123/Project/github/finetuneTTS-Demo/inference_demo"
# 选择设备[gpu / cpu],这里以GPU为例子,
device = "cpu"
# 想要生成的文本和对应文件名
text_dict = {
"1": "今天天气真不错,欢迎和我一起玩。",
"2": "我认为跑步给我的身体带来了健康。",
}
# frontend
frontend = get_frontend(
lang="mix",
phones_dict=os.path.join(am_inference_dir, "phone_id_map.txt"),
tones_dict=None
)
# am_predictor
am_predictor = get_predictor(
model_dir=am_inference_dir,
model_file="fastspeech2_mix" + ".pdmodel",
params_file="fastspeech2_mix" + ".pdiparams",
device=device)
# voc_predictor
voc_predictor = get_predictor(
model_dir=voc_inference_dir,
model_file="pwgan_aishell3" + ".pdmodel", # 这里以 pwgan_aishell3 为例子,其它模型记得修改此处模型名称
params_file="pwgan_aishell3" + ".pdiparams",
device=device)
output_dir = Path(wav_output_dir)
output_dir.mkdir(parents=True, exist_ok=True)
sentences = list(text_dict.items())
merge_sentences = True
fs = 24000
for utt_id, sentence in sentences:
am_output_data = get_am_output(
input=sentence,
am_predictor=am_predictor,
am="fastspeech2_mix",
frontend=frontend,
lang="mix",
merge_sentences=merge_sentences,
speaker_dict=os.path.join(am_inference_dir, "phone_id_map.txt"),
spk_id=0, )
wav = get_voc_output(
voc_predictor=voc_predictor, input=am_output_data)
# 保存文件
sf.write(output_dir / (utt_id + ".wav"), wav, samplerate=fs)
运行代码即可。
**遇到的问题2:**运行代码之后,报错显示找不到我的demo文件中的一个文本,明明我的文件地址是正确的,但是却报错找不到,后来问了导师发现,我新建的pycharm项目跑这段代码的文件在D盘里,但是最开始的时候下载的线上运行的模型文件和声码器文件我为了方便找放在了C盘桌面上,这样的话代码找demo文件夹会在绝对路径下的D盘里找。
解决方法:把模型和声码器文件放在朋友charm同一个文件夹就可以了。(每天都在祈祷老师不会因为我是个蠢材就放弃我/(ㄒoㄒ)/~~)
**问题3:**忘记截图了,错误是这样的
Could not locate zlibwapi.dll. Please make sure it is in your library path!
缺少了一些python依赖。
解决办法:参考4
不知道为什么我在nvidia官网没有找到这个zlibwapi下载包,我是直接下载的这个博主的网盘内容。
3.运行结果
成功运行之后。会在之前的wav_output_dir路径内生成合成的录音文件,分别对应代码里的两句中文。也可以自己改一改文字。
我的路径是这个
D:\PycharmProject\paddlespeech\inference_demo
总结
希望明天一切都好。