国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于深度學(xué)習(xí)的中文語音識別模型設(shè)計與實現(xiàn)

2020-10-13 04:40:52楊煥崢
關(guān)鍵詞:池化層拼音客戶端

楊煥崢

(1.江蘇省無線傳感系統(tǒng)應(yīng)用工程技術(shù)開發(fā)中心,江蘇無錫214153;2.無錫商業(yè)職業(yè)技術(shù)學(xué)院,江蘇無錫214153)

目前,將人工智能與物聯(lián)網(wǎng)相結(jié)合的AIoT(AI 人工智能+IoT 物聯(lián)網(wǎng))模式是一個新的發(fā)展方向,因為深入學(xué)習(xí)需要傳感器采集數(shù)據(jù),物聯(lián)網(wǎng)系統(tǒng)要求人工智能能識別、檢測異常并做出正確預(yù)測。而且,當(dāng)AI與IoT 一體化后,人工智能逐漸向應(yīng)用智能發(fā)展。

深度學(xué)習(xí)在人工智能領(lǐng)域興起,對語音識別技術(shù)產(chǎn)生了重要影響,深層的神經(jīng)網(wǎng)絡(luò)不斷替換了之前的GMM- HMM等傳統(tǒng)語音識別模型。項目建立的語音識別系統(tǒng)聲學(xué)模型使用近似于深度全序列的卷積神經(jīng)網(wǎng)絡(luò)、門控循環(huán)單元[1],語音信號特征提取不采用常規(guī)方法而直接采用頻譜圖作為模型輸入,參考圖像識別中的最佳網(wǎng)絡(luò)配置模型深度卷積神經(jīng)網(wǎng)絡(luò)VGG,可以看到較長的時間關(guān)聯(lián)信息,與RNN(Recurrent Newtral Network,循環(huán)神經(jīng)網(wǎng)絡(luò))相比,具有更好的魯棒性。在輸出端,可以與連接時間序列分類(CTC)方案相結(jié)合,實現(xiàn)整個模型從輸入端到輸出端進(jìn)行訓(xùn)練,將聲音波形信號轉(zhuǎn)譯成標(biāo)準(zhǔn)漢語的拼音序列,在語言模型中,拼音序列通過隱馬爾可夫模型(HMM)轉(zhuǎn)換為漢語文本。搭建HTTP 等協(xié)議服務(wù)器,提供語音識別應(yīng)用程序接口API,STM32 MCU 嵌入式客戶端通過Internet 網(wǎng)絡(luò),調(diào)用API 實現(xiàn)語音識別功能。服務(wù)器端使用Python 語言及Keras、TensorFlow 等庫,客戶端使用C 語言進(jìn)行編程。

1 語音特征提取

通過把普通的wav 語音信號經(jīng)分幀、加窗、傅立葉變換、取對數(shù)等手段處理,以形成二維語譜圖像信號(語譜圖、時頻圖)供神經(jīng)網(wǎng)絡(luò)使用。

1.1 獲取語音進(jìn)行數(shù)據(jù)變換

首先,在服務(wù)器上使用Python 語言編寫獲取語音信號的函數(shù),用于打開包含語音信號路徑的文本文件,讀取wav 格式語音文件的列表,并返回存儲列表的字典類型值。其次,編寫獲取語音符號的函數(shù)用于讀取與指定數(shù)據(jù)集內(nèi)包含的wav 文件所映射的語音符號,并得到存儲符號集的字典類型的值。再次,編寫讀取語音數(shù)據(jù)的函數(shù)讀入音頻文件,得到音頻信號的收聽時間與時域頻譜矩陣,編寫獲取頻率特征的函數(shù)對數(shù)據(jù)進(jìn)行分幀化,幀長度為25 毫秒,幀移動10 毫秒,幀添加漢明窗口,并執(zhí)行傅立葉變換,因為結(jié)果數(shù)據(jù)是對稱的,所以可以取一半值使用,形成語譜圖的過程如圖1 所示。

圖1 語音信號經(jīng)變換得到語譜圖過程

1.2 生成神經(jīng)網(wǎng)絡(luò)訓(xùn)練矩陣數(shù)據(jù)

編寫獲取數(shù)據(jù)的函數(shù)來讀入數(shù)據(jù)并得到能夠被用作神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的輸入與輸出值矩陣。首先,將具有wav 特性的矩陣輸入神經(jīng)網(wǎng)絡(luò)。其次,標(biāo)定類別的矩陣作為神經(jīng)網(wǎng)絡(luò)輸出值,提取出每個音頻文件對應(yīng)的拼音標(biāo)簽,打開之前生成的拼音詞典,通過詞典可以將讀取到的拼音標(biāo)簽映射成對應(yīng)的id 序列。編寫獲取符號列表的函數(shù)加載拼音符號列表,編寫符號轉(zhuǎn)數(shù)字的函數(shù)將符號轉(zhuǎn)為數(shù)字。如:準(zhǔn)備辭掉一份工作,將拼音標(biāo)簽['zhun3','bei4','ci2','diao4','yi1','fen4','gong1','zuo4'] 轉(zhuǎn)為[11769 12972 2337 1091 72404 4736 15051 23163]。

2 聲學(xué)模型搭建

搭建語音識別模型,采用近似DFCNN+GRU+CTC 的結(jié)構(gòu),基于Python 語言Keras 框架,參考了VGG 的深度卷積神經(jīng)網(wǎng)絡(luò)被用作訓(xùn)練模型[2]。

2.1 模型概述

首先,執(zhí)行語音信號的時域傅立葉變換以獲得語音信號的語譜圖,被視為具有特定特征的圖像。其次,語譜圖直接用作聲學(xué)模型的輸入,輸出單元對應(yīng)于音節(jié)識別的最終結(jié)果。再次,時間與頻率被視為圖像的兩個維度,通過結(jié)合卷積神經(jīng)網(wǎng)絡(luò)CNN 更多的卷積層和池化層,對整個句子語音進(jìn)行建模。從輸入、模型結(jié)構(gòu)和輸出三個方面分析模型的優(yōu)點:在輸入端,常見的語音識別系統(tǒng)的特征提取方法會在傅立葉變換后使用濾波器組,造成語音信號高頻區(qū)信息的明顯丟失。此外,常見的語音特征提取會使用很大的幀移位來減少計算復(fù)雜度,這樣會對語速較快的語音信號造成時域中的信息丟失[3]。模型以語譜圖為輸入解決了頻域與時域的信息丟失問題。為了提高CNN 的能力,模型結(jié)構(gòu)參考了圖像識別中的最佳網(wǎng)絡(luò)配置VGG[4],為了能夠表現(xiàn)語音信號的時間相關(guān)性,模型積累較多卷積層與池化層,結(jié)合GRU 以看到一段較長的時間信息,具有較強的魯棒性。在輸出端,模型具有靈活性,可以容易地與CTC 方法進(jìn)行集成,從而實現(xiàn)對整個模型端到端的聲學(xué)訓(xùn)練。

2.2 模型框架

定義近似DFCNN+GRU+CTC 的模型,由輸入層、大量卷積與池化層、全連接層、GRU 層、CTC 層、輸出層等組成,如圖2 所示。輸入層:200 維的特征值序列,一條語音數(shù)據(jù)的最大長度設(shè)為1600(大約16 s);卷積與池化層:卷積核大小采用3×3,池化窗口大小采用2×2;全連接層:神經(jīng)元數(shù)量為self.MS_OUTPUT_SIZE,使用softmax 作為激活函數(shù);CTC 層:使用loss 作為損失函數(shù),實現(xiàn)連接性時序多輸出。

圖2 近似DFCNN+GRU+CTC 的語音識別模型圖

Convolution2D 層主要在二維輸入上執(zhí)行滑動窗口卷積運算,MaxPooling2D 層主要對空間域信號使用最大值池化,并且池化層用于得到最大值和局部平均值,Dropout 層用于預(yù)防當(dāng)不斷刷新參數(shù)時發(fā)生過度擬合的情況,隨機(jī)中斷連接某些數(shù)量的輸入神經(jīng)元,Reshape 層用于把輸入shape 轉(zhuǎn)化為特定shape,GRU層進(jìn)行記憶,Dense 層進(jìn)行全連接。L1、L2:一個二維卷積層,包含32 個卷積核,大小為3×3,不使用偏置項,激活函數(shù)為線性整流函數(shù)“ReLU”,補0 策略為“same”,即保留邊界處的卷積結(jié)果,權(quán)值初始化方法為正態(tài)分布初始化方法“he_normal”。L3:一個二維最大池化層,池化窗口大小為2,下采樣因子為“None”,即默認(rèn)值為pool_size,補0 策略為“valid”,即可能舍棄邊上的某些元素。L4、L5:一個二維卷積層,包含64個卷積核,大小為3×3,不使用偏置項,激活函數(shù)為線性整流函數(shù)“ReLU”,補0 策略為“same”,即保留邊界處的卷積結(jié)果,權(quán)值初始化方法為正態(tài)分布初始化方法“he_normal”。L6:一個二維最大池化層,池化窗口大小為2,下采樣因子為 “None”,即默認(rèn)值為pool_size,補0 策略為“valid”,即可能舍棄邊上的某些元素。L7、L8:一個二維卷積層,包含128 個卷積核,大小為3×3,不使用偏置項,激活函數(shù)為線性整流函數(shù)“ReLU”,補0 策略為“same”,即保留邊界處的卷積結(jié)果,權(quán)值初始化方法為正態(tài)分布初始化方法“he_normal”。L9:一個二維最大池化層,池化窗口大小為2,下采樣因子為“None”,即默認(rèn)值為pool_size,補0 策略為“valid”,即可能舍棄邊上的某些元素。L10、L11:一個二維卷積層,包含128 個卷積核,大小為3×3,不使用偏置項,激活函數(shù)為線性整流函數(shù)“ReLU”,補0 策略為“same”,即保留邊界處的卷積結(jié)果,權(quán)值初始化方法為正態(tài)分布初始化方法“he_normal”。L12:一個二維最大池化層,池化窗口大小為1,下采樣因子為 “None”,即默認(rèn)值為pool_size,補0 策略為“valid”,即可能舍棄邊上的某些元素。L13:一個Reshape 層,將輸入轉(zhuǎn)換為200×3200 的feature_map。L14:一個全連接層,輸出維度128,不使用偏置項,激活函數(shù)為線性整流函數(shù)“ReLU”,權(quán)值初始化方法為正態(tài)分布初始化方法“he_normal”。L15:一個門控循環(huán)單元gru1 層,將gru_1a 和gru_1b 相加。一個門控循環(huán)單元gru2 層,將gru_2a 和gru_2b 連接。L16:一個全連接層,輸出維度128,不使用偏置項,激活函數(shù)為線性整流函數(shù)“ReLU”,權(quán)值初始化方法為正態(tài)分布初始化方法“he_normal”。L17:一個全連接層。利用CTC 實現(xiàn)序列學(xué)習(xí),構(gòu)建在神經(jīng)網(wǎng)絡(luò)頂層的損失函數(shù),Keras 目前不支持具有額外參數(shù)的損失函數(shù),所以CTC 損失在lambda 層中實現(xiàn)。聲學(xué)模型初始化,默認(rèn)輸出的拼音的表示大小是1422,即1421 個拼音加1個空白塊,設(shè)置神經(jīng)網(wǎng)絡(luò)最終輸出的每一個字符向量維度的大小及一次訓(xùn)練的batch,標(biāo)簽字符串的最大長度64,音頻長度1600,音頻特性長度200,利用函數(shù)啟動模型訓(xùn)練。

2.3 模型特點

深層的CNN 結(jié)構(gòu)可以提高CTC 語音識別系統(tǒng)的性能。然而,只使用深層CNN 進(jìn)行端到端建模的性能相對較差,因此將CNN 和GRU 的記憶相結(jié)合,并使用3×3 小卷積核提高模型的性能。卷積神經(jīng)網(wǎng)絡(luò)層數(shù)的增加和濾波器數(shù)量的增多將明顯對該模型的建模能力帶來改變,故根據(jù)不同規(guī)模的語音訓(xùn)練數(shù)據(jù)庫,使用不同的深層CNN 模型配置來獲得最佳的性能。語音識別系統(tǒng)聲學(xué)模型的輸出過程,存在許多接連的相同符號。因此,CTC 用于將連接的多個輸出時序序列映射到一個輸出,并且移除靜音分離標(biāo)記,得到最終的實際語音字母符號序列,在CTC 層中,利用loss 作為損耗函數(shù)。

借鑒圖像識別中效果很好的網(wǎng)絡(luò)配置VGG,一方面加深網(wǎng)絡(luò)層數(shù),另一方面為了避免參數(shù)過多,把大型二維卷積核在計算鏈路中變?yōu)閮蓚€連續(xù)的3×3小卷積核,計算次數(shù)大大減少,計算復(fù)雜度降低。例如,把5×5 卷積用兩個連續(xù)的3×3 卷積替換,計算次數(shù)從25 次減少到18 次。并且不是在每個卷積層后面跟上一個池化層,總數(shù)4 個池化層,分布在不同的卷積層之下,而全連接層有3 層。

3 語言模型搭建與語音識別測試

統(tǒng)計語言模型用于將拼音轉(zhuǎn)換為最終文本以輸出,本質(zhì)被建模為隱含馬爾可夫鏈,模型具有較高的精度。當(dāng)傳入的參數(shù)沒有包含任何拼音時,返回為空。先取出一個字,即拼音列表中第一個字,依次從第一個字開始每次連續(xù)取兩個字拼音,如果這個拼音在漢語拼音狀態(tài)轉(zhuǎn)移字典里的話,將第二個字的拼音加入,否則不加入,然后將現(xiàn)有的拼音序列進(jìn)行解碼,再重新從i+1 開始作為第一個拼音。語音解碼開始,如果這個拼音在漢語拼音字典里的話,獲取拼音下屬的字的列表,ls 包含了該拼音對應(yīng)的所有的字。在第一個字中,設(shè)置HMM 的初始狀態(tài)值,將初始概率設(shè)置為1.0,并將其添加到可能的句子列表中,否則,開始處理緊跟在第一個字后面的字。把現(xiàn)有的每一條短語取出來,嘗試按照下一個音可能對應(yīng)的全部的字進(jìn)行組合,取出用于計算的最后兩個字,判斷它們是不是在狀態(tài)轉(zhuǎn)移表里,在當(dāng)前概率上乘轉(zhuǎn)移概率,公式化簡后為第n- 1 和n 個字出現(xiàn)的次數(shù)除以第n- 1 個字出現(xiàn)的次數(shù),大于閾值之后保留,否則丟棄,最后對語言模型初始化。語音數(shù)據(jù)集采用ST- CMDS- 20170001_1- OS 等,對模型加以大數(shù)據(jù)訓(xùn)練后,抽取若干語音數(shù)據(jù)進(jìn)行測試,平均準(zhǔn)確率超過80%,效果較好,如表1 所示。

表1 語音識別測試表

4 語音識別API 服務(wù)器與STM32 MCU 客戶端

使用Python 語言編程實現(xiàn)基于HTTP、TCP/IP 等協(xié)議的語音識別API 互聯(lián)網(wǎng)服務(wù)器,通過將聲學(xué)模型與語言模型連接起來,使用服務(wù)器程序,提供REST API 服務(wù),通過POST 與嵌入式STM32 MCU 客戶端進(jìn)行JSON 數(shù)據(jù)交換[5]??蛻舳税幸壕溜@示、錄音、語音識別API 調(diào)用、通信等功能,STM32 MCU 通過SPI 接口與高性能音頻編解碼VS1053 模塊相連,由VS1053 模塊所接麥克風(fēng)對人的語音進(jìn)行錄音,保存到SD 卡,并通過WiFi 模塊經(jīng)互聯(lián)網(wǎng)上傳到語音識別API 服務(wù)器,服務(wù)器將wav 格式錄音進(jìn)行語音識別后,反饋的中文文本信息通過WiFi 傳輸?shù)絊TM32 MCU 的LCD 屏幕上顯示。VS1053 語音模塊支持PCM 和IMA- ADPCM 算法的wav 音頻錄制,PCM 抽樣聲音數(shù)據(jù)并直接存儲,IMA- ADPCM采用4:1 的數(shù)據(jù)壓縮算法。當(dāng)啟用STM32 MCU 時,先檢測字庫與SD 卡,SD 卡文件根目錄是否有錄音文件夾,按下錄音按鍵VS1053 進(jìn)入錄音過程,松開按鍵會停止錄音并保存該文件,可以在液晶屏上看到錄音文件名和時間,STM32 MCU 由WiFi 模塊經(jīng)互聯(lián)網(wǎng)連接語音識別API 服務(wù)器,上傳錄音文件,然后獲取反饋的中文文本語音識別結(jié)果。

5 小結(jié)

系統(tǒng)算法模型在測試集上已經(jīng)獲得了約80%的語音識別準(zhǔn)確率,通過基于深度學(xué)習(xí)的中文語音識別服務(wù)器端與嵌入式STM32 MCU 客戶端的組合,取得了較好應(yīng)用效果,進(jìn)一步提高聲學(xué)模型訓(xùn)練集的數(shù)據(jù)量,加深DFCNN 層數(shù)以增加語音識別準(zhǔn)確率。服務(wù)器和客戶端的應(yīng)用增加密鑰機(jī)制,采用多個GPU 訓(xùn)練模型,增大語音數(shù)據(jù)庫標(biāo)本,通過使用并行訓(xùn)練解決神經(jīng)網(wǎng)絡(luò)訓(xùn)練效率,使得聲學(xué)模型更加完善。STM32 MCU 客戶端通過互聯(lián)網(wǎng)連接該語音識別模型的服務(wù)器,通過服務(wù)器REST API 給予的標(biāo)準(zhǔn)通信端口,以JSON 數(shù)據(jù)格式發(fā)送語音數(shù)據(jù)給服務(wù)器并接收識別結(jié)果,使得應(yīng)用更加完善。

猜你喜歡
池化層拼音客戶端
卷積神經(jīng)網(wǎng)絡(luò)模型研究分析*
基于卷積神經(jīng)網(wǎng)絡(luò)的紙幣分類與點鈔
基于深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)的人體行為識別研究
科技傳播(2020年6期)2020-05-25 11:07:46
基于全卷積神經(jīng)網(wǎng)絡(luò)的SAR圖像目標(biāo)分類*
縣級臺在突發(fā)事件報道中如何應(yīng)用手機(jī)客戶端
傳媒評論(2018年4期)2018-06-27 08:20:24
孵化垂直頻道:新聞客戶端新策略
傳媒評論(2018年4期)2018-06-27 08:20:16
基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
電子測試(2018年10期)2018-06-26 05:53:34
快樂拼音
快樂拼音
快樂拼音
罗平县| 中阳县| 新丰县| 孝昌县| 张家界市| 巴中市| 吉水县| 吴旗县| 长治市| 广南县| 綦江县| 浦江县| 衡水市| 肥城市| 手机| 白水县| 社会| 兴和县| 邹城市| 长顺县| 九龙坡区| 大姚县| 晴隆县| 海口市| 安化县| 北流市| 吉木乃县| 洪洞县| 乌拉特后旗| 衡阳县| 邮箱| 齐河县| 恭城| 石狮市| 綦江县| 宁河县| 敦煌市| 鹤峰县| 阳江市| 芦山县| 城步|