中文語(yǔ)音識(shí)別系統(tǒng)搭建流程筆記

標(biāo)簽:ASR, Python, Keras, CTC

最近在自己動(dòng)手搭建一個(gè)中文語(yǔ)音識(shí)別系統(tǒng),因?yàn)橐彩侨腴T(mén)階段,所以比較吃力,直到在GitHub上找到了一個(gè)已經(jīng)在做的開(kāi)源工程,找到了做下去的動(dòng)力,附上原作者項(xiàng)目的GitHub地址:A Deep-Learning-Based Chinese Speech Recognition System
這位作者人非常好,給予了我不少啟發(fā)。那么在這里也附上我自己工程的地址:ASR
現(xiàn)在工程還處于起步階段,雖然跑出了一些結(jié)果,但并不是很出色,仍舊在做一些調(diào)整,有不錯(cuò)的結(jié)果的時(shí)候就去更新GitHub,那現(xiàn)在就以本文來(lái)梳理一下搭建的思路。

一、數(shù)據(jù)集

在最開(kāi)始,先介紹一下我使用的數(shù)據(jù)集。

我所使用的數(shù)據(jù)集是清華大學(xué)THCHS30中文語(yǔ)音數(shù)據(jù)集。
data_thchs30.tgz OpenSLR國(guó)內(nèi)鏡像 OpenSLR國(guó)外鏡像
該數(shù)據(jù)集的介紹請(qǐng)參考THCHS-30:一個(gè)免費(fèi)的中文語(yǔ)料庫(kù)

在該數(shù)據(jù)集中,已經(jīng)分好訓(xùn)練集、驗(yàn)證集和測(cè)試集(分別在train、dev、和test文件夾中),其中訓(xùn)練集有10000個(gè)樣例,驗(yàn)證集有893個(gè)樣例,測(cè)試集有2495個(gè)樣例,每個(gè)樣例大約是10秒左右的語(yǔ)音段。
在thchs30這個(gè)文件夾里包含了索引性質(zhì)的文件(cv和dev好像是一毛一樣的)


thchs30文件夾中的文件

wav.txt是音頻文件的相對(duì)路徑


dev.wav.txt

syllable.txt是對(duì)應(yīng)的標(biāo)簽
syllable.txt

標(biāo)簽內(nèi)容首先是文件名,然后是對(duì)應(yīng)的拼音內(nèi)容,拼音后的數(shù)字代表幾聲,5代表輕聲。

二、特征提取

通常來(lái)講,語(yǔ)音識(shí)別常用的特征有MFCC、Fbank和語(yǔ)譜圖。
在本項(xiàng)目中,暫時(shí)使用的是80維的Fbank特征,提取特征利用python_speech_features庫(kù),將特征提取后保存成npy文件。
提取特征在先前的文章中寫(xiě)了詳細(xì)的做法:使用python_speech_features提取音頻文件特征

對(duì)于標(biāo)簽,項(xiàng)目中有dict.txt文件,這個(gè)文件的內(nèi)容是字典,是拼音和漢字的對(duì)應(yīng),如下圖所示。
dict.txt內(nèi)容

將標(biāo)簽中的拼音轉(zhuǎn)換成數(shù)字,例:a1為0,a2為1,以此類(lèi)推。
以第一條數(shù)據(jù)為例:
lv4 shi4 yang2 chun1 yan1 jing3 da4 kuai4 wen2 zhang1 de5 di3 se4 si4 yue4 de5 lin2 luan2 geng4 shi4 lv4 de5 xian1 huo2 xiu4 mei4 shi1 yi4 ang4 ran2
轉(zhuǎn)換到對(duì)應(yīng)的數(shù)字列表就是:
597 910 1126 159 1121 451 191 505 1051 1209 208 215 874 939 1168 208 570 599 325 910 597 208 1072 420 1099 634 907 1140 14 829
同樣,也將標(biāo)簽保存到npy文件中。

三、模型搭建

在該系統(tǒng)中我們使用的深度學(xué)習(xí)模型是由科大訊飛提出的稱(chēng)為全序列卷積神經(jīng)網(wǎng)絡(luò)(deep fully convolutional
neural network,DFCNN)模型,論文地址: 語(yǔ)音識(shí)別技術(shù)的研究進(jìn)展與展望
他的結(jié)構(gòu)圖如下所示:


DFCNN 先對(duì)時(shí)域的語(yǔ)音信號(hào)進(jìn)行傅里葉變換得到語(yǔ)音的語(yǔ)譜圖,DFCNN 直接將一句語(yǔ)音轉(zhuǎn)化成一張圖像作為輸入,輸出單元?jiǎng)t直接與最終的識(shí)別結(jié)果(比如音節(jié)或者漢字)相對(duì)應(yīng)。
模型中使用的卷積核大小都為3*3,每個(gè)模塊都為兩層卷積加上一層池化,第一個(gè)模塊的filter為32,第二個(gè)為64,之后還可以增加到128、256等,最后在輸出層前,還有一層全連接網(wǎng)絡(luò)。

對(duì)于損失函數(shù),這里選擇的是CTCLoss。

待更新....

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容