PaddleSpeech簡介
PaddleSpeech 是基于飛槳 PaddlePaddle 的語音方向的開源模型庫,用于語音和音頻中的各種關鍵任務的開發,包含大量基于深度學習前沿和有影響力的模型。
PaddleSpeech安裝步驟
提示:要找到一個合適的PaddleSpeech版本與paddlepaddle適配非常困難!官方文檔也沒有明確告訴我們PaddleSpeech要與哪個版本的python、paddlepaddle、cuda版本適配,只能自己嘗試。經過N多次嘗試,終于找到了能用的版本。因此,請嚴格按照下文的步驟執行。
相關依賴:
- gcc >= 4.8.5
- paddlepaddle <= 2.5.1
- python >= 3.8
安裝docker版paddlepaddle
下面將用docker安裝PaddleSpeech,這樣會遇到更少的問題,更容易成功!
準備工作:
- 帶GPU(以RTX4090為例)的Ubuntu 22.04系統,在 這里 下載550.78驅動的 .run 文件到Ubuntu系統內,運行命令(都以root身份運行):
# 更新系統
apt update
apt upgrade# 重啟系統
reboot# 安裝驅動
chmod +x NVIDIA-Linux-x86_64-550.78.run# 安裝過程中如果遇到需要重新打包內核,選擇 "rebuild ini..."
./NVIDIA-Linux-x86_64-550.78.run# 安裝成功后,重啟系統
reboot# 查看是否安裝成功,如果驅動安裝成功,會顯示如下圖內容
nvidia-smi
2. 在系統中用apt安裝docker:
# 刪除舊版
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done# 用apt安裝新版docker
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.ascecho \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 測試是否安裝成功,如果成功,會輸出hello-world鏡像的內容
sudo docker run hello-world
- 安裝 NVIDIA Container Toolkit:
# 用apt方式安裝NVIDIA Container Toolkit
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.listsed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit# 配置NVIDIA Container Toolkit
# 如下命令會修改docker配置文件/etc/docker/daemon.json,沒有則創建
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
- 安裝docker版本paddlepaddle
# 下載完鏡像后,可用命令 docker inspect <image_name_or_id> 查看鏡像創建時間
docker pull paddlepaddle/paddle:2.5.1-gpu-cuda11.2-cudnn8.2-trt8.0
在容器中安裝PaddleSpeech
- 創建docker-compose.yml:
cd
vim docker-compose.yml# 內容如下
services:paddlespeech:image: paddlepaddle/paddle:2.5.1-gpu-cuda11.2-cudnn8.2-trt8.0container_name: paddle251network_mode: hostentrypoint: ["/bin/bash", "/home/docker-entrypoint.sh"]volumes:- /root/docker-entrypoint.sh:/home/docker-entrypoint.sh- /root/tests:/paddledeploy:resources:reservations:devices:- driver: nvidiacount: allcapabilities: [gpu]restart: always
- 寫一個入口腳本
vim docker-entrypoint.sh# 內容如下:
#!/bin/bash
while true
doecho "loop forever, sleep 60"sleep 60
done
- 啟動paddlepaddle容器
docker compose up -d
- 進入容器
# 查看容器,STATUS下面如果是 "Up ..." 表示容器啟動成功
docker ps# 進入容器
docker exec -it paddle251 /bin/bash
- 安裝PaddleSpeech,推薦編譯安裝:
# 克隆
git clone https://github.com/PaddlePaddle/PaddleSpeech.git
cd PaddleSpeech
mkdir ~/.pip
echo -e '[global]\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple\ntrusted-host = pypi.tuna.tsinghua.edu.cn' > ~/.pip/pip.conf
pip install -U 'pip>21.0,<23.0'# 切換到指定commit
git checkout 52c7c1ef6a7373c332a52e006a80e59e630225cc
#git checkout ####f8b7d76758c1ec8da24dc883b86c8d73f70f9b9d# 安裝依賴包
pip install pytest-runner# 安裝完成時會有錯誤提示,不管它們:
# ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
# pylint 2.14.5 requires astroid<=2.12.0-dev0,>=2.11.6, but you have astroid 2.12.2 which is incompatible.
pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple# 查看是否安裝paddlepaddle-gpu和paddlespeech
pip list | grep -i paddle
測試安裝的PaddleSpeech
- 下載示例音頻
wget -c https://paddlespeech.bj.bcebos.com/PaddleAudio/zh.wav
wget -c https://paddlespeech.bj.bcebos.com/PaddleAudio/en.wav
- 語音識別測試
cd /paddle
paddlespeech asr --lang zh --input zh.wav
- Python API 一鍵預測
>>> from paddlespeech.cli.asr.infer import ASRExecutor
>>> asr = ASRExecutor()
>>> result = asr(audio_file="zh.wav")
>>> print(result)
我認為跑步最重要的就是給我帶來了身體健康
- 語音合成
命令行一鍵體驗
paddlespeech tts --input "你好,歡迎使用百度飛槳深度學習框架!" --output output.wav
Python API 一鍵預測
>>> from paddlespeech.cli.tts.infer import TTSExecutor
>>> tts = TTSExecutor()
>>> tts(text="今天天氣十分不錯。", output="output.wav")
- 聲音分類
命令行一鍵體驗
paddlespeech cls --input zh.wav
Python API 一鍵預測
>>> from paddlespeech.cli.cls.infer import CLSExecutor
>>> cls = CLSExecutor()
>>> result = cls(audio_file="zh.wav")
>>> print(result)
Speech 0.9027186632156372
- 聲紋提取
命令行一鍵體驗
paddlespeech vector --task spk --input zh.wav
Python API 一鍵預測
>>> from paddlespeech.cli.vector import VectorExecutor
>>> vec = VectorExecutor()
>>> result = vec(audio_file="zh.wav")
>>> print(result) # 187維向量
[ -0.19083306 9.474295 -14.122263 -2.0916545 0.048487294.9295826 1.4780062 0.3733844 10.695862 3.2697146-4.48199 -0.6617882 -9.170393 -11.1568775 -1.2358263 ...]
- 標點恢復
命令行一鍵體驗
paddlespeech text --task punc --input 今天的天氣真不錯啊你下午有空嗎我想約你一起去吃飯
Python API 一鍵預測
>>> from paddlespeech.cli.text.infer import TextExecutor
>>> text_punc = TextExecutor()
>>> result = text_punc(text="今天的天氣真不錯啊你下午有空嗎我想約你一起去吃飯")
今天的天氣真不錯啊!你下午有空嗎?我想約你一起去吃飯。
- 語音翻譯
命令行一鍵體驗
使用預編譯的 kaldi 相關工具,只支持在 Ubuntu 系統中體驗
paddlespeech st --input en.wav
Python API 一鍵預測
>>> from paddlespeech.cli.st.infer import STExecutor
>>> st = STExecutor()
>>> result = st(audio_file="en.wav")
['我 在 這棟 建筑 的 古老 門上 敲門 。']
- 測試中可能遇到 UserWarning 警告,可以不管,或者用 warnings.filterwarnings(“ignore”, category=WarningCategory) 屏蔽
更多測試用例見 這里
使用服務見 這里
參考:
https://www.cnblogs.com/iyiluo/p/17688647.html