注冊Kaggle賬戶,可以用gmail,或者其他郵箱,國內(nèi)注冊驗證碼顯示不出,可用谷歌訪問助手注冊
(https://www.kaggle.com)

上傳過程較慢,也需要谷歌訪問助手之類工具輔助
上傳單個壓縮文件成功之后

但是input目錄下只讀權(quán)限,沒辦法解壓,所以考慮其他辦法解決

解壓縮完成之后,保存所有包括output結(jié)果



可以將output結(jié)果上傳到Dataset,但是名稱不能與之前數(shù)據(jù)集重復(fù)!

最后仍然報錯!提示test目錄已存在


最后發(fā)現(xiàn)已經(jīng)有人共享了aishell數(shù)據(jù)集,可以直接搜索應(yīng)用
https://www.kaggle.com/peterhu/speech_data
將src目錄下多個py源碼上傳至dataset,notebook調(diào)用的時候加入以下代碼,即可指定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內(nèi)運行,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)功能,無法安裝使用第三方庫

驗證時,需選擇國家如中國(+86),然后填手機號,等待驗證碼。(人機驗證碼可能也需要借助谷歌助手),完成之后需要打開網(wǎng)絡(luò)開關(guān)。



安裝第三方庫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文件可以通過數(shù)據(jù)集上傳,但是無法修改。
暫時想到的辦法是本地修改源碼,然后通過上傳數(shù)據(jù)集,更新原版本替換原有源碼;之后再將其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.
設(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文件說明,先進入tools進行make,然后再進入src進行make,成功完成之后,生成fbank特征提取所需工具compute-fbank-feats、copy-feats等等。
如果不進行make,源碼中只有.cc文件,執(zhí)行fbank特征提取時會找不到所需工具。
切換到tools目錄下(此處cd前面用%,而不用!,!表示在子shell內(nèi)運行,下一行會失效)
!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%,預(yù)計提供的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中的數(shù)據(jù)(更新到最新版本),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
改變系統(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
有些文件可能會沒有執(zhí)行權(quán)限,通過設(shè)置賦予可執(zhí)行權(quán)限
!chmod +x /kaggle/working/Speech-Transformer/* -R

權(quán)限修改完之后運行成功


stage 2步驟出現(xiàn)錯誤,未發(fā)現(xiàn)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工具,特征提取步驟出現(xiàn)點問題,所以沒有保存下來,可以將kaldi結(jié)果上傳至數(shù)據(jù)集,供另一個工程作為dataset使用。

可以通過點擊顯示版本,進行版本管理






還可以通過Select Diff來對比不同版本的不同之處。

