注冊(cè)Kaggle賬戶,可以用gmail壕翩,或者其他郵箱蛉迹,國內(nèi)注冊(cè)驗(yàn)證碼顯示不出,可用谷歌訪問助手注冊(cè)
(https://www.kaggle.com)
上傳過程較慢戈泼,也需要谷歌訪問助手之類工具輔助
上傳單個(gè)壓縮文件成功之后
但是input目錄下只讀權(quán)限婿禽,沒辦法解壓,所以考慮其他辦法解決
解壓縮完成之后大猛,保存所有包括output結(jié)果
可以將output結(jié)果上傳到Dataset扭倾,但是名稱不能與之前數(shù)據(jù)集重復(fù)!
最后仍然報(bào)錯(cuò)挽绩!提示test目錄已存在
最后發(fā)現(xiàn)已經(jīng)有人共享了aishell數(shù)據(jù)集膛壹,可以直接搜索應(yīng)用
https://www.kaggle.com/peterhu/speech_data
將src目錄下多個(gè)py源碼上傳至dataset,notebook調(diào)用的時(shí)候加入以下代碼唉堪,即可指定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')
運(yùn)行過程中報(bào)錯(cuò):
---------------------------------------------------------------------------
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內(nèi)運(yùn)行,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/
未設(shè)置聯(lián)網(wǎng)功能链方,無法安裝使用第三方庫
驗(yàn)證時(shí),需選擇國家如中國(+86)灶搜,然后填手機(jī)號(hào)祟蚀,等待驗(yàn)證碼。(人機(jī)驗(yàn)證碼可能也需要借助谷歌助手)割卖,完成之后需要打開網(wǎng)絡(luò)開關(guān)前酿。
安裝第三方庫kaldiio,重啟kernel仍然報(bào)錯(cuò)鹏溯,好像是需要安裝kaldi_io?
更改notebook的默認(rèn)工作目錄
# 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()))
# 獲取當(dāng)前路徑罢维,列出文件
print(os.getcwd())
print(os.listdir(os.getcwd()))
由于kaggle只能編輯ipynb文件,而py和sh文件可以通過數(shù)據(jù)集上傳丙挽,但是無法修改肺孵。
暫時(shí)想到的辦法是本地修改源碼,然后通過上傳數(shù)據(jù)集颜阐,更新原版本替換原有源碼平窘;之后再將其cp到working目錄下運(yùn)行?
下載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.
設(shè)定Speech-Transformer/egs/aishell/目錄下軟鏈接
!ln -s /kaggle/working/kaldi/egs/wsj/s5/steps ./
!ln -s /kaggle/working/kaldi/egs/wsj/s5/utils ./
根據(jù)目錄下INSTALL文件說明瞬浓,先進(jìn)入tools進(jìn)行make,然后再進(jìn)入src進(jìn)行make蓬坡,成功完成之后猿棉,生成fbank特征提取所需工具compute-fbank-feats磅叛、copy-feats等等。
如果不進(jìn)行make萨赁,源碼中只有.cc文件弊琴,執(zhí)行fbank特征提取時(shí)會(huì)找不到所需工具。
切換到tools目錄下(此處cd前面用%杖爽,而不用敲董!,!表示在子shell內(nèi)運(yùn)行慰安,下一行會(huì)失效)
!pwd
%cd /kaggle/working/kaldi/tools
!ls
檢查依賴情況腋寨,更加提示安裝依賴
!extras/check_dependencies.sh
!apt -y install automake autoconf sox gfortran subversion
默認(rèn)安裝MKL庫,報(bào)錯(cuò)
!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運(yùn)行400%萄窜,預(yù)計(jì)提供的cpu為4核,此處可改為4
!make -j 8
切換到src目錄
!pwd
%cd /kaggle/working/kaldi/src
!ls
編譯步驟(增加 --mathlib=OPENBLAS撒桨,默認(rèn)不需要)
!./configure --shared --mathlib=OPENBLAS
!make depend -j 8
!make -j 8
編譯成功完成查刻!
將input中的數(shù)據(jù)(更新到最新版本),copy到working目錄下
!cp -r /kaggle/input/speech-transformer-project/Speech-Transformer /kaggle/working/
!ls
切換默認(rèn)工作目錄
%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
改變系統(tǒng)環(huán)境變量($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'
執(zhí)行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
有些文件可能會(huì)沒有執(zhí)行權(quán)限凤类,通過設(shè)置賦予可執(zhí)行權(quán)限
!chmod +x /kaggle/working/Speech-Transformer/* -R
權(quán)限修改完之后運(yùn)行成功
stage 2步驟出現(xiàn)錯(cuò)誤穗泵,未發(fā)現(xiàn)bc命令
安裝bc命令,使用apt install谜疤,安裝之后bc在/usr/bin目錄下
# !pip install bc
!apt install bc
成功完成stage 0佃延、1、2步茎截,保存version苇侵。(Quick Save只保存當(dāng)前快照,無法保存輸出文件)
打開Accelerator配置選擇GPU企锌,會(huì)自動(dòng)清除輸出文件榆浓,需提前保存version。
運(yùn)行時(shí)間1個(gè)多小時(shí)撕攒,編譯了kaldi工具陡鹃,特征提取步驟出現(xiàn)點(diǎn)問題,所以沒有保存下來抖坪,可以將kaldi結(jié)果上傳至數(shù)據(jù)集萍鲸,供另一個(gè)工程作為dataset使用。
可以通過點(diǎn)擊顯示版本擦俐,進(jìn)行版本管理
還可以通過Select Diff來對(duì)比不同版本的不同之處。