2021-03-15 kaggle上Speech-Transformer项目问题

注册Kaggle账户,可以用gmail,或者其他邮箱,国内注册验证码显示不出,可用谷歌访问助手注册
https://www.kaggle.com

上传数据集

上传过程较慢,也需要谷歌访问助手之类工具辅助
上传单个压缩文件成功之后

添加数据集到项目输入

但是input目录下只读权限,没办法解压,所以考虑其他办法解决

解压缩文件到working目录

解压缩完成之后,保存所有包括output结果


保存版本
查看版本详细情况
查看output情况

可以将output结果上传到Dataset,但是名称不能与之前数据集重复!

将解压后输出结果上传到data

最后仍然报错!提示test目录已存在


错误信息
可以将输出结果当作data导入

最后发现已经有人共享了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)
<ipython-input-1-6e16a70dc4aa> in <module>
     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 <module>
     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),然后填手机号,等待验证码。(人机验证码可能也需要借助谷歌助手),完成之后需要打开网络开关。


验证完成之后GPU也可以设置使用了
GPU设置

TPU设置

安装第三方库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
中途报错

权限修改完之后运行成功

Data Preparation
Feature Generation

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。

Creating Save & Run All指保存并run all ?

运行时间1个多小时,编译了kaldi工具,特征提取步骤出现点问题,所以没有保存下来,可以将kaldi结果上传至数据集,供另一个工程作为dataset使用。

保存成功之后包含输出文件

可以通过点击显示版本,进行版本管理

点击显示版本
可以对不同版本进行修改
保存出错的版本,可以中途取消
进入Viewer
点击版本
转圈显示正在进行中

还可以通过Select Diff来对比不同版本的不同之处。

选中版本9与版本7对比
显示版本的不同之处
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容