PaddleSpeech 是由百度飞桨(PaddlePaddle)团队开发的一个开源的语音技术框架,支持音频分类、语音翻译、语音识别、语音合成、声纹识别等任务,可以做到工业级端到端的流式ASR和TTS服务。开源github地址:https://github.com/PaddlePaddle/PaddleSpeech。
一、环境安装
1、python环境:为了兼容paddlepaddle、paddleaudio等库的依赖环境,建议安装python版本在3.8以上3.10以下。
2、conda环境依赖安装:为了安装支持paddlespeech以及c++的环境,我们首先执行以下命令:
conda install -y -c conda-forge sox libsndfile swig bzip2
conda install -y -c gcc_linux-64=8.4.0 gxx_linux-64=8.4.0
3、pip包依赖安装:需要安装paddlepaddle、pytest-runner以及paddlespeech。
paddle根据不同硬件的支持安装对应的版本,建议安装2.5.1版本,cpu版本命令为:
pip install paddlepaddle==2.5.1 -i https://mirror.baidu.com/pypi/simple
而gpu版本命令为:
pip install paddlepaddle-gpu==2.5.1 -i https://mirror.baidu.com/pypi/simple
为了paddlespeech以及后续开发测试代码,需要安装pytest-runner库,命令如下:
pip install pytest-runner
最后,我们安装paddlespeech,这个会有两种方式,如果为了快速使用可以直接pip安装,如果为了更深入的开发并有修改源代码的需求,我们可以通过编译源代码进行安装。
paddlespeech的pip安装命令如下:
pip install paddlespeech==2.4.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
paddlespeech的源代码安装命令如下:
git clone https://github.com/PaddlePaddle/PaddleSpeech.git
cd PaddleSpeech
pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple
二、功能测试
为了验证paddlespeech功能是否安装成功,我们可以通过测试语音识别、语音合成、声音分类等功能进行验证。Paddlespeech官网推荐会有命令行和python接口调用方法,这里都以中文语言测试为例。
通过lang参数决定用哪个语言,zh表示中文,en表示英文,mix表示中英混合。
1、ASR语音识别功能测试
(1)命令行方式:
paddlespeech asr --lang zh --input test.wav
(2)python接口调用方式:
from paddlespeech.cli.asr.infer import ASRExecutor
asr = ASRExecutor()
result = asr(audio_file="test.wav")
print(result)
2、TTS语音合成功能测试
(1)命令行方式:
paddlespeech tts --input "你好,这是语音合成功能测试的示例。" --output output.wav
(2)python接口调用方式:
from paddlespeech.cli.tts.infer import TTSExecutor
tts = TTSExecutor()
tts(text="你好,这是语音合成功能测试的示例。", output="output.wav")
三、问题总结
paddlespeech库的环境搭建并不容易,看官网讨论还有人搭建了几天才搭建好,本人第一次搭建也搭建了好几个小时,因为官方已经不再怎么维护了,还多安装问题我们需要自己根据遇到的问题进行自行解决。
我们这里会总结一下安装过程中所遇到的问题,如果大家搭建过程还遇到其他问题,大家都可以留言进行讨论。
1、运行paddlespeech_server服务报错ModuleNotFoundError: No module named 'paddle.nn.layer.layers'。
第一,python版本要安装python3.8到3.10,太高太低都不太兼容安装paddlespeech的兼容库。
第二,paddlepaddle版本要安装2.5.1以上,paddlespeech要安装1.4.1以上,这个兼容性问题才能解决。
2、遇到linux报错glibc库报错ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found。
虽然可以升级glibc库也可以解决,但可能会导致其他linux环境库出问题,建议还是修改opencc版本为0.1.6,通过命令安装:pip install opencc-python-reimplemented==0.1.6。
3、修改speed、volume这些参数的时候会报错,xmalloc: out of memory。
没有安装相应的库,首先linux需要安装相应库,执行命令:apt-get install sox libsox-dev libsox-fmt-all
然后pip方式安装,命令:pip install soxbindings。
4、执行流式的asr或tts服务时候,执行命令报错。
要确定protocol协议方式是一致明确的,要确定是websocket的还是http的。
欢迎关注公众号:杰哥新技术