安装环境

操作系统:windows 11

运行环境:Python 3.9.13
文档引用:https://gitcode.com/PaddlePaddle/PaddleSpeech/overview

源码方式安装

1
2
3
4
5
6
git clone https://github.com/PaddlePaddle/PaddleSpeech.git
cd PaddleSpeech
pip install pytest-runner
pytest-runner
pip install .

1710245732068

安装成功

语音合成

首次运行需要下载资源,要等待1分钟左右(看自己的网速)

1
paddlespeech tts --input "你好,欢迎使用百度飞桨深度学习框架!" --output output.wav

语音文件

启动服务

启动服务
1
paddlespeech_server start --config_file ./demos/speech_server/conf/application.yaml
访问语音合成服务
1
paddlespeech_client tts --server_ip 127.0.0.1 --port 8090 --input "您好,欢迎使用百度飞桨语音合成服务。" --output output.wav

访问音频分类服务
paddlespeech_client cls --server_ip 127.0.0.1 --port 8090 --input input.wav

快速使用流式服务
开发者可以尝试 流式 ASR 和 流式 TTS 服务.

启动流式 ASR 服务

paddlespeech_server start –config_file ./demos/streaming_asr_server/conf/application.yaml
访问流式 ASR 服务

paddlespeech_client asr_online –server_ip 127.0.0.1 –port 8090 –input input_16k.wav
启动流式 TTS 服务

paddlespeech_server start –config_file ./demos/streaming_tts_server/conf/tts_online_application.yaml
访问流式 TTS 服务

paddlespeech_client tts_online –server_ip 127.0.0.1 –port 8092 –protocol http –input “您好,欢迎使用百度飞桨语音合成服务。” –output output.wav

web安装

后端环境安装

需要先安装 PaddleSpeech

1
2
3
4
5
# 需要先安装 PaddleSpeech
# PaddleSpeech\demos\speech_web\speech_server
cd speech_server
pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
cd ..

前端环境安装

前端依赖

node.js ,需要提前安装,确保 npm 可用,npm 测试版本 8.3.1,建议下载官网稳定版的 node.js

如果因为网络问题,无法下载依赖库,可以参考 FAQ 部分,npm / yarn 下载速度慢问题

1
2
3
4
5
6
7
8
cd PaddleSpeech\demos\speech_web\web_client
# 进入前端目录
cd web_client
# 安装 `yarn`,已经安装可跳过
npm install -g yarn
# 使用yarn安装前端依赖
yarn install
cd ..

启动服务

【注意】目前只支持 main.pyvc.py 两者中选择开启一个后端服务。

启动 main.py 后端服务

下载相关模型

只需手动下载语音指令所需模型即可,其他模型会自动下载。

1
2
3
4
5
6
cd speech_server
mkdir -p source/model
cd source/model
# 下载IE模型
wget https://bj.bcebos.com/paddlenlp/applications/speech-cmd-analysis/finetune/model_state.pdparams
cd ../../../

当前目录:PaddleSpeech\demos\speech_web

启动后端服务

1
2
3
cd speech_server
# 默认8010端口
python main.py --port 8010

D:\WorkProject\tts\PaddleSpeech\demos\speech_web\speech_server

启动前端服务

1
2
cd D:\WorkProject\tts\PaddleSpeech\demos\speech_web\web_client
npm run dev

1710250413839

启动 vc.py 后端服务

下载相关模型和音频

下载相关模型和音频

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
cd speech_server

# 已创建则跳过
mkdir -p source/model
cd source
# 下载 & 解压 wav (包含VC测试音频)
wget https://paddlespeech.bj.bcebos.com/demos/speech_web/wav_vc.zip
unzip wav_vc.zip

cd model
# 下载 GE2E 相关模型
wget https://bj.bcebos.com/paddlespeech/Parakeet/released_models/ge2e/ge2e_ckpt_0.3.zip
unzip ge2e_ckpt_0.3.zip
wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/pwgan/pwg_aishell3_ckpt_0.5.zip
unzip pwg_aishell3_ckpt_0.5.zip
wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/fastspeech2/fastspeech2_nosil_aishell3_vc1_ckpt_0.5.zip
unzip fastspeech2_nosil_aishell3_vc1_ckpt_0.5.zip

# 下载 ECAPA-TDNN 相关模型
wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/fastspeech2/fastspeech2_aishell3_ckpt_vc2_1.2.0.zip
unzip fastspeech2_aishell3_ckpt_vc2_1.2.0.zip

# 下载 ERNIE-SAT 相关模型
# aishell3 ERNIE-SAT
wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/ernie_sat/erniesat_aishell3_ckpt_1.2.0.zip
unzip erniesat_aishell3_ckpt_1.2.0.zip

# vctk ERNIE-SAT
wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/ernie_sat/erniesat_vctk_ckpt_1.2.0.zip
unzip erniesat_vctk_ckpt_1.2.0.zip

# aishell3_vctk ERNIE-SAT
wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/ernie_sat/erniesat_aishell3_vctk_ckpt_1.2.0.zip
unzip erniesat_aishell3_vctk_ckpt_1.2.0.zip

# 下载 finetune 相关模型
wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/fastspeech2/fastspeech2_aishell3_ckpt_1.1.0.zip
unzip fastspeech2_aishell3_ckpt_1.1.0.zip

# 下载声码器
wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/hifigan/hifigan_aishell3_ckpt_0.2.0.zip
unzip hifigan_aishell3_ckpt_0.2.0.zip
wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/hifigan/hifigan_vctk_ckpt_0.2.0.zip
unzip hifigan_vctk_ckpt_0.2.0.zip

cd ../../../

ERNIE-SAT 环境配置

ERNIE-SAT 体验依赖于 examples/aishell3_vctk/ernie_sat 的环境。参考 examples/aishell3_vctk/ernie_sat 下的 README.md, 确保 examples/aishell3_vctk/ernie_satrun.sh 相关示例代码有效。

运行好 examples/aishell3_vctk/ernie_sat 后,回到当前目录,创建环境:

1
2
3
4
cd speech_server
ln -snf ../../../examples/aishell3_vctk/ernie_sat/download .
ln -snf ../../../examples/aishell3_vctk/ernie_sat/tools .
cd ../

finetune 环境配置

finetune 需要解压 tools/aligner 中的 aishell3_model.zip,finetune 过程需要使用到 tools/aligner/aishell3_model/meta.yaml 文件。

1
2
3
cd speech_server/tools/aligner
unzip aishell3_model.zip
cd -

启动后端服务

1
2
3
cd speech_server
# 默认8010端口
python vc.py --port 8010

启动前端服务

1
2
cd web_client
yarn dev --port 8011

默认配置下,前端配置的后台地址信息是 localhost,确保后端服务器和打开页面的游览器在同一台机器上,不在一台机器的配置方式见下方的 FAQ:【后端如果部署在其它机器或者别的端口如何修改】

关于前端的一些说明

为了方便后期的维护,这里并没有给出打包好的 HTML 文件,而是 Vue3 的项目,使用 yarn dev --port 8011 的方式启动测试,方便大家debug,相当于是启动了一个前端服务器。

比如我们在本机启动的这个前端服务(运行 yarn dev --port 8011 ),我们就可以通过在游览器中通过 http://localhost:8011 访问前端页面

如果我们在其它服务器上(例如:*.*.*.* )启动这个前端服务(运行 yarn dev --port 8011 ),我们就可以通过在游览器中访问 http://*.*.*.*:8011 访问前端页面

那前端跟后端是什么关系呢? 两个是独立的,只要前端能够通过代理访问到后端的接口,那就没有问题。你可以在 A 机器上部署后端服务,然后在 B 机器上部署前端服务。我们在 ./web_client/vite.config.js 中将 /api 映射到的是 http://localhost:8010,你可以把它配置成任意你想要访问后端地址。

当前端在以 *.*.*.* 这类以 IP 地址形式的网页中访问时,由于游览器的安全限制,会禁止录音,需要重新配置游览器的安全策略, 可以看下面 FAQ 部分: [【前端以IP地址的形式访问,无法录音】]

FAQ

Q: 如何安装node.js

A: node.js的安装可以参考【菜鸟教程】, 确保 npm 可用

Q:后端如果部署在其它机器或者别的端口如何修改

A:后端的配置地址有分散在两个文件中

修改第一个文件 ./web_client/vite.config.js

1
2
3
4
5
6
7
8
9
10
server: {
host: "0.0.0.0",
proxy: {
"/api": {
target: "http://localhost:8010", // 这里改成后端所在接口
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ""),
},
},
}

修改第二个文件 ./web_client/src/api/API.js( Websocket 代理配置失败,所以需要在这个文件中修改)

1
2
3
4
// websocket (这里改成后端所在的接口)
CHAT_SOCKET_RECORD: 'ws://localhost:8010/ws/asr/offlineStream', // ChatBot websocket 接口
ASR_SOCKET_RECORD: 'ws://localhost:8010/ws/asr/onlineStream', // Stream ASR 接口
TTS_SOCKET_RECORD: 'ws://localhost:8010/ws/tts/online', // Stream TTS 接口

Q:前端以IP地址的形式访问,无法录音

A:这里主要是游览器安全策略的限制,需要配置游览器后重启。游览器修改配置可参考使用js-audio-recorder报浏览器不支持getUserMedia

chrome设置地址: chrome://flags/#unsafely-treat-insecure-origin-as-secure

Q: npm / yarn 配置淘宝镜像源

A: 配置淘宝镜像源,详细可以参考 【yarn npm 设置淘宝镜像】

1
2
3
4
5
# npm 配置淘宝镜像源
npm config set registry https://registry.npmmirror.com

# yarn 配置淘宝镜像源
yarn config set registry http://registry.npm.taobao.org/

参数说明

–am 参数列表

1
2
3
4
5
6
7
8
9
10
speedyspeech_csmsc,
fastspeech2_csmsc,
fastspeech2_ljspeech,
fastspeech2_aishell3,
fastspeech2_vctk,
fastspeech2_mix,
tacotron2_csmsc,
tacotron2_ljspeech,
fastspeech2_male,
fastspeech2_canton

–voc 参数列表

1
2
3
4
5
6
7
8
9
10
11
12
13
pwgan_csmsc,
pwgan_ljspeech,
pwgan_aishell3,
pwgan_vctk,
mb_melgan_csmsc,
style_melgan_csmsc,
hifigan_csmsc,
hifigan_ljspeech,
hifigan_aishell3,
hifigan_vctk,
wavernn_csmsc,
pwgan_male,
hifigan_male

生成shell

paddlespeech tts --am speedyspeech_csmsc --voc pwgan_csmsc --input "你好,欢迎使用百度飞桨深度学习框架!" --spk_id 0

参考资料

vue实现录音参考资料:https://blog.csdn.net/qq_41619796/article/details/107865602#t1

前端流式播放音频参考仓库:

https://github.com/AnthumChris/fetch-stream-audio

https://bm.enthuses.me/buffered.php?bref=6677