基于CNN的口音識別分類算法_第1頁
基于CNN的口音識別分類算法_第2頁
基于CNN的口音識別分類算法_第3頁
基于CNN的口音識別分類算法_第4頁
基于CNN的口音識別分類算法_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

摘要PAGE122摘要鑒于聲學特征的唯一性、穩(wěn)定性,依托人工智能、大數(shù)據(jù)和云計算技術的助推,聲紋識別和語音識別技術在對于不同人的口音識別發(fā)揮了重要作用。人類發(fā)聲是一個復雜的生理和物理過程,由語言中心和多個發(fā)聲器官的互動控制。由于發(fā)聲器官的大小和形狀以及大腦的神經(jīng)結構不同,每個人都有獨特的發(fā)聲模式,使得個人的發(fā)聲模式是獨一無二的,個人的聲學特征在一段時間內(nèi)是穩(wěn)定而獨特的。隨著人工智能、大數(shù)據(jù)、云計算等技術的快速發(fā)展,語音識別和語言識別技術的準確性、智能性和速度都有很大提高。這些技術被廣泛應用于公共安全和司法、智能家居、醫(yī)療服務監(jiān)控、遠程辦公和金融領域的身份確認等領域。特別是在非實體案件中,如電信領域的欺詐,語音識別和語音識別技術的發(fā)展確保了證據(jù)的真實性和有效性。如今,中國的語音識別技術發(fā)展迅速,已達到世界領先水平。關鍵詞:聲紋識別技術;語音識別技術;口音識別ABSTRACTInviewoftheuniquenessandstabilityofacousticfeatures,andwiththehelpofartificialintelligence,bigdataandcloudcomputingtechnologies,vocalrecognitionandspeechrecognitiontechnologiesplayanimportantroleintherecognitionofaccentsfordifferentpeople.Humanvocalisationisacomplexphysiologicalandphysicalprocess,controlledbytheinteractionofthespeechcentreandmultiplevocalorgans.Duetothedifferentsizeandshapeofthevocalorgansandtheneuralstructureofthebrain,eachpersonhasauniquevocalpattern,makingindividualvocalpatternsuniqueandindividualacousticcharacteristicsstableanddistinctovertime.Withtherapiddevelopmentoftechnologiessuchasartificialintelligence,bigdataandcloudcomputing,theaccuracy,intelligenceandspeedofspeechrecognitionandlanguagerecognitiontechnologieshaveimprovedsignificantly.Thesetechnologiesarewidelyusedinareassuchaspublicsafetyandjustice,smarthomes,healthcareservicemonitoring,telecommutingandidentityconfirmationinthefinancialsector.Particularlyinnon-substantivecases,suchasfraudintelecommunications,developmentsinspeechrecognitionandvoicerecognitiontechnologyhaveensuredtheauthenticityandvalidityofevidence.Today,China'sspeechrecognitiontechnologyisdevelopingrapidlyandhasreachedaworldleadinglevel.Keywords:voiceprintrecognitiontechnology;speechrecognitiontechnology;accentrecognition;第1章緒論1.1語音識別發(fā)展歷史和基礎1.1.1國外研究

語音識別技術可以追溯到上世紀50年代,最初推出的Audry系統(tǒng)雖然只能識別部分字母,但這卻是技術創(chuàng)新的第一步。通過對語音信號建模問題的解決,動態(tài)線性編程和預測分析技術的應用,從70年代開始的動態(tài)時間正則化技術(DTW)、向量量化(VQ)和隱馬爾科夫模型(HMM)等理論也相繼出現(xiàn)和發(fā)展。80年代起,人工神經(jīng)網(wǎng)絡(ANN)和HMM模型成為了重要算法,為語音識別技術的進一步發(fā)展提供了巨大支持。90年代,隨著語音識別技術在全球范圍內(nèi)得到廣泛部署與應用,許多互聯(lián)網(wǎng)技術公司也開始加入研究和開發(fā)戰(zhàn)線。而進入21世紀,基于語音識別技術的應用已經(jīng)逐漸擴展到即興口語、自然對話和多語言同步翻譯等領域。這個漫長的技術發(fā)展過程表明,技術的突破和創(chuàng)新需要長時間的積累與更新?lián)Q代,并且仍然面臨著許多挑戰(zhàn)和問題。1.1.2國內(nèi)研究語音識別技術在中國已經(jīng)擁有數(shù)十年的發(fā)展歷程,清華大學和中科院等機構設計出的語音識別技術已經(jīng)達到了98%以上的準確率,并且整體識別率也可以控制在10%以下。近年來,隨著深度學習、注意力機制等新方法和算法的引入,語音識別技術不斷提高,應用范圍也不斷擴展。這些技術正在智能音箱、智能客服和智能交通等領域提供更加高效和便捷的服務體驗。從最初以隱馬爾可夫模型(HMM)為基礎的語音識別技術,到如今應用神經(jīng)網(wǎng)絡(NN)和深度神經(jīng)網(wǎng)絡(DNN)等新算法的流行,語音識別技術已經(jīng)得到廣泛運用。隨著互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)和物聯(lián)網(wǎng)的快速發(fā)展,語音交互技術受到了廣泛的關注和應用。特別是在智能語音助手、智能家居、智能汽車、智能醫(yī)療和智能金融系統(tǒng)等領域,這些技術的應用取得了顯著的成果。未來,隨著技術的發(fā)展和應用場景的不斷拓展,語音識別技術將成為人們與計算機互動的最自然、最便捷的方式之一。自動語音識別技術將為人們提供更加智能、高效和人性化的服務,成為實現(xiàn)數(shù)字化生活的重要手段。1.2語音識別簡介語音識別技術作為一種基于人工智能的技術,經(jīng)歷了數(shù)十年的發(fā)展歷程。在深度學習和注意力機制等新算法的引入下,該技術已經(jīng)達到了98%以上的高準確度。如今,語音識別技術已經(jīng)廣泛應用于智能音箱、智能客服、智能交通等領域,進一步提高了服務效率。未來,隨著技術的進一步發(fā)展和應用場景的不斷拓展,語音識別技術將成為數(shù)字化生活中不可或缺的一部分,為人們提供更加智能、高效、人性化的服務。例如,在家庭、手表和智能手機等設備上,通過語音識別技術可以實現(xiàn)語音搜索、語音撥號和語音導航等功能,大大方便了用戶的控制和使用體驗。此外,在醫(yī)療領域和智能交通領域,語音識別技術也可以通過電子病歷、醫(yī)療轉(zhuǎn)錄以及車載娛樂、導航等功能,提高工作效率和駕駛體驗。這一技術未來還將在教育、廣告、金融和安防等領域繼續(xù)拓展應用,為這些領域帶來更多的便利和效率??傊?,語音識別技術將成為實現(xiàn)智能和自然交互的主要方向之一,推動數(shù)字化時代的進一步發(fā)展,為人們的生活和工作帶來更多的便捷和智能體驗。1.3論文構成第1部分主要介紹了聲紋識別和對于口音的分類,以及在國內(nèi)外的發(fā)展情況,以及這一次的設計任務和要求。第2部分為介紹如何進行數(shù)據(jù)的預處理,對聲紋識別和語音識別技術進行了詳細的闡述。第3章為數(shù)據(jù)預處理第4章為如何運用CNN來構建模型第5章為數(shù)據(jù)如何進行預測第6部分對本次設計進行了概括和總結。第2章總體設計2.1數(shù)據(jù)預處理過程Librosa是一款開源的Python包,提供了一系列用于分析音頻信號的工具,包括讀取、處理、轉(zhuǎn)換和可視化等功能。它主要支持的音頻格式包括Wave、mp3、OggVorbis等常見格式,可以方便地進行音頻文件讀取、處理和分析。Librosa依賴于NumPy和SciPy等科學計算庫,可以與matplotlib進行集成,提供了許多可視化函數(shù),便于用戶將分析結果可視化展示出來。除了音頻文件讀取,Librosa還提供了其他強大的功能讀取音頻,讀取音頻時長:語句librosa.get_duration(y=None,sr=8000,S=None,n_fft=2048,hop_length=512,center=True,filename=None)來計算時間序列的持續(xù)時間(單位為秒)。其中:y:音頻時間序列sr:y的音頻采樣率S:STFT矩陣或任何STFT衍生的矩陣(例如,色譜圖或梅爾頻譜圖)n_fft:S的FFT窗口大小hop_length:S列之間的音頻樣本數(shù)center:布爾值,如果為True,則S[:,t]的中心為y[t*hop_length];如果為False,則S[:,t]從y[t*hop_length]開始filename:如果提供,則所有其他參數(shù)都將被忽略,并且持續(xù)時間是直接從音頻文件中計算得出的,返回的是持續(xù)時間(單位為秒)(librosa.get_duration(filename=’path’))2.2聲紋識別和語音識別技術語音識別技術是一種依靠個人語音特征進行身份驗證和識別的生物識別技術。與其他生物識別技術相比,如指紋、虹膜、面部等,語音識別技術具備更為靈活的捕捉方式和更高的處理速度。只要設備配備了麥克風功能,例如監(jiān)控攝像頭或執(zhí)法記錄儀等,就可以輕松地捕獲語音數(shù)據(jù),從而明顯提升遠程識別的準確性和可信度。語音識別技術的發(fā)展經(jīng)歷了三個重要的階段,分別是語音預處理、語音特征提取以及識別算法。在語音預處理階段,主要致力于提高語音質(zhì)量、去除噪聲和干擾;語音特征提取則是從語音信號中提取具有描述人類語音特征的向量;識別算法涵蓋多種不同的方法和算法,旨在進一步提高語音識別的精度和準確性。2.2.1聲紋預處理語音識別是一種利用人的聲音進行生物識別的技術。該技術通過對人的語音進行分析,識別并確認其身份真實性。與指紋識別、虹膜識別和人臉識別等其他識別技術相比,聲紋識別無需任何特殊設備,只需使用帶有麥克風的普通設備就可以方便地進行識別,從而實現(xiàn)了遠程識別的高效性和準確性。聲紋識別技術的開發(fā)和應用主要分為三個步驟,即聲紋預處理、聲紋特征提取和識別方法。聲紋預處理的目的在于提高語音質(zhì)量,降低干擾噪音的影響。聲紋特征提取則是從語音信號中提取可以識別人的特征向量,進一步增強辨識度。識別方法采用多種技術手段來提高識別的精度和速度。2.2.2聲紋特征提取在電信詐騙、毒品制販等案件中,語音識別技術得到廣泛應用,以翻譯和識別嫌疑人的通話內(nèi)容,從而更好地了解通話主題。語音識別技術包含三個重要步驟:語音合成、語音識別和語義理解。其中,語音合成是用來生成相應文本的語音輸出,語音識別則將語音轉(zhuǎn)換成文本,而語義理解則致力于理解語音信號的意義并進行推理分析。這些技術在案件調(diào)查、犯罪預防和打擊犯罪方面發(fā)揮著重要作用。2.2.3聲紋識別作為聲紋識別技術的最后一環(huán),聲紋識別是通過使用不同的模型來辨別說話人的身份。目前常用的聲紋識別方法有:高斯混合通用背景模型(GMM-UBM)、聯(lián)合因子分析(JFA)和神經(jīng)網(wǎng)絡等。這些方法旨在使用聲音信號的特征,如聲音頻率和語音速度等,以確定說話人的身份。其中,高斯混合通用背景模型使用多個高斯分布來建模聲音信號的屬性,而聯(lián)合因子分析則使用統(tǒng)計方法來分析聲音信號的特征。神經(jīng)網(wǎng)絡則通過訓練模型來識別聲音信號的獨特特征并判定說話人的身份。這些方法不僅在聲紋識別領域有應用,也可以在其他領域,如安全、生物識別和人機交互等方面得到廣泛應用。2.3語音識別技術除了語音識別技術外,語音識別技術還被用于電信詐騙、販毒等案件中,對嫌疑人的通話內(nèi)容進行翻譯和理解,以確定通話對象。語音識別技術包括語音合成、語音識別、語義理解等。2.3.1語音合成語音合成方法主要有拼接法[13]和參數(shù)法[14]。拼接法最大限度保留了說話人的原始音色,保留了語義的自然度與清晰度。參數(shù)法通過數(shù)據(jù)構建模型,將文本特征轉(zhuǎn)換為聲學特征,聲碼器根據(jù)聲學模型的輸出重構語音波形[15]。數(shù)據(jù)預處理3.1梅爾倒譜系數(shù)(Mel-scaleFrequencyCepstralCoefficients,簡稱MFCC)。頻譜的語音分析由實驗結果決定。MFCC分析依據(jù)的聽覺機理有兩個:第一梅爾刻度(Melscale):人耳感知的聲音頻率和聲音的實際頻率并不是線性的,有下面公式從頻率轉(zhuǎn)換為梅爾刻度的公式為:=從梅爾回到頻率:式中是以梅爾(Mel)為單位的感知頻域(簡稱梅爾頻域),f是以Hz為單位的實際語音頻率。與f的關系曲線如下圖所示,若能將語音信號的頻域變換為感知頻域中,能更好的模擬聽覺過程的處理。圖3-1第二臨界帶第二臨界帶(CriticalBand):人耳對不同頻率的聲波有不同的敏感性反應。為了更好地模擬人耳的聽覺特性,可以用頻組分析法將聲音分為一系列的頻組。根據(jù)頻率組的大小,從密到疏,設計一系列的帶通濾波器,將輸入信號從低頻到高頻進行過濾。每個帶通濾波器輸出的信號的能量是語音的基本特征,可作為進一步處理的輸入特征。這個參數(shù)不依賴于聲音特性,更對應于人耳的聽覺特性。它具有更大的魯棒性和更好的識別性能,盡管信噪比較低。3.2分幀、加窗對于每個語音幀,需要進行以下處理:首先,計算功率譜并估計周期圖;然后,將融合濾波器組應用于功率譜,確定每個濾波器的能量,將其相加并形成所有濾波器組能量的對數(shù);最后,使用離散余弦變換(DCT)對濾波器組的能量進行處理。這些程序有利于提取語音特征,并能更好地模擬人耳的聽覺特性。通過保留DCT系數(shù)2-13,丟棄其余的,通常可以做得更多,有時可以給每個特征向量分配幀能量。Delta和delta-delta特征也經(jīng)常被加入。提升法通常也被應用于最終的特征。圖3-2MFCC的提取過程3.2.1預處理預處理包括預加重、成幀和開窗等功能。假設我們的語音信號是以8千赫茲采樣的,語音數(shù)據(jù)在這里被捕獲。importnumpyimportscipy.io.wavfilefromscipy.fftpackimportdctsample_rate,signal=scipy.io.wavfile.read('OSR_us_000_0010_8k.wav')signal=signal[0:int(3.5*sample_rate)]#我們只取前3.5s圖3-3

時域中的語音信號1、預加重

(Pre-Emphasis)預失幀濾波器在人聲信號處理中很有用,可以提升高頻信號,平衡頻譜,提高信噪比,并消除發(fā)聲過程中強調(diào)高頻共振峰的影響。預失真是通過高通濾波器來實現(xiàn)的,可以用來對人聲信號進行預處理。其中濾波器系數(shù)通常為0.95或0.97,這里取pre_emphasis=0.97:emphasized_signal=numpy.append(signal[0],signal[1:]-pre_emphasis*signal[:-1])圖3-4

預加重后的時域信號題外話:預加重在現(xiàn)代系統(tǒng)中的影響不大,主要是因為除避免在現(xiàn)代FFT實現(xiàn)中不應成為問題的FFT數(shù)值問題,大多數(shù)預加重濾波器的動機都可以通過均值歸一化來實現(xiàn)(在本文后面討論)。在現(xiàn)代FFT實現(xiàn)中。2、分幀

(Framing)在預加重之后,我們需要將信號分成短時幀。由于語音信號不是同質(zhì)的,對整個信號進行傅里葉變換是沒有意義的。因此,我們把語音信號分成短的幀,通常是20-40毫秒長,例如,通常是25毫秒。我們通常使用8千赫茲的采樣率,因此每一幀的長度為200個樣本。為了避免相鄰幀之間過度不匹配,我們使用幀移來控制幀之間的重疊程度,通常設置為每幀語音的1/2、1/3或50%(+/-10%)。在實踐中,幀移通常被設置為10毫秒。重疊范圍的長度大約是每個語音幀長度的一半,由于采樣率是8kHz,重疊范圍的長度是120個樣本。第一個語音幀從0開始,隨后的幀從80個樣本開始,直到語音文件的結束。如果語音文件的長度不能分成偶數(shù)幀,則用零填充,使之成為一個完整的幀。frame_length,frame_step=frame_size*sample_rate,frame_stride*sample_rate#從秒轉(zhuǎn)換為采樣點signal_length=len(emphasized_signal)frame_length=int(round(frame_length))frame_step=int(round(frame_step))#確保我們至少有1幀num_frames=int(numpy.ceil(float(numpy.abs(signal_length-frame_length))/frame_step))pad_signal_length=num_frames*frame_step+frame_lengthz=numpy.zeros((pad_signal_length-signal_length))pad_signal=numpy.append(emphasized_signal,z)indices=numpy.tile(numpy.arange(0,frame_length),(num_frames,1))+numpy.tile(numpy.arange(0,num_frames*frame_step,frame_step),(frame_length,1)).Tframes=pad_signal[indices.astype(32,copy=False)]3、加窗

(Window)將信號分成多個短時幀后,我們會對每一幀進行窗函數(shù)處理。常用的窗函數(shù)是Hamming窗。這個窗函數(shù)能夠增加幀左右兩端的連續(xù)性,避免出現(xiàn)不連續(xù)的問題,同時也能夠減少頻譜泄漏問題。我們在進行傅里葉變換之前對每一幀信號進行窗函數(shù)處理,以消除傅里葉變換的假設(即數(shù)據(jù)是無限大的情況),同時也減少頻譜泄漏,使得我們得到的頻譜更加準確。Hamming窗的具體形式可以根據(jù)需要進行設計,通常包含一個阻尼部分和一個上升部分,具體形式為一個帶有邊緣存在的窗口函數(shù):式0≤n≤N?1,N是窗口長度,我們這里假設,是窗口長度,我們這里假設,N是窗口長度,我們這里假設a=0.46$圖3-5加窗內(nèi)部實現(xiàn)frames*=numpy.hamming(frame_length)#frames*=0.54-0.46*numpy.cos((2*numpy.pi*n)/(frame_length-1))#內(nèi)部實現(xiàn)二、FFT

(Fourier-Transform)為了更好地觀察信號的特性,我們需要將其從時域轉(zhuǎn)換到頻域上,以此獲取其不同頻率上的能量分布情況。為了實現(xiàn)這一轉(zhuǎn)換,我們需要對分幀加窗后的信號進行N點FFT計算,也稱為短時傅立葉變換(STFT)。通過STFT,我們能夠獲取到每一幀信號在不同頻率上的能量分布情況,這些能量分布能夠代表不同語音的特性,幫助我們更好地進行語音分析和處理,其中N通常為256或512,NFFT=512;mag_frames=numpy.absolute(numpy.fft.rfft(frames,NFFT))#fft的幅度(magnitude)三、功率譜

(PowerSpectrum)為了計算語音信號的頻譜能量,通常采用計算功率譜(即周期圖)的方法。具體來說,對語音信號的頻譜進行二次模式計算,使用對數(shù)或去括號操作,因為在功率譜中,頻率不可能有負值。獲得的頻譜能量代表每個頻率的信號強度,可用于聲音特征提取和信號處理等方面。其中,Xi是信號X的第i幀,這可以用以下幾行來實現(xiàn):pow_frames=((1.0/NFFT)*((mag_frames)**2))四、濾波器組

(FilterBanks)計算Mel濾波器組,將功率譜通過一組Mel刻度(通常取40個濾波器,nfilt=40)的三角濾波器(triangularfilters)來提取頻帶(frequencybands)。梅爾濾波器組與人耳的聽覺感知系統(tǒng)相似,它們的作用是選擇某些頻率成分而忽略其他頻率的信號。梅爾濾波器組在頻率軸上的分布是不均勻的,低頻段的濾波器較多,高頻段的濾波器較少。梅爾濾波器組通常由22-40個三角形濾波器組成,每個都有自己的中心頻率(f(m))和振幅響應。從FFT得到的振幅頻譜與每個濾波器相乘并相加,得到每個濾波器對應的頻段的幀能量值。如果濾波器的數(shù)量是22個,你就可以得到22個能量值。nfilt=40low_freq_mel=0high_freq_mel=(2595*np.log10(1+(sample_rate/2)/700))mel_points=np.linspace(low_freq_mel,high_freq_mel,nfilt+2)hz_points=(700*(10**(mel_points/2595)-1))#將mel頻率再轉(zhuǎn)到hz頻率#bin=sample_rate/2/NFFT/2=sample_rate/NFFT

#每個頻點的頻率數(shù)#bins=hz_points/bin=hz_points*NFFT/sample_rate#hz_points對應第幾個fft頻點bins=np.floor((NFFT+1)*hz_points/sample_rate)fbank=np.zeros((nfilt,int(np.floor(NFFT/2+1))))forminrange(1,nfilt+1):f_m_minus=int(bins[m-1])f_m=int(bins[m])f_m_plus=int(bins[m+1])forkinrange(f_m_minus,f_m):fbank[m-1,k]=(k-bins[m-1])/(bins[m]-bins[m-1])forkinrange(f_m,f_m_plus):fbank[m-1,k]=(bins[m+1]-k)/(bins[m+1]-bins[m])filter_banks=np.dot(pow_frames,fbank.T)filter_banks=np.where(filter_banks==0,np.finfo(float).eps,filter_banks)filter_banks=20*np.log10(filter_banks)#dB五、梅爾頻率倒譜系數(shù)(MFCCs)在計算濾波器組系數(shù)時,這些系數(shù)之間存在著高度的相關性。這可能會給一些機器學習算法帶來問題。為了解決這個問題,可以使用離散余弦變換(DCT)來變換濾波器組系數(shù)。通過這種方式,高度相關的濾波器組系數(shù)被轉(zhuǎn)換為相互獨立的系數(shù),因此更適合用于一些機器學習算法。圖3-6

信號的頻譜圖語音識別需要對濾波器組系數(shù)進行處理并生成壓縮表示。一般而言,我們只保留2-13個倒頻譜系數(shù),而將其他部分剔除。這是因為被剔除的系數(shù)所代表的微小差異對自動語音識別沒有實際作用,反而可能會引入噪聲干擾,從而影響準確性。因此,只保留2-13個倒頻譜系數(shù)可以更好地處理語音信號,并提高自動語音識別的準確度。mfcc=dct(filter_banks,type=2,axis=1,norm='ortho')[:,1:(num_ceps+1)]#保持在2-13為了提高在噪聲環(huán)境下的語音識別準確性,可以使用MFCC正弦提升器(Liftering)進行濾波。該濾波是在倒譜域中實現(xiàn)的,可去除高頻部分的MFCC,增強低頻部分的信息。實踐證明,采用Liftering可以有效改善在噪聲信號中的語音識別效果。需要注意,在譜圖和倒譜圖中應分別使用filtering和liftering兩種方法來完成這種濾波。(nframes,ncoeff)=mfcc.shapen=numpy.arange(ncoeff)lift=1+(cep_lifter/2)*numpy.sin(numpy.pi*n/cep_lifter)mfcc*=lift生成的MFCC:圖3-7

MFCCs六、均值歸一化(MeanNormalization)filter_banks-=(numpy.mean(filter_banks,axis=0)+1e-8)均值歸一化濾波器組:圖3-6

歸一化濾波器數(shù)組同樣對于MFCC:mfcc-=(numpy.mean(mfcc,axis=0)+1e-8)均值歸一化MFCC:圖3-7標準的MFCC

3.3總結本文探討了計算Mel刻度濾波器組和Mel頻率倒譜系數(shù)(MFCC)的過程。在計算FilterBanks和MFCCs時,所有步驟都是基于語音信號的特性和人類感知原理。然而,在計算MFCC時需要進行離散余弦變換(DCT),以去除濾波器組系數(shù)間的相關性,這一步驟也稱為白化。這是由于某些機器學習算法的限制所導致,它們需要對數(shù)據(jù)進行降維和壓縮,以簡化輸入并減少計算成本。尤其是在高斯混合模型-隱馬爾可夫模型(GMMs-HMMs)非常流行時,MFCC與GMM-HMM共同演進成為自動語音識別(ASR)的標準方式。但在深度神經(jīng)網(wǎng)絡應用中,使用FilterBanks和MFCC兩種特征提取方法都有其優(yōu)劣之處。雖然DCT可能會導致信息損失,但從計算量、特征區(qū)分度和信息量等方面來看,MFCC比FilterBanks更具優(yōu)勢。因此,在大多數(shù)語音識別算法中使用MFCC比較流行。然而需要注意的是,在使用對角協(xié)方差矩陣的高斯混合模型時,由于忽略了不同特征維度的相關性,MFCC比較適合用來做特征。而深度神經(jīng)網(wǎng)絡和卷積神經(jīng)網(wǎng)絡則可以更好地利用FilterBanks特征的相關性,并降低損失。隨著神經(jīng)網(wǎng)絡不斷發(fā)展,在當前趨勢下,F(xiàn)ilterBanks特征越來越受到關注和使用。在語音信號處理中,F(xiàn)ilterBanks和MFCC是兩種常用的特征提取方法。它們在深度神經(jīng)網(wǎng)絡和卷積神經(jīng)網(wǎng)絡的應用中都有優(yōu)缺點。盡管MFCC具有信息多、特征區(qū)分度高等優(yōu)勢,但使用高斯混合模型時可能會丟失信息。相較之下,F(xiàn)ilterBanks能更好地利用特征之間的相關性,以降低信息損失。這也使得FilterBanks特征在神經(jīng)網(wǎng)絡的發(fā)展和應用中不斷受到關注和應用。因此,在將來的語音識別算法中,F(xiàn)ilterBanks可能會成為更受歡迎的特征提取方法。需要注意的是,在使用對角協(xié)方差矩陣的高斯混合模型時,MFCC更適合用作特征。第四章模型的構建4.1CNN的優(yōu)點為了應對語音信號中多樣性的挑戰(zhàn),包括說話人和環(huán)境的變化,卷積神經(jīng)網(wǎng)絡(CNN)可以成為解決方案之一。CNN利用時間和空間上的平移不變性,能夠?qū)φZ音時頻譜圖像進行處理,提高識別準確性。與傳統(tǒng)模型相比,CNN具有并行計算和加速技術,可以有效實現(xiàn)大規(guī)模運算。目前通用框架,如Tensorflow和Caffe,都支持CNN的并行加速,為語音識別中的CNN應用提供了良好的支持。在使用CNN進行語音識別時,常見的方法是從淺到深逐漸構建深層卷積網(wǎng)絡,可以更好地優(yōu)化模型。4.1.1CLDNNCLDNN是一種使用廣泛的神經(jīng)網(wǎng)絡模型,它將卷積神經(jīng)網(wǎng)絡(CNN)、長短時記憶網(wǎng)絡(LSTM)和全連接深度神經(jīng)網(wǎng)絡(DNN)相結合。CLDNN采用CNN來降低語音信號的頻域變化,并使用LSTM提供長時記憶,同時通過DNN將特征映射到輸出空間。實驗表明,將CNN提取的更好特征傳遞給LSTM可以提高LSTM的性能,而增加DNN的深度可以提高其預測能力。因此,CLDNN是一種有效的神經(jīng)網(wǎng)絡模型,可用于解決語音識別任務中的模式變化問題。4.1.2CLDNN網(wǎng)絡結構網(wǎng)絡結構圖,假設中心幀為,考慮到內(nèi)容相關性,向左擴展L幀,向右擴展R幀,則輸入特征序列為[,...,],特征向量使用的是40維的log梅爾特征。CLDNN(ConvolutionalLSTMDeepNeuralNetwork)是一種用于語音識別的神經(jīng)網(wǎng)絡結構。它由兩層CNN、2層LSTM和幾層全連接DNN組成。其中,兩層CNN負責對時域和頻域進行建模,而2層LSTM通過長時記憶來提供更好的特征。CNN的輸出特征經(jīng)過線性層降維后作為LSTM的輸入,同時也作為全連接DNN的一部分輸入。這種神經(jīng)網(wǎng)絡適用于處理語音識別任務中的模式變化。作者還嘗試了將CNN的輸入特征作為短時特征直接輸入給LSTM和DNN來提高性能。4.1.3實驗結果我們對中文有噪聲語音數(shù)據(jù)集進行了大量實驗,旨在評估CLDNN結構的效果。所有模型的輸入特征都是由40維fbank特征組成的向量,每10ms一幀。我們使用交叉熵CE準則進行訓練,并設置網(wǎng)絡輸出的狀態(tài)總數(shù)超過2萬個。對于CNN的輸入,我們設定了兩個參數(shù):l和r。我們將r設為0,并通過實驗確定最佳的l值為10。LSTM層共有3層,每層有1024個cell,project層有512個節(jié)點。基于實驗結果,我們微調(diào)了一些CNN+LSTM和CNN+LSTM+DNN的網(wǎng)絡參數(shù)。此外,我們還進行了一組實驗,采用兩層CNN和三層LSTM的組合。實驗結果表明,增加一層LSTM可以提高性能,但繼續(xù)增加LSTM的層數(shù)則對結果沒有提升作用。表SEQ表\*ARABIC1CLDNN實驗結構methodWERLSTM13.8CNN+2層LSTM14.1CNN+3層LSTM13.6CNN+LSTM+DNN13.0LSTM+DNN13.2表SEQ表\*ARABIC2測試集1結果methodWERLSTM21.6CNN+2層LSTM21.8CNN+3層LSTM21.5CNN+LSTM+DNN20.6LSTM+DNNdeepCNN語音識別領域在過去一年中取得了巨大進步,其中深度卷積神經(jīng)網(wǎng)絡是主要的技術趨勢之一。IBM、微軟、百度等多家機構都在這方面做出了積極的探索和研究,并在實驗中獲得了相當顯著的提高。同時,Residual/Highway網(wǎng)絡的出現(xiàn)使得我們能夠訓練更深層的神經(jīng)網(wǎng)絡,這為深度學習在語音識別領域的應用提供了強有力的支持。在采用深度CNN的過程中,有兩種主要的策略。一種是在傳統(tǒng)的HMM框架下,通過基于VGG、Residual連接的CNN或CLDNN結構進行聲學模型設計,以實現(xiàn)更加高效準確的建模;另一種是采用端到端結構,在CTC框架中使用CNN或CLDNN來實現(xiàn)建模,或者是使用最近流行的LowFrameRate和Chain模型等技術來實現(xiàn)粗粒度建模單元,從而進一步提高識別效果。總之,這些技術的不斷發(fā)展和創(chuàng)新,為語音識別的實際應用帶來了更多的可能性和希望。4.1.5總結近兩年來,深度卷積神經(jīng)網(wǎng)絡(CNN)已成為語音識別領域的焦點之一。這一技術的應用已從最初的2-3層淺層網(wǎng)絡發(fā)展到10層以上的深層網(wǎng)絡,證明了該技術在語音識別中的高效性和可行性。同時,CNN的使用范圍也得到了擴充,從傳統(tǒng)的HMM-CNN框架到現(xiàn)在的端到端CTC框架,極大地提升了語音識別的準確性和魯棒性。各大公司在CNN的應用上都取得了令人矚目的成功,集中體現(xiàn)在推出的多個語音識別系統(tǒng)中。這些系統(tǒng)不僅在學術上取得了很大突破,而且在實際應用中也表現(xiàn)得非常優(yōu)秀,其中包括語音助手、智能客服等方面??傊?,深度CNN技術的不斷更新和創(chuàng)新,已經(jīng)成為語音識別領域的重要突破方向之一,并為相關行業(yè)的發(fā)展帶來了更多的機會與挑戰(zhàn)。總結一下,CNN發(fā)展的趨勢大體為:1更加深和復雜的網(wǎng)絡,CNN一般作為網(wǎng)絡的前幾層,可以理解為用CNN提取特征,后面接LSTM或DNN。同時結合多種機制,如attentionmodel、ResNet的技術等。2EndtoEnd的識別系統(tǒng),采用端到端技術CTC,LFR等。3粗粒度的建模單元,趨勢為從state到phone到character,建模單元越來越大。但CNN也有局限性,[2,3]研究表明,卷積神經(jīng)網(wǎng)絡在訓練集或者數(shù)據(jù)差異性較小的任務上幫助最大,對于其他大多數(shù)任務,相對詞錯誤率的下降一般只在2%到3%的范圍內(nèi)。不管怎么說,CNN作為語音識別重要的分支之一,都有著極大的研究價值。4.2模型的構建MFCC的概述在語音識別和話者識別領域,MFCC是最常用的一種語音特征。這是因為人耳對聲音的不同頻段有不同的敏感度,尤其是低頻信號可能會掩蓋高頻信號,這對于精確的語音識別非常關鍵?;谌祟惵犛X模型進行頻譜分析,可以獲得更符合人耳聽覺特性的特征。這是通過使用一組帶通濾波器來濾波輸入信號,并將每個濾波器輸出的能量作為基本特征來實現(xiàn)的。這樣的特征參數(shù)不受信號性質(zhì)影響,不考慮任何假設或限制,并且即使在低信噪比環(huán)境下也具有較好的識別能力。在深度學習系統(tǒng)中,性能的優(yōu)劣主要取決于訓練數(shù)據(jù)、網(wǎng)絡結構、損失函數(shù)和超參數(shù)等四個因素。為了達到最佳性能,需要在這些方面進行合理的選擇和調(diào)整,以充分利用各種資源,提高模型的準確性和魯棒性,從而獲得更加準確和穩(wěn)定的語音識別結果。1、訓練數(shù)據(jù)深度學習中的數(shù)據(jù)是提高模型性能的決定性因素,它的重要性不言而喻。不過,光有大量數(shù)據(jù)是不夠的,還必須確保數(shù)據(jù)的多樣性和可靠性。因此,在選擇訓練數(shù)據(jù)時必須根據(jù)最終應用場景進行精挑細選,這樣才能保證數(shù)據(jù)集能真正反映出實際情境的特征。如果數(shù)據(jù)集樣本過于單一或數(shù)量不足,可能導致模型欠擬合問題。那么怎么辦呢?我們可以采用Boost思想,通過尋找難例來增加數(shù)據(jù)的多樣性,從而提高模型的性能。此外,針對特定場景的應用,專屬的數(shù)據(jù)也變得尤為重要,這些數(shù)據(jù)可以用來進行場景適配、麥克風適配等操作,從而讓模型更貼近實際應用,發(fā)揮更好的效果。2、網(wǎng)絡結構在深度學習中,模型的網(wǎng)絡結構是一項關鍵因素,它直接影響著模型的性能。有些網(wǎng)絡結構如DNN、CLNN、Deepspeech和transformer旨在提高模型的準確性和穩(wěn)健性。然而,這些復雜的網(wǎng)絡結構訓練起來非常困難,需要更多的數(shù)據(jù)和計算資源以及更高級的技巧。對于大多數(shù)人來說,訓練一個最優(yōu)的模型是一項十分艱巨的工作。在這種情況下,預訓練模型則成為了一種非常重要的解決方案,因為它們能夠節(jié)省大量的訓練時間。預訓練模型是在大規(guī)模數(shù)據(jù)集上進行訓練而得到的,這些模型可以作為起點,經(jīng)過微調(diào)之后就可以用于特定的任務,從而提高模型的性能。此外,如果用戶需要限制模型的推理速度或參數(shù)數(shù)量,可以采用一些策略如量化、蒸餾、剪枝等來縮小模型規(guī)模,從而不影響模型的性能,并提高模型的可用性。綜上所述,通過使用預訓練模型和一些有效的策略,我們就可以在不犧牲模型的性能和準確性的前提下,有效地提高模型的可用性和縮小模型規(guī)模。3、3、損失函數(shù)在語音識別任務中,網(wǎng)絡結構類比為一輛車的硬件配置,而損失函數(shù)則類似于導航系統(tǒng)。它指引模型前進的方向,以及選擇最佳路徑以實現(xiàn)目標。交叉熵、CTCloss和RNN-Tloss是常用的損失函數(shù),并且有多種優(yōu)化版本可供選擇。因此,在訓練模型以獲取高準確度和魯棒性的語音識別結果時,精心選擇適合的損失函數(shù)至關重要。4、超參數(shù)超參數(shù)的設置,就是煉丹術最重要的環(huán)節(jié)了。模型的深度/寬度、優(yōu)化器選擇、學習率衰減策略等等。不同的訓練策略不僅僅是影響網(wǎng)絡收斂的速度,也會影響到最后訓練的精度。4.4常用的損失函數(shù)1、交叉熵——crossentropy語音識別算法中,最開始使用的幀級別的標簽,即獲取到FFT后,每一列(25ms)對應的標簽。假設輸入的維度為100x128,在語音識別中,通常會對輸入的聲音數(shù)據(jù)進行FFT,將其轉(zhuǎn)化為一個100x128的矩陣。這個矩陣會分別通過CNN或LSTM模型進行處理,最終輸出的是一個100x39的矩陣,其中每一列分別代表了當前時間幀下,每個音素的得分。接著,我們對每一列的39個得分值進行softmax操作,以獲得每一個音素在當前幀下的概率值。這些概率值組成了新的矩陣y',代表了整段語音中每一幀對每一個音素出現(xiàn)的可能性的預測結果。softmax表達式CEloss的表達式如下所示,其中y的尺寸為batch*T*clsnum,為one-hot的表達形式;y'為前面提到的概率矩陣,其尺寸為batchsize*T*cls_num。CEloss的思想是:y'的值范圍是0~1,所以log(y')的值是負無窮~0,當取負號后,取值范圍就是0~正無窮在語音識別中,用于評估模型預測準確度的常用損失函數(shù)是交叉熵(CEloss)。而CEloss存在一個缺陷,當訓練集包含大量簡單樣本時,難以訓練到復雜的樣本,因為容易被更多正確分類的樣本所掩蓋。為了解決這一問題,改進的focalloss成為一種選擇。focalloss將原先表示真實標簽的y替換為(1-y'),即當某個音素得分越高,則其權重越低,其占比也越低。每個樣本對損失函數(shù)的貢獻也不再是固定的1,而是動態(tài)的(1-y')。這使得得分較低的樣本占比更大,更難訓練的樣本也更易被納入訓練中,因此可以更好地訓練這些難以訓練的樣本。2、CTCloss在語音識別中,交叉熵損失函數(shù)(CEloss)和focalloss都是常用的損失函數(shù),它們的主要優(yōu)點是能幫助網(wǎng)絡更容易地收斂,因此通常用于預訓練模型。然而,這兩種損失函數(shù)需要準確的幀級別標簽,而獲得準確標簽通常需要使用聚類算法等方法,此過程存在精度誤差和較為復雜的操作。然而,由于聚類算法本身存在誤差,因此標簽的精確度可能存在一定程度的誤差,并且獲取幀級別標簽的過程也相對繁瑣。CTCloss就是為了解決這個問題所提出的,其只需要文本形式的標簽即可完成模型訓練。其將時間幀跟音素的對應操作融合在了搜索過程中,通過在解碼空間中訓練最優(yōu)的解碼路徑,實現(xiàn)音素結果的預測。CTCloss的思想是:引入blank符號,用于分割相鄰音素。不需要幀級別的標簽,只需要字符串形式的標簽,比如“thesoundof...”。網(wǎng)絡輸出尺寸為batchsize*T*(clsnum+1),加的這個1就是blank符號,每一列代表每個類別的概率。當前音素的下一個預測結果,只可能是{當前音素、空白符、下一個音素}三個中的一個。所有可能路徑構成的空間,即為解碼空間。實際搜索過程中,往往使用beamsearch算法來減小搜索空間,降低時耗。通過搜索算法,尋找概率最大的一條或幾條路徑(路徑每個節(jié)點概率的乘積),即為最終預測的結果。上圖為CTCloss的表達式,其中(1)式表示某一條路徑的概率積;(2)式表示某一條輸出文字對應所有可能路徑的概率之和;(3)式是CTCloss的表達式,希望對于給定的某一條輸出文字,其所有路徑的概率之和是最大的。所以具體哪個時刻應該對應哪個音素,就是通過優(yōu)化損失函數(shù)讓路徑概率最大來實現(xiàn)的。CTCloss和CEloss的區(qū)別CEloss的標簽是幀級別的標簽,需要知道每一幀對應的音素是什么;CTCloss的標簽是文字需要,不需要知道每一幀對應的音素是什么,訓練得到的輸出矩陣也不是幀級別對齊的矩陣,而是最大化概率得分的矩陣CTCloss有一個條件假設,即標簽之間是相互獨立的。實際情況中這是不可能的,因為有上下文的語義信息。解決方法是在后面跟一個語言模型或者使用RNN-Tloss。4.4構建模型代碼defcnn():

input_layer=layer.Input((mfcc_shape[0],mfcc_shape[1],1))

conv1=layer.Conv2D(64,(3,3),padding="same",strides=(1,1))(input_layer)

act1=layer.Activation('relu')(conv1)

pool1=layer.MaxPool2D((2,2))(act1)

conv3=layer.Conv2D(128,(3,3),padding="same",strides=(1,1))(pool1)

act3=layer.Activation('relu')(conv3)

conv4=layer.Conv2D(128,(3,3),padding="same",strides=(1,1))(act3)

act4=layer.Activation('relu')(conv4)

pool2=layer.MaxPool2D((2,2))(act4)

conv5=layer.Conv2D(256,(3,3),padding="same",strides=(1,1))(pool2)

act5=layer.Activation('relu')(conv5)

conv6=layer.Conv2D(256,(3,3),padding="same",strides=(1,1))(act5)

act6=layer.Activation('relu')(conv6)

pool3=layer.MaxPool2D((2,2))(act6)

conv7=layer.Conv2D(512,(3,3),padding="same",strides=(1,1))(pool3)

act7=layer.Activation('relu')(conv7)

pool4=layer.MaxPool2D((2,2))(act7)

flat=layer.Flatten()(pool4)

dense1=layer.Dense(2000)(flat)

dense2=layer.Dense(800)(dense1)

dense3=layer.Dense(label_num)(dense2)

out=layer.Activation('softmax')(dense3)

model=Model(input_layer,out)

returnmodel

x=np.load("data_x.npy")

y=np.load("data_label.npy")

test_num=30

train_x=np.zeros((label_num*(file_num-test_num),mfcc_shape[0],mfcc_shape[1],1))

test_x=np.zeros((label_num*test_num,mfcc_shape[0],mfcc_shape[1],1))

train_label=np.zeros((label_num*(file_num-test_num),label_num))

test_label=np.zeros((label_num*test_num,label_num))

foriinrange(label_num):train_x[i*(file_num-test_num):(i+1)*(file_num-test_num),:,:,:]=x[i,:file_num-test_num,:,:,:]

test_x[i*test_num:(i+1)*test_num,:,:,:]=x[i,file_num-test_num:file_num,:,:,:]

train_label[i*(file_num-test_num):(i+1)*(file_num-test_num),:]=y[i*file_num:(i+1)*file_num-test_num,:]

test_label[i*test_num:(i+1)*test_num,:]=y[(i+1)*file_num-test_num:(i+1)*file_num,:]

state=np.random.get_state()

np.random.shuffle(train_x)

np.random.set_state(state)

np.random.shuffle(train_label)

state=np.random.get_state()

np.random.shuffle(test_x)

np.random.set_state(state)

np.random.shuffle(test_label)

model=cnn()

model.summary()

opt1=keras

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論