ASRT是一個基於深度學習的中文語音辨識系統,如果您覺得喜歡,請點一個"Star"吧~
ReadMe Language | 中文版| English |
ASRT專案首頁|發布版下載|查看本專案的Wiki文件|實用效果體驗Demo |打賞作者
如果程式運行期間或使用中有什麼問題,可以及時在issue中提出來,我將盡快做出答案。本計畫作者交流QQ群: 894112051 ,加微信群請先加AI檸檬微訊號: ailemon-me ,並備註“ASRT語音辨識”
提問前請仔細檢視專案文件、 FAQ常見問題以及Issues 避免重複提問
如果程式運行時有任何異常情況,在提問時請發出完整截圖,並註明所使用的CPU架構,GPU型號,作業系統、Python,TensorFlow和CUDA版本,以及是否修改過任何程式碼或增刪資料集等。
本計畫使用tensorFlow.keras基於深度卷積神經網路和長短時記憶神經網路、注意力機制以及CTC實現。
以在Linux系統下的操作為例:
首先透過Git將本項目複製到您的電腦上,然後下載本專案訓練所需的資料集,下載連結詳見文件末端部分。
$ git clone https://github.com/nl8590687/ASRT_SpeechRecognition.git
或者您也可以透過"Fork" 按鈕,將本項目Copy一份副本,然後透過您自己的SSH金鑰複製到本機。
透過git克隆倉庫以後,進入專案根目錄;並建立一個儲存資料的子目錄, 例如/data/speech_data
(可使用軟連結代替),然後將下載好的資料集直接解壓進去
注意,目前版本中,在設定檔裡,預設新增了Thchs30、ST-CMDS、Primewords、aishell-1、aidatatang200、MagicData 六個資料集,如果不需要請自行刪除。如果要使用其他資料集需要自行新增資料配置,並事先使用ASRT支援的標準格式整理資料。
$ cd ASRT_SpeechRecognition
$ mkdir /data/speech_data
$ tar zxf <数据集压缩文件名> -C /data/speech_data/
下載預設資料集的拼音標籤檔:
$ python download_default_datalist.py
目前可用的模型有24、25、251和251bn
運行本專案之前,請安裝必要的Python3版依賴函式庫
本項目開始訓練請執行:
$ python3 train_speech_model.py
本專案開始測試請執行:
$ python3 evaluate_speech_model.py
測試之前,請確保程式碼中填寫的模型檔案路徑存在。
預測單一音訊檔案的語音辨識文字:
$ python3 predict_speech_file.py
啟動ASRT HTTP協定的API伺服器啟動請執行:
$ python3 asrserver_http.py
本地測試呼叫HTTP協定API服務是否成功:
$ python3 client_http.py
啟動ASRT GRPC協定的API伺服器啟動請執行:
$ python3 asrserver_grpc.py
本地測試呼叫GRPC協定API服務是否成功:
$ python3 client_grpc.py
請注意,開啟API伺服器之後,需要使用本ASRT專案對應的客戶端軟體來進行語音識別,詳見Wiki文件下載ASRT語音辨識客戶端SDK和Demo。
如果要訓練和使用非251bn版模型,請在程式碼中from speech_model.xxx import xxx
的對應位置做修改。
使用docker直接部署ASRT:
$ docker pull ailemondocker/asrt_service:1.3.0
$ docker run --rm -it -p 20001:20001 -p 20002:20002 --name asrt-server -d ailemondocker/asrt_service:1.3.0
僅CPU運行推理識別,不作訓練
DCNN + CTC
其中,輸入的音訊的最大時間長度為16秒,輸出為對應的漢語拼音序列
已經訓練好的模型包含在發布版服務端程式壓縮包裡面,發布版成品服務端程式可以在此下載:ASRT下載頁面。
Github本倉庫下Releases頁裡面還包括各個不同版本的介紹信息,每個版本下方的zip壓縮包也是包含已經訓練好的模型的發布版服務端程序壓縮包。
基於機率圖的最大熵隱馬可夫模型
輸入為漢語拼音序列,輸出為對應的漢字文本
目前,最好的模型在測試集上基本上能達到85%的漢語拼音正確率
不會安裝環境的同學請直接執行以下指令(前提是有GPU且已經安裝好Python3.9、CUDA 11.2 和cudnn 8.1):
$ pip install -r requirements.txt
依賴環境和效能配置要求
完整內容請看:幾個最新免費開源的中文語音資料集
數據集 | 時長 | 大小 | 國內下載 | 國外下載 |
---|---|---|---|---|
THCHS30 | 40h | 6.01G | data_thchs30.tgz | data_thchs30.tgz |
ST-CMDS | 100h | 7.67G | ST-CMDS-20170001_1-OS.tar.gz | ST-CMDS-20170001_1-OS.tar.gz |
AIShell-1 | 178h | 14.51G | data_aishell.tgz | data_aishell.tgz |
Primewords | 100h | 8.44G | primewords_md_2018_set1.tar.gz | primewords_md_2018_set1.tar.gz |
MagicData | 755h | 52G/1.0G/2.2G | train_set.tar.gz / dev_set.tar.gz / test_set.tar.gz | train_set.tar.gz / dev_set.tar.gz / test_set.tar.gz |
註:AISHELL-1 資料集解壓縮方法
$ tar xzf data_aishell.tgz
$ cd data_aishell/wav
$ for tar in *.tar.gz; do tar xvf $tar; done
特別鳴謝!感謝前輩們的公開語音資料集
如果提供的資料集連結無法開啟和下載,請點擊該連結OpenSLR
ASRT為用戶端透過RPC方式呼叫開發語音辨識功能提供了不同平台和程式語言的SDK存取能力,對於其他平台,可直接透過呼叫通用RESTful Open API方式進行語音辨識功能存取。特定存取步驟請看ASRT專案文件。
客戶端平台 | 專案倉庫連結 |
---|---|
Windows客戶端SDK和Demo | ASRT_SDK_WinClient |
跨平台Python3客戶端SDK和Demo | ASRT_SDK_Python3 |
跨平台Golang客戶端SDK和Demo | asrt-sdk-go |
Java客戶端SDK和Demo | ASRT_SDK_Java |
ASRT的原理請查看本文:
ASRT訓練和部署教學請看:
關於常被問到的統計語言模型原理的問題,請看:
關於CTC的問題請看:
更多內容請造訪作者的部落格:AI檸檬博客
或使用AI檸檬站內搜尋引擎進行相關資訊的搜索
GPL v3.0 © nl8590687 作者:AI檸檬
DOI: 10.5281/zenodo.5808434
貢獻者頁面
@nl8590687 (repo owner)