注册Kaggle账户,可以用gmail,或者其他邮箱,国内注册验证码显示不出,可用谷歌访问助手注册
(https://www.kaggle.com)
上传过程较慢,也需要谷歌访问助手之类工具辅助
上传单个压缩文件成功之后
但是input目录下只读权限,没办法解压,所以考虑其他办法解决
解压缩完成之后,保存所有包括output结果
可以将output结果上传到Dataset,但是名称不能与之前数据集重复!
最后仍然报错!提示test目录已存在
最后发现已经有人共享了aishell数据集,可以直接搜索应用
https://www.kaggle.com/peterhu/speech_data
将src目录下多个py源码上传至dataset,notebook调用的时候加入以下代码,即可指定import搜索路径
import sys
sys.path.append(r'../input/speech-transformer-project/Speech-Transformer/src/bin')
sys.path.append(r'../input/speech-transformer-project/Speech-Transformer/src/data')
sys.path.append(r'../input/speech-transformer-project/Speech-Transformer/src/solver')
sys.path.append(r'../input/speech-transformer-project/Speech-Transformer/src/transformer')
sys.path.append(r'../input/speech-transformer-project/Speech-Transformer/src/utils')
运行过程中报错:
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
in
14 #from thop import profile
15
---> 16 from data import AudioDataLoader, AudioDataset
17 from decoder import Decoder
18 from encoder import Encoder
/kaggle/input/speech-transformer-project/Speech-Transformer/src/data/data.py in
15 import torch.utils.data as data
16
---> 17 import kaldi_io
18 from utils import IGNORE_ID, pad_list
19
ModuleNotFoundError: No module named 'kaldi_io'
kaggle需要安装第三方库,在console输入:
pip install kaldiio (如果在notebook内运行,pip前面需要加“!”)
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/kaldiio/
未设置联网功能,无法安装使用第三方库
验证时,需选择国家如中国(+86),然后填手机号,等待验证码。(人机验证码可能也需要借助谷歌助手),完成之后需要打开网络开关。
安装第三方库kaldiio,重启kernel仍然报错,好像是需要安装kaldi_io?
更改notebook的默认工作目录
# change working directory
import os
if os.path.basename(os.getcwd()) == 'working':
os.chdir('./Speech-Transformer/egs/aishell/')
print('current working directory is {}'.format(os.getcwd()))
# 获取当前路径,列出文件
print(os.getcwd())
print(os.listdir(os.getcwd()))
由于kaggle只能编辑ipynb文件,而py和sh文件可以通过数据集上传,但是无法修改。
暂时想到的办法是本地修改源码,然后通过上传数据集,更新原版本替换原有源码;之后再将其cp到working目录下运行?
下载kaldi
!cd /kaggle/working
!git clone https://github.com/kaldi-asr/kaldi.git
Cloning into 'kaldi'...
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 113300 (delta 2), reused 10 (delta 2), pack-reused 113289
Receiving objects: 100% (113300/113300), 121.03 MiB | 19.96 MiB/s, done.
Resolving deltas: 100% (87516/87516), done.
设定Speech-Transformer/egs/aishell/目录下软链接
!ln -s /kaggle/working/kaldi/egs/wsj/s5/steps ./
!ln -s /kaggle/working/kaldi/egs/wsj/s5/utils ./
根据目录下INSTALL文件说明,先进入tools进行make,然后再进入src进行make,成功完成之后,生成fbank特征提取所需工具compute-fbank-feats、copy-feats等等。
如果不进行make,源码中只有.cc文件,执行fbank特征提取时会找不到所需工具。
切换到tools目录下(此处cd前面用%,而不用!,!表示在子shell内运行,下一行会失效)
!pwd
%cd /kaggle/working/kaldi/tools
!ls
检查依赖情况,更加提示安装依赖
!extras/check_dependencies.sh
!apt -y install automake autoconf sox gfortran subversion
默认安装MKL库,报错
!extras/install_mkl.sh
Certificate verification failed: The certificate is NOT trusted. The certificate issuer is unknown. Could not handshake: Error in the certificate verification. [IP: 184.30.128.247 443]
改用安装openblas替代
!extras/install_openblas.sh
# 编译tools,kaggle最高CPU运行400%,预计提供的cpu为4核,此处可改为4
!make -j 8
切换到src目录
!pwd
%cd /kaggle/working/kaldi/src
!ls
编译步骤(增加 --mathlib=OPENBLAS,默认不需要)
!./configure --shared --mathlib=OPENBLAS
!make depend -j 8
!make -j 8
编译成功完成!
将input中的数据(更新到最新版本),copy到working目录下
!cp -r /kaggle/input/speech-transformer-project/Speech-Transformer /kaggle/working/
!ls
切换默认工作目录
%cd /kaggle/working
# change working directory
import os
if os.path.basename(os.getcwd()) == 'working':
os.chdir('./Speech-Transformer/egs/aishell/')
print('current working directory is {}'.format(os.getcwd()))
替换 steps utils 目录为kaldi软链接
!rm -R steps utils
!ln -s /kaggle/working/kaldi/egs/wsj/s5/steps /kaggle/working/Speech-Transformer/egs/aishell/
!ln -s /kaggle/working/kaldi/egs/wsj/s5/utils /kaggle/working/Speech-Transformer/egs/aishell/
!ls -l
改变系统环境变量($PATH)
import os
os.environ['KALDI_ROOT'] = '/kaggle/working/kaldi'
os.environ['PATH'] = '/kaggle/working/kaldi/src/bin:/kaggle/working/kaldi/src/lmbin:/kaggle/working/kaldi/src/fstbin:/kaggle/working/kaldi/src/gmmbin:/kaggle/working/kaldi/src/kwsbin:/kaggle/working/kaldi/src/latbin:/kaggle/working/kaldi/src/featbin:/kaggle/working/kaldi/src/fgmmbin:/kaggle/working/kaldi/src/sgmm2bin:/kaggle/working/kaldi/src/chainbin/:/kaggle/working/kaldi/src/nnetbin/:/kaggle/working/kaldi/src/nnet2bin:/kaggle/working/kaldi/src/nnet3bin:/kaggle/working/kaldi/src/onlinebin:/kaggle/working/kaldi/src/online2bin:/kaggle/working/kaldi/src/ivectorbin:/kaggle/working/kaldi/tools/openfst-1.6.2/bin:/kaggle/working/kaldi/egs/wsj/s5/utils:/kaggle/working/kaldi/egs/wsj/s5/steps:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
执行run.sh
!chmod +x * -R
# !chmod +x */*.sh
!ls -l
!./run.sh --checkpoint 0 --stage 0 --visdom 0 --visdom_id "train test" --visdom_lr 0 --visdom_epoch 0 --LFR_m 1 --LFR_n 1 --batch_frames 1500 --batch-size 16 --print-freq 100 --num-workers 4
有些文件可能会没有执行权限,通过设置赋予可执行权限
!chmod +x /kaggle/working/Speech-Transformer/* -R
权限修改完之后运行成功
stage 2步骤出现错误,未发现bc命令
安装bc命令,使用apt install,安装之后bc在/usr/bin目录下
# !pip install bc
!apt install bc
成功完成stage 0、1、2步,保存version。(Quick Save只保存当前快照,无法保存输出文件)
打开Accelerator配置选择GPU,会自动清除输出文件,需提前保存version。
运行时间1个多小时,编译了kaldi工具,特征提取步骤出现点问题,所以没有保存下来,可以将kaldi结果上传至数据集,供另一个工程作为dataset使用。
可以通过点击显示版本,进行版本管理
还可以通过Select Diff来对比不同版本的不同之处。