PaddleSpeech——安装与训练


PaddleSpeech——安装与训练

记录从安装到训练PaddleSpeech语音识别(ASR)](https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/streaming_asr_server/README_cn.md))的一次踩坑记录

环境:

Python  3.8(ubuntu18.04)
Cuda  11.2
cudnn 8.2.1
Tesla T4(16GB)
8 vCPU Intel Xeon Processor (Skylake, IBRS)
PaddlePaddle v2.4.1
PaddleSpeech r1.4.1

服务器

服务器租用的是AutoDL最便宜的机子,约 0.8r/h

镜像使用PaddlePaddle 2.4.0 | Python 3.8(ubuntu18.04) | Cuda 11.2

服务器带宽很小,不管是直接下载东西还是 FTP 都很慢,不过 AutoDL 提供了阿里云盘的文件复制

从控制台进入AutoPanel,点击公网网盘,然后扫码登录就可以从你的网盘直接下载了

image-20231027163651548

image-20231027163753454

环境

服务器自带了 conda 环境,不需要重复安装

Git clone PaddleSpeech

首先随便找个目录,这里用 root 目录

cd ~

clone 仓库

git clone https://github.com/PaddlePaddle/PaddleSpeech.git

有时候会由于网络问题无法 clone 仓库,可以手动下载压缩包并通过 FTP 上传到服务器,然后解压

unzip filename.zip -d /root/PaddleSpeech
# 通过这种方式下载并解压的文件可能目录名称会带上版本号
# 可以先在本机解压一次修改名称再压缩上传,确保与clone形式一致
# 当然目录名称不影响任何操作,只要清楚“项目根目录”在哪即可

C++编译环境

根据系统选择安装命令:

#  centos
sudo yum install gcc gcc-c++
# ubuntu
sudo apt install build-essential

Conda 环境

# 初始化 conda
conda init
# 激活 conda
bash
# 创建新环境: asr是自定义的环境名称
conda create -n asr python=3.8
# 激活新建的环境
conda activate asr
# 安装 paddlespeech 的 conda 依赖
conda install -y -c conda-forge sox libsndfile swig bzip2

CUDA & cuDNN

我使用的服务器镜像自带了 CUDA 11.2,而cuDNN是 8.1 且没有 lib 文件

安装 PaddlePaddle 时会看到 python 依赖库中 cuDNN 的版本,所以要先装 PaddlePaddle 然后再装 cuDNN

  1. 首先是安装 PaddlePaddle,在官网根据操作系统等选择合适的安装方式,然后复制命令执行。

    需要注意的是:由于 2.5.1 的版本中 numpy 的语法冲突我没办法解决,所以我使用了 2.4.1

    conda install paddlepaddle-gpu==2.4.1 cudatoolkit=11.2 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge 
  2. 安装 PaddleSpeech

    进入 PaddleSpeech 项目的根目录,如果是 clone 下来的,那么是/root/PaddleSpeech

    pip install pytest-runner -i https://pypi.tuna.tsinghua.edu.cn/simple 
    # 请确保目前处于PaddleSpeech项目的根目录
    pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple
  3. 安装 cuDnn

    # 查看cuDnn依赖版本
    conda list

    找到对应的cuDNN版本,这里使用的是 v8.2.1

    下载 cuDNN Library for Linux (x86_64),通过 FTP 或阿里云盘上传到服务器

    # 解压
    tar -zxvf filename.tgz
    # 解压后产生 cuda 目录:
    # lib64 - cuDNN 库文件
    # include - cuDNN 库头文件
    # 复制他们到 CUDA 目录
    sudo cp cuda/lib64/* /usr/local/cuda/lib64
    sudo cp cuda/include/* /usr/local/cuda/include

    还是在刚才的 cuDNN 网页,下载以下文件并上传到服务器

    • cuDNN Runtime Library for Ubuntu18.04 x86_64 (Deb)
    • cuDNN Developer Library for Ubuntu18.04 x86_64 (Deb)

    之后依次安装

    sudo dpkg -i libcudnn8_8.1.1.33-1+cuda11.2_amd64.deb
    sudo dpkg -i libcudnn8-dev_8.1.1.33-1+cuda11.2_amd64.deb

Numpy

运行训练脚本时,可能会出现 numpy 的语法报错,需要将版本降为 1.23

pip uninstall numpy
pip install numpy==1.23

这一步之后会有一个 protobuf 的依赖报错,根据提示调整版本:

pip install protobuf==3.20.0

这之后还有依赖报错,直接不管,因为我没管,然后训练跑起来了,能跑就行

数据集

数据集使用了 Aishell 的公开数据集,有 15 G,建议直接走阿里云盘

有 3 个镜像下载地址,选个最快的下就行

上传到服务器后,移动到根目录下的dataset/aishell 目录

mv data_aishell.tgz /root/PaddleSpeech/dataset/aishell

训练

# 进入 asr 的 aishell example 目录
cd /root/PaddleSpeech/examples/aishell/asr0
# 修改脚本
vim run.sh
# gpus是你要用的gpu索引,可以使用nvidia-smi查看,只有一个GPU写0就可以
# avg_num是最后保留的最优数量,写1
# conf_path是训练配置,如果需要websock的流式传输,需要改为online的配置

# 修改完配置后,执行数据集初始化
bash run.sh --stage 0 --stop_stage 0
# 初始化成功后,训练并测试模型
bash run.sh --stage 1 --stop_stage 3
# 训练完成后,导出模型
bash run.sh --stage 4 --stop_stage 5
# 单个音频文件测试
bash run.sh --stage 6 --stop_stage 6

# 以上的步骤也可以合并执行
bash run.sh

参考文档


文章作者: ❤纱雾
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ❤纱雾 !
评论
  目录