廖盛澨,曾 俊,徐 崇
(江西應(yīng)用技術(shù)職業(yè)學(xué)院,江西 贛州 341000)
智能語(yǔ)音識(shí)別技術(shù)(Automatic Speech Recognition,ASR)是以人類語(yǔ)音為輸入的新型交互技術(shù)。通過(guò)智能語(yǔ)音識(shí)別技術(shù),人類可以與機(jī)器進(jìn)行“交流”,機(jī)器能夠聽懂人類的語(yǔ)言,并且能夠反饋結(jié)果給人類。智能語(yǔ)音識(shí)別系統(tǒng)主要由語(yǔ)音的采集與識(shí)別、語(yǔ)義的理解以及語(yǔ)音的合成組成。實(shí)際上,人們?cè)?0 世紀(jì)50 年代就開始研究智能語(yǔ)音識(shí)別技術(shù),時(shí)至今日,語(yǔ)音識(shí)別技術(shù)已經(jīng)取得突破性的進(jìn)展。智能語(yǔ)音識(shí)別是實(shí)現(xiàn)人機(jī)智能交互最好的入口,也是完全機(jī)器翻譯和自然語(yǔ)言理解的基礎(chǔ)。特別是近年來(lái),大數(shù)據(jù)和云計(jì)算時(shí)代的到來(lái),加上深度神經(jīng)網(wǎng)絡(luò)技術(shù)的進(jìn)步,語(yǔ)音識(shí)別系統(tǒng)的性能獲得了顯著的提升。語(yǔ)音識(shí)別技術(shù)也逐步走向?qū)嵱没彤a(chǎn)品化,智能語(yǔ)音識(shí)別技術(shù)在物聯(lián)網(wǎng)產(chǎn)品中也得到更廣泛的應(yīng)用。從各種離線物聯(lián)網(wǎng)(Internet of Things,IoT)設(shè)備,再到各種公共服務(wù)和智慧政務(wù)等場(chǎng)合的應(yīng)用,智能語(yǔ)音識(shí)別技術(shù)正在逐步影響人們的生活。
目前常用的語(yǔ)音識(shí)別工具有CMU Sphinx、HTK、Julius、ISIP 及Kaldi。其中,Kaldi 是由Dan Povey 博士和BUT 大學(xué)合作開發(fā)的一套完整的語(yǔ)音識(shí)別套件[1]。Kaldi 的文檔覆蓋全面,代碼靈活易于擴(kuò)展。作為一個(gè)開源項(xiàng)目,Kaldi 的社區(qū)比較活躍,版本穩(wěn)定。而且,Kaldi 同時(shí)包括了語(yǔ)音識(shí)別解決方案中的語(yǔ)音和深度學(xué)習(xí)方法。Kaldi 智能語(yǔ)音識(shí)別算法主要由C++編程語(yǔ)言實(shí)現(xiàn),作為一個(gè)跨平臺(tái)的相對(duì)輕量級(jí)的智能語(yǔ)音識(shí)別算法,比較適合移植到嵌入式領(lǐng)域中。
語(yǔ)音識(shí)別原理比較復(fù)雜,主要分為前端處理和后端處理兩部分,系統(tǒng)結(jié)構(gòu)如圖1 所示。其中,前端處理是對(duì)麥克風(fēng)采集的音頻數(shù)據(jù)做處理,主要過(guò)程可分為端點(diǎn)檢測(cè)、降噪及語(yǔ)音特征提??;后端處理主要是對(duì)音頻數(shù)據(jù)與聲學(xué)模型、語(yǔ)言模型進(jìn)行匹配,以及對(duì)音頻數(shù)據(jù)的解碼。
圖1 語(yǔ)音識(shí)別系統(tǒng)結(jié)構(gòu)框圖
端點(diǎn)檢測(cè)也叫語(yǔ)音活動(dòng)檢測(cè)(Voice Activity Detection,VAD),它的目的是從帶有噪聲的語(yǔ)音中準(zhǔn)確地定位出語(yǔ)音的開始點(diǎn)和結(jié)束點(diǎn),去掉靜音的部分,降低對(duì)后續(xù)步驟造成的干擾[2]。
降噪又稱噪聲抑制(Noise Reduction),麥克風(fēng)采集到的音頻通常會(huì)有一定的噪音,如果噪聲較大,會(huì)對(duì)語(yǔ)音識(shí)別產(chǎn)生較大的影響,比如影響語(yǔ)音識(shí)別率,導(dǎo)致端點(diǎn)檢測(cè)靈敏度下降等。所以,噪聲抑制在語(yǔ)音的前端處理中顯得尤為重要。
特征提取是將預(yù)處理之后的語(yǔ)音的特征值提取出來(lái),由于語(yǔ)音波形在時(shí)域上的表述能力很弱,需要將語(yǔ)音做波形轉(zhuǎn)換。常見的一種變換方法為MFCC 特征值提取。
聲學(xué)模型、語(yǔ)言模型和解碼器是語(yǔ)音識(shí)別系統(tǒng)最重要也是最復(fù)雜的部分。聲學(xué)模型主要用來(lái)構(gòu)建輸入語(yǔ)音和輸出聲學(xué)單元之間的概率映射關(guān)系;語(yǔ)言模型用來(lái)描述不同字詞之間的概率搭配關(guān)系;解碼器負(fù)責(zé)結(jié)合聲學(xué)單元概率數(shù)值和語(yǔ)言模型在不同搭配上的打分進(jìn)行篩選,最終得到最可能的識(shí)別結(jié)果[3]。
Kaldi 是當(dāng)前最流行的開源語(yǔ)音識(shí)別工具(Toolkit),它使用有限加權(quán)狀態(tài)轉(zhuǎn)換機(jī)(Weighted Finite State Transducers,WFST)來(lái)實(shí)現(xiàn)解碼算法。Kaldi 的主要代碼由C++語(yǔ)言編寫,在此基礎(chǔ)上使用bash 和python 腳本做了一些工具,比較適合移植到嵌入式設(shè)備當(dāng)中。此外,Kaldi 開源社區(qū)相對(duì)于其他開源社區(qū)更加活躍,可以更高效地得到技術(shù)反饋。因此,Kaldi 是物聯(lián)網(wǎng)應(yīng)用的較好選擇。
Kaldi 的框架如圖2 所示,最上面是外部的工具,包括線性代數(shù)庫(kù)BLAS/LAPACK 和OpenFst。中間是Kaldi 的庫(kù),包括HMM 和GMM 等代碼,接下來(lái)是可執(zhí)行程序,最下面則是一組腳本,用于實(shí)現(xiàn)語(yǔ)音識(shí)別的不同步驟(比如特征提取、訓(xùn)練單因子模型等)。
圖2 Kaldi 框架圖
以前常用的聲學(xué)模型是GMM-HMM 模型,由于建模能力有限,無(wú)法準(zhǔn)確地表征語(yǔ)音內(nèi)部復(fù)雜的結(jié)構(gòu),因此識(shí)別率低。Kaldi 支持DNN-HMM 聲學(xué)模型。相比于GMM-HMM 模型,DNN-HMM 模型加入了深度學(xué)習(xí)模型,不需要假設(shè)聲學(xué)特征所服從的分布,所使用的特征是FBank,這個(gè)特征保持著相關(guān)性。為了充分利用上下文的信息,深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)采用連續(xù)的拼接幀作為輸入[4]。本文采用DNN-HMM 模型,在服務(wù)器中訓(xùn)練好之后,將DNN-HMM 模型移植到G1 平臺(tái)中。
本文采用煊揚(yáng)G1 的嵌入式處理器作為硬件平臺(tái)。G1 是輕型AIoT 雙核芯片,內(nèi)置了一顆音頻編解碼器,是作為離線語(yǔ)音識(shí)別平臺(tái)的較好選擇。語(yǔ)音識(shí)別模型需要在服務(wù)器中訓(xùn)練好之后移植到G1平臺(tái)中?;贕1 的語(yǔ)音識(shí)別框架如圖3 所示。
圖3 基于G1 芯片的智能語(yǔ)音識(shí)別框架圖
在實(shí)現(xiàn)中,將CPU Core0 主要用做麥克風(fēng)數(shù)據(jù)的采集和音頻數(shù)據(jù)的前處理,CPU Core1 運(yùn)行Kaldi 語(yǔ)音識(shí)別套件。CPU Core0 處理完的數(shù)據(jù)是PMD 數(shù)字音頻信號(hào)。將該信號(hào)送給音頻Decoder,然后將解碼后的音頻信號(hào)傳給CPU Core1。CPU Core1 將運(yùn)行Kaldi 語(yǔ)音識(shí)別算法,得到最終的識(shí)別結(jié)果。
基于G1 芯片的智能語(yǔ)音識(shí)別平臺(tái)實(shí)物如圖4 所示。本文將采用風(fēng)扇作為控制對(duì)象,G1 芯片將識(shí)別后的結(jié)果發(fā)送給控制風(fēng)扇的微控制單元(Micro Control Unit,MCU),從而達(dá)到利用語(yǔ)音控制風(fēng)扇的目的。
圖4 基于G1 芯片的智能語(yǔ)音識(shí)別平臺(tái)實(shí)物
在G1 平臺(tái)上完成Kaldi 整套工具移植后,需要對(duì)系統(tǒng)進(jìn)行測(cè)試。本文總共測(cè)試8 條命令,第一條命令為喚醒詞,如表1 所示。由于喚醒詞的識(shí)別率最能影響客戶體驗(yàn),因此針對(duì)喚醒詞在Kaldi 中做了客制化,用來(lái)提升喚醒詞的識(shí)別率。
表1 測(cè)試命令表
本文的測(cè)試方法是:先用PC 錄音工具錄取10個(gè)人的語(yǔ)料,然后用PC 播放器反復(fù)播放語(yǔ)料,來(lái)測(cè)試?yán)^承了Kaldi 套件的G1 平臺(tái)的語(yǔ)音識(shí)別效果。通過(guò)抓取G1 平臺(tái)串口打印的信息,可以計(jì)算總共識(shí)別成功的次數(shù),從而計(jì)算出識(shí)別率。由于聲音的大小直接影響到識(shí)別率,本實(shí)驗(yàn)在PC 中設(shè)置了三種不同的聲音大小,分別為30 dB、50 dB、70 dB。喚醒詞每種聲音大小測(cè)試2 000 次,其他命令各測(cè)試1 000 次。
測(cè)試結(jié)果如表2 所示??梢钥闯?,喚醒詞的識(shí)別率在92.4%以上,其他7 條命令的識(shí)別率大多在85%以上。命令識(shí)別率偏低的原因主要是當(dāng)時(shí)風(fēng)扇正在工作,從麥克風(fēng)采集的語(yǔ)音數(shù)據(jù)具有較大噪音。G1 作為輕型的物聯(lián)網(wǎng)芯片,搭載Kaldi 語(yǔ)音識(shí)別框架,選擇風(fēng)扇作為控制對(duì)象,識(shí)別率能夠達(dá)到85%以上。
表2 Kaldi 智能識(shí)別算法識(shí)別率
本設(shè)計(jì)通過(guò)對(duì)開源智能語(yǔ)音識(shí)別套件Kaldi 的研究,將Kaldi 移植到煊揚(yáng)G1 語(yǔ)音芯片中,將風(fēng)扇作為語(yǔ)音控制對(duì)象,實(shí)現(xiàn)了智能語(yǔ)音離線識(shí)別。經(jīng)過(guò)系統(tǒng)測(cè)試,語(yǔ)音識(shí)別率在85%以上,證明可以滿足日常物聯(lián)網(wǎng)產(chǎn)品需求。
隨著物聯(lián)網(wǎng)芯片性能的逐步加強(qiáng)和5G 通信技術(shù)的普及,加上大數(shù)據(jù)技術(shù)和云計(jì)算技術(shù)的逐漸成熟,在線智能語(yǔ)音識(shí)別運(yùn)用在物聯(lián)網(wǎng)中將會(huì)成為主流[5],識(shí)別率和識(shí)別速度將得到很大提升。如何將智能語(yǔ)音識(shí)別技術(shù)和云計(jì)算、大數(shù)據(jù)技術(shù)融合運(yùn)用,將會(huì)是今后的研究方向。