教你如何使用ASRT訓練中文語音識別模型

2021-02-14 AI檸檬博客

ASRT是一個中文語音識別系統,由AI檸檬博主開源在GitHub( https://github.com/nl8590687/ASRT_SpeechRecognition)上,為了便於大家使用,本文將手把手按順序教你如何使用ASRT語音識別系統訓練一個中文語音識別模型。

首先到GitHub上打開ASRT語音識別項目倉庫:https://github.com/nl8590687/ASRT_SpeechRecognition國內Gitee鏡像地址:https://gitee.com/ailemon/ASRT_SpeechRecognition1 下載原始碼以下方式二選一即可,GitHub和Gitee上操作類似。1.1 使用Git命令克隆代碼按照圖中的順序點擊滑鼠,然後打開系統的終端(Windows稱為CMD命令行或PowerShell),通過cd命令(Linux、MacOS終端或Win系統PowerShell)或「<盤符>:\」(Windows CMD命令行)然後進入自己指定存放代碼的路徑下,然後在終端輸入(連結可以直接粘貼進去):
$ git clone https://github.com/nl8590687/ASRT_SpeechRecognition.git

稍等片刻,最新的原始碼就克隆(下載)完畢了。這種方式的優勢是,之後如果GitHub倉庫上的代碼有更新,只需要使用git pull 命令即可立即同步到您的計算機上。1.2 瀏覽器直接下載下載完成後,需要進行解壓。之後,如果GitHub倉庫上如果代碼有更新,重複上述步驟即可。2 安裝運行環境

首先請確保安裝好Python 3.6或者Python 3.7軟體,或者Anaconda 並創建好3.6或3.7版本的虛擬環境。本項目不支持python2.7版本,請使用python3.6及以上版本。如果pip命令對應的是python 2.7版本請將下述的pip命令替換為pip3命令。

$ pip install python_speech_features$ pip install tensorflow-gpu==1.14.0$ pip install keras==2.3.1$ pip install wave$ pip install matplotlib$ pip install requests

其中,TensorFlow版本和Keras版本可根據實際情況靈活調整,以上為一個可在CUDA 10.0、cudnn 7.6.4環境下用的安裝操作步驟。3 下載並解壓語音數據集

點擊連結 https://github.com/nl8590687/ASRT_SpeechRecognition#data-sets-%E6%95%B0%E6%8D%AE%E9%9B%86 即可跳轉到一些語音數據集的下載連結頁面,點擊下載清華大學THCHS30數據集和ST-CMDS數據集(都要下載)。推薦使用國內鏡像下載,如果該連結無法正常下載,或者您身處中國大陸以外的地區,可點擊國外鏡像下載。

下載後,解壓兩個數據集,並移動解壓後的目錄到下載的ASRT代碼的文件夾目錄下的dataset目錄下(如果不存在就創建一個名為」dataset」的文件夾目錄),並將datalist文件夾目錄下的所有內容複製到dataset下。

推薦使用其他路徑存放數據,比如在Windows系統上,假設代碼放在「D:\ASRT_SpeechRecognition\」 下,數據集可以放在另外一塊數據盤中的「E:\語音數據集\」 下。在Linux系統上,可以將數據盤掛載到「/data」下,並使用ln -s 創建軟連結到dataset目錄。

注意在Windows系統上使用WinRAR選擇「解壓到XXX(壓縮包名)」時會在解壓後多一級額外的數據集文件目錄,例如「data_thchs30/data_thchs30/xxxx」,請去除多餘的目錄層級。只保留為「data_thchs30/xxxx」即可。

$ tar zxfdata_thchs30.tgz$ tar zxf ST-CMDS-20170001_1-OS.tar.gz

用代碼編輯器打開其中的 tran_mspeech.py文件,默認情況下如圖:

如果是Windows系統,當數據直接放置於dataset路徑下時,請修改第36行的文件路徑為』dataset』或dataset目錄的絕對路徑後,再訓練。如果是其他路徑,也請修改為對應的路徑。如果是Linux系統,當數據集直接放置於dataset下,或者使用軟連結到dataset下,可以忽略這一步,否則也需要修改為數據集存放的路徑。

然後檢查TranModel()函數裡面的參數配置,epoch那個參數請忽略,目前是棄用的,batch_size參數可根據實際需要進行調整,默認為16,參數save_step用於設定每迭代多少步就保存一次模型,默認為500步。

5 訓練模型

最激動人心的一刻就是代碼成功運行起來。我們只需要在命令行終端中輸入這個命令,即可運行:

$ python train_mspeech.py

如果python命令是2.7版本,請使用python3命令。

如果使用Visual StudioCode、Spider或者PyCharm等IDE,可以直接在代碼目錄下打開train_mspeech.py文件點擊運行按鈕。當模型訓練收斂的時候,可以直接按ctrl + C 或者在IDE裡點擊停止運行按鈕,以停止訓練模型,此時,應該已經在model_speech/ 目錄下對應的模型名稱裡保存了很多模型參數文件。

6 測試模型準確率

用編輯器打開test_mspeech.py文件,如圖。

除了與train_mspeech.py一樣的數據集路徑問題以外,還有一些需要查看並處理。找到我們最後訓練好保存的模型參數文件,或者訓練過程中的某個模型參數文件,複製文件名,然後在這裡的第49行代碼中,將模型文件路徑修改為該模型參數文件名。

在第51行,TestModel()這裡,str_dataset則為要測試準確率的數據集類型,可選的為訓練集(train)、驗證集(dev)和測試集(test),圖中寫為’test』意為在測試集上測試模型的準確率。data_count參數設定要測試的數據量,例如:128,即隨機處連續抽取128個數據進行錯誤率的計算,如果填「-1」則使用全部測試數據集的數據量。out_report參數為True時,會保存測試時的數據集中間結果和最終結果日誌,方便調試和數據記錄。

7 測試單一語音數據的識別我們需要在例如32行處LoadModel()函數裡面,跟之前一樣填寫我們要使用的保存下來的模型參數文件,以便模型加載。並在例如第40行處的RecognizeSpeech_FromFIle()函數裡面,填寫我們需要識別的錄音文件的文件名路徑。完畢後,運行代碼。或在IDE中點擊運行按鈕,片刻後即可看到該條語音數據的識別結果。8 查看ASRT語音識別項目文檔

在使用ASRT的過程中,難免會遇到一些問題,大部分問題,都已經說明並記錄在了項目文檔中,點擊 https://asrt.ailemon.me/docs/ 即可打開項目文檔。

如果您還有其他的問題或者希望跟大家一起交流討論,請加AI檸檬博客QQ群:867888133,歡迎進群一起交流討論哦。

如果需要加微信群,請在進QQ群後向群主說明,會發加群二維碼,或在本文下方留言。也可以發郵件給我,或者關注微信公眾號「AI檸檬博客」並留言。

[論文分享]Char2wav端到端語音合成

[論文翻譯] Dropblock:一個用於卷積網絡的正則化方法

[論文分享]Dropblock:一個用於卷積網絡的正則化方法

生物信息學中的遷移學習

Windows安裝CUDA和CUDNN運行環境

博客網址:https://blog.ailemon.me

點擊下方「閱讀原文」即可閱讀博客原文,並參與評論和互動。

點在看,讓檸檬菌知道你在看~

相關焦點

  • 絕佳的ASR學習方案:這是一套開源的中文語音識別系統
    語音識別目前已經廣泛應用於各種領域,那麼你會想做一個自己的語音識別系統嗎?
  • 阿里開源自研語音識別模型DFSMN,準確率高達96.04%
    在近期舉行的雲棲大會武漢峰會上,裝有DFSMN語音識別模型的「AI收銀員」在與真人店員的PK中,在嘈雜環境下準確識別了用戶的語音點單,在短短49秒內點了34杯咖啡。 CER%產品線A產品線BLFR-LCBLSTM18.9210.21LFR-DFSMN15.00(+20.72%)8.04(21.25%)通過結合LFR技術,我們可以獲得三倍的識別加速。
  • Tensorflow官方語音識別入門教程 | 附Google新語音指令數據集
    語音識別教程Google還配合這個數據集,推出了一份TensorFlow教程,教你訓練一個簡單的語音識別網絡,能識別10個詞,就像是語音識別領域的MNIST(手寫數字識別數據集)。雖然這份教程和數據集都比真實場景簡化了太多,但能幫用戶建立起對語音識別技術的基本理解,很適合初學者使用。
  • 中文預訓練模型ERNIE超詳細使用指南
    ,絕大多數我們是不太可能自己從頭開始訓練的,最多使用的是官方開源的模型進行特定任務的Finetune。3.3 命名實體識別命名實體識別也是NLP的一個基礎任務,之前在博客中也有過介紹:【論文筆記】命名實體識別論文(https://blog.csdn.net/Kaiyuan_sjtu/article/details/89143573)關於NER的處理思路也是跟上面情感分類的大同小異,只不過NER是屬於序列標註任務,在運行腳本的時候注意使用源碼中的
  • 看懂語音識別中CTC解碼器的原理,這篇文章就夠了
    ----  AI檸檬博客 首發  ----在DNN-HMM架構的語音識別系統的聲學模型中,訓練一個DNN模型通常需要先進行幀和標籤的對齊操作
  • EasyPR--中文車牌識別系統 開發詳解(開源)
    推薦你使用EasyPR有以下幾點理由:這裡面的代碼都是作者親自優化過的,你可以在上面做修改,做優化,甚至一起協作開發,一些處理車牌的細節方法你應該是感興趣的。如果你對代碼不感興趣,那麼經過作者精心訓練的模型,包括SVM和ANN的模型,可以幫助你提升或驗證你程序的正確率。
  • 谷歌提出新型自動語音識別數據增強大法,直接對頻譜圖「動刀」,提升模型表現
    銅靈 發自 編譯整理量子位 出品 | 公眾號 QbitAI每次用語音輸入完成「打字」過程,你的手機就經歷了一次自動語音識別(ASR)。
  • GPT2模型訓練,50w個多輪中文對話語料
    GPT2模型對中文閒聊語料進行訓練,使用 HuggingFace的transformers實現GPT2模型的編寫與訓練。在閒暇時間用 GPT2-Chinese模型訓練了幾個長文本的生成模型,並且精讀了一遍作者的源碼,獲益匪淺,加深了自己對GPT2生成模型的一些理解,於是將GPT2模型用於閒聊對話的生成,非常感謝作者的分享。本項目中沿用了原項目中的部分結構和一些命名方式,同時也對很多代碼細節做出了自己實現。
  • 簡單粗暴而有效的改圖:自動語音識別數據擴增的「一條野路」
    如何在調參之前擁有更佳的表現?千辛萬苦調好了但卻過擬合,如何擁有更好的泛化能力?這無疑是人肉調參的必經之痛。一個通用的認知是,訓練數據會限制模型表現的上限,能擁有更好的訓練數據,無疑成功了一大截兒。 近日,Daniel S.
  • 獨家揭秘:阿里iDST人機互動新進展——LFR-DFSMN語音識別聲學模型介紹
    目前主流的語音識別系統普遍採用基於深度神經網絡和隱馬爾可夫(Deep Neural Networks-Hidden Markov Model, DNN-HMM)的聲學模型,其模型結構如圖 1所示。聲學模型的輸入是傳統的語音波形經過加窗、分幀,然後提取出來的頻譜特徵,如 PLP, MFCC 和 FBK等。
  • 自製人臉數據,利用keras庫訓練人臉識別模型
    其存在的目的就是簡化開發複雜度,能夠讓你迅速出產品,更關鍵的是,keras有中文文檔;),由於我的機器已經安裝了Tensorflow,因此我直接使用了keras的Tensorflow版。同時,為了驗證其它深度學習庫的效率和準確率,當然也為了滿足我的好奇心,我還使用了Theano,利用CNN——卷積神經網絡來訓練我的人臉識別模型。我會在接下來的幾節講述這些內容,本節專注把訓練數據準備好。
  • Kaldi鑑別性訓練與chain模型
    Kaldi鑑別性訓練與chain模型參考資料:區分性訓練(Discriminative Training)及其在語音識別(ASR)上的運用(liuyan)語音識別系列之區分性訓練和LF-MMI(東方彬彬)基礎知識語音識別最根本的公式,如下所示,我們要在給定語音觀測序列O(語音特徵
  • 基於 CRF 的中文命名實體識別模型實現
    命名實體識別在越來越多的場景下被應用,如自動問答、知識圖譜等。非結構化的文本內容有很多豐富的信息,但找到相關的知識始終是一個具有挑戰性的任務,命名實體識別也不例外。前面我們用隱馬爾可夫模型(HMM)自己嘗試訓練過一個分詞器,其實 HMM 也可以用來訓練命名實體識別器,但在本文,我們講另外一個算法——條件隨機場(CRF),來訓練一個命名實體識別器。
  • 18款丨語音識別系統的使用
    18款的小6 標配 了「語音識別系統」,可是你會使用它嗎?
  • 語音合成(speech synthesis)方向四:開源中文和英文訓練語料庫open speech corpus
    本篇文章主旨為整理目前開源的語音語料,便於相關從業者使用。首先,我們需要為這些為開源數據做貢獻的個人、公司或者組織表達敬意,有了這些開源的數據,才能促進語音合成的發展。我把個人搜集的語音合成、語音識別和噪聲數據整理到個人的網站,有興趣的研究者可以搜藏  http://yqli.tech/page/data.html本文章對開源的語音合成數據的選取的標準:音頻的質量較高,語料庫包含音頻和對應的標註信息文件。
  • 海量中文語料上預訓練ALBERT模型:參數更少,效果更好
    BERT的改進版,與最近其他State of the art的模型不同的是,這次是預訓練小模型,效果更好、參數更少。)訓練語料40g中文語料,超過100億漢字,包括多個百科、新聞、互動社區、小說、評論。
  • 中文最佳,哈工大訊飛聯合發布全詞覆蓋中文BERT預訓練模型
    而在中文領域,哈工大訊飛聯合實驗室也於昨日發布了基於全詞覆蓋的中文 BERT 預訓練模型,在多個中文數據集上取得了當前中文預訓練模型的最佳水平,效果甚至超過了原版 BERT、ERINE 等中文預訓練模型。基於 Transformers 的雙向編碼表示(BERT)在多個自然語言處理任務中取得了廣泛的性能提升。
  • 【BERT中文改進版】預訓練ALBERT模型:參數更少,效果更好,拿下13項NLP任務
    閱讀大概需要5分鐘跟隨小博主,每天進步一丟丟編輯:zenRRan作者:brightmartgithub:https://github.com/brightmart/albert_zhalbert_zh海量中文語料上預訓練
  • 學界 | 百度提出冷聚變方法:使用語言模型訓練Seq2Seq模型
    近日,百度研究院發表論文提出冷聚變(Cold Fusion)方法,即在 Seq2Seq 模型訓練過程中加入語言模型,實現更快地收斂
  • 面向產業應用的超大規模預訓練語言模型,邀你「造」起來
    圖片來自中國國家航天局CNSA是的,循環智能在造一個面向產業應用的、超大規模的中文預訓練語言模型。