ESPnet搭建记录
https://blog.csdn.net/nwnu_908/article/details/117665566?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-1-117665566-blog-103500422.235^v38^pc_relevant_anti_t3&spm=1001.2101.3001.4242.1&utm_relevant_index=4
ESPnet 是一个端到端的语音处理工具包,主要专注于端到端的语音识别和端到端的文本转语音。ESPnet 使用chainer和pytorch作为主要的深度学习引擎,并遵循Kaldi风格的数据处理、特征提取/格式和配方,为语音识别和其他语音处理实验提供完整的设置。
系统环境信息:Ubuntu 18.04.4 LTS,CUDA Version 10.0.130,CUDNN Version 7.6.3,
1.安装vim
有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时,提示:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim
运行 apt-get update,然后执行 apt-get install -y vim
2.安装Anaconda
bash Anaconda3-5.2.0-Linux-x86_64.sh
然后一直按提示操作即可, 建议安装默认位置就不用配置环境变量了.
刷新环境变量
配置了环境变量并不会生效,需要刷新才会生效。
source ~/.bashrc
3.相关依赖安装
cmake3 用于某些扩展
sudo apt-get install cmake
sox
sudo apt-get install sox
libsndfile1-dev
sudo apt-get install libsndfile1-dev
ffmpeg(安装时不需要,但在某些地方中使用)
sudo apt-get install ffmpeg
flac(安装时不需要,但在某些地方中使用)
sudo apt-get install flac
4.安装kaldi
git clone https://github.com/kaldi-asr/kaldi.git kaldi --origin upstream
apt-get update && \
apt-get install -y --no-install-recommends \
make \
automake \
autoconf \
bzip2 \
unzip \
wget \
libtool \
git \
subversion \
zlib1g-dev \
gfortran \
ca-certificates \
patch \
vim && \
rm -rf /var/lib/apt/lists/*
cd /kaldi/tools && \
./extras/install_mkl.sh && \
make -j4 && \
cd /kaldi/src && \
./configure --shared --use-cuda && \
make depend -j4 && \
make -j4 && \
显示ALL done OK后,其实没有安装完毕,仍然需要手动安装IRSTLM,你可以利用extras/install_irstlm来进行.
编译完成后进入egs/yesno/s5 执行 ./run.sh 执行如果没报错有识别结果那么安装就成功了.
可以选择编译过程中产生的临时文件
find /kaldi -type f \( -name "*.o" -o -name "*.la" -o -name "*.a" \) -exec rm {} \; && \
find /opt/intel -type f -name "*.a" -exec rm {} \; && \
find /opt/intel -type f -regex '.*\(_mc.?\|_mic\|_thread\|_ilp64\)\.so' -exec rm {} \; ;&& \
rm -rf /kaldi/.git
5. 安装pytorch
conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.0 -c pytorch
torch和torchvision下载的非常慢,可以从https://download.pytorch.org/whl/torch_stable.html下载正确版本,用pip指令进行离线安装.
我下载了torchvision-0.4.0-cp36-cp36m-manylinux1_x86_64.whl和torch-1.2.0-cp36-cp36m-manylinux1_x86_64.whl.
6.安装espent
git clone https://github.com/espnet/espnet
cd espnet
cd tools
编译安装,需要指定kaldi的安装路径
#链接 Kaldi:
ln -s <kaldi-root> .
#设置 cuda 环境
#查一下cuda的路径:
whereis cuda
#然后指向该路径:
sh ./setup_cuda_env.sh (你的路径)
#设置 Python 环境
#我已经有了Python,但我为了使用方便也安装了anaconda
#在这里我补充一下conda命令的一些基本操作
#创建虚拟环境
conda create -n ASR python=3.6
#激活虚拟环境
source activate ASR
#退出虚拟环境
source deactivate
#重新使用进入环境
source activate xxxx
#查看已有虚拟环境
conda-env list
#在进入虚拟环境的情况下,安装对应包直接
pip install xxxx 或者 conda install xxxx
#删除虚拟环境操作:(谨慎操作)
conda remove -n xxx --all
#具体我选择了A方案
ln -s <kaldi-root> .
conda create -n espnet python=3.6
conda activate espnet
CONDA_TOOLS_DIR=$(dirname ${CONDA_EXE})/..
./setup_anaconda.sh ${CONDA_TOOLS_DIR} espnet 3.6
make TH_VERSION=1.4.0
在安装过程中需要下载很多库文件,下载很慢,超时报错。
我修改一下脚本文件,把PIP源换到清华,当然也可以换成阿里或者其他的源:
打开makefile文件,在第127、128行处:
pytorch.done: activate_python.sh
. ./activate_python.sh && python3 -m pip install numpy --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple some-package # Workaround for "ImportError: numpy.core.multiarray failed to import"
. ./activate_python.sh && python3 -m pip install $(PIP_PYTORCH) -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
touch pytorch.done
在138行处:
espnet.done: pytorch.done conda_packages.done
. ./activate_python.sh && python3 -m pip install -e .. -i https://pypi.tuna.tsinghua.edu.cn/simple some-package # Install editable mode by default
touch espnet.done
在143-150行处:
ifneq ($(strip $(NO_CUPY)),)
. ./activate_python.sh && python3 -m pip install $(PIP_CHAINER) -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
else
# Precompiled cupy==6.0.0 for python>=3.8 is not provided
. ./activate_python.sh && \
if python3 -c "import sys; from distutils.version import LooseVersion as L; assert L(sys.version) < L('3.8')" 2>&1 /dev/null; then \
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package $(PIP_CHAINER) cupy-cuda$(CUDA_VERSION_WITHOUT_DOT)==$(CHAINER_VERSION) ; \
else \
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package $(PIP_CHAINER) cupy==$(CHAINER_VERSION); \
fi
一些仅用于特定任务的软件包,默认情况下未安装,因此如果您在运行这些配方时遇到一些安装错误,则需要选择安装它们。
#安装 Warp CTC
. activate_python.sh
. ./setup_cuda_env.sh /usr/local/cuda
./installers/install_warp-ctc.sh
#安装Warp Transducer
. activate_python.sh
. ./setup_cuda_env.sh /usr/local/cuda
./installers/install_warp-transducer.sh
#安装 PyOpenJTalk
. activate_python.sh
./installers/install_pyopenjtalk.sh
运行出错
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 2186: ordinal not in range(128)
初步认为是中文乱码问题
locale
locale -a
vim ~/.bashrc
添加LANG=C.UTF-8 (有的是zh_CN.UTF-8,不过我在本地没发现这种编码)
source ~/.bashrc
解决了中文乱码问题
#重启后出错
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
#解决方法是,先跑一下:
source deactivate
再运行
conda deactivate
再次运行conda activate espnet进入
重新执行安装命令
#使用 pip 安装ipython
. activate_python.sh
pip install ipython
可以通过以下方式检查安装是否成功完成
. ./activate_python.sh
python3 check_install.py
出现以下需要选择安装的 ,安装方法参考同上.
INFO:
Use 'installers/install_warp-rnnt.sh' to install warp_rnnt
Use 'installers/install_chainer_ctc.sh' to install chainer_ctc
Use 'installers/install_kenlm.sh' to install kenlm
Use 'installers/install_py3mmseg.sh' to install mmseg
Use 'installers/install_fairseq.sh' to install fairseq
Use 'installers/install_phonemizer.sh' to install phonemizer
Use 'installers/install_gtn.sh' to install gtn
Use 'installers/install_sctk.sh' to install sclite
Use 'installers/install_sph2pipe.sh' to install sph2pipe
Use 'installers/install_pesq.sh' to install PESQ
Use 'installers/install_beamformit.sh' to install BeamformIt
在./installers/install_phonemizer.sh这一步出错,/usr/bin/ld: cannot find -lcurses,解决办法,apt-get install libncurses5-dev
确认安装是否遗漏
make check_install
测试espnet
无网络情况下,从openslr下载wave_yesno数据集,并解压到/espnet/egs/yesno/asr1文件夹下,然后运行bash run.sh,若有网络,则直接运行bash run.sh即可.
测试pytorch的GPU是否可用
import torch
flag = torch.cuda.is_available()
print(flag)
ngpu= 1
# Decide which device we want to run on
device = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu")
print(device)
print(torch.cuda.get_device_name(0))
print(torch.rand(3,3).cuda())
True
cuda:0
GeForce GTX 1080
tensor([[0.9530, 0.4746, 0.9819],
[0.7192, 0.9427, 0.6768],
[0.8594, 0.9490, 0.6551]], device='cuda:0')
————————————————
版权声明:本文为CSDN博主「908的男同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/nwnu_908/article/details/117665566
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY