語音識別流程梳理

2021-02-14 搜狗測試

語音識別(speech recognition)技術,也被稱為自動語音識別(英語:Automatic Speech Recognition, ASR)、電腦語音識別(英語:Computer Speech Recognition)或是語音轉文本識別(英語:Speech To Text, STT),其目標是以電腦自動將人類的語音內容轉換為相應的文字。

搜狗知音引擎是搜狗公司自主研發的一項專注於自然交互的智能語音技術,該技術集合了語音識別、語義理解、語音交互、以及提供服務等多項功能。最近小編參與了語音相關項目的測試工作,測試中對語音識別的相關概念和原理有了深入了解,本文將對語音識別的流程進行展開講解。

語音識別流程

語音識別流程,就是將一段語音信號轉換成相對應的文本信息的過程,它主要包含語音輸入、VAD端點檢測、特徵提取、聲學模型、語言模型以及字典與解碼幾個部分。

以搜狗語音識別技術流程為例,語音信號經過前端信號處理、端點檢測等處理後,逐幀提取語音特徵,傳統的特徵類型包括MFCC、PLP、FBANK等特徵,提取好的特徵送至解碼器,在聲學模型、語言模型以及發音詞典的共同指導下,找到最為匹配的詞序列作為識別結果輸出,整體語音識別系統的流程如下:

語音識別的核心公式為:

其中,聲學模型主要描述發音模型下特徵的似然概率,語言模型主要描述詞間的連接概率;發音詞典主要是完成詞和音之間的轉換。

接下來,將針對語音識別流程中的各個部分展開介紹。

VAD端點檢測

語音識別開始之前,需要先對音頻信息進行預處理,預處理過程主要包括端點檢測和特徵提取。

端點檢測,也叫語音活動檢測(Voice Activity Detection,VAD),它的目的是對語音和非語音的區域進行區分。端點就是靜音和有效語音信號變化臨界點,端點檢測就是為了從帶有噪聲的語音中準確的定位出語音的開始點和結束點,去掉靜音的部分,去掉噪聲的部分,找到一段語音真正有效的內容。

VAD檢測主要包括2個方面:特徵參數與判決算法。

常用的特徵參數有五類,分別是基於能量、頻域、倒譜、諧波、長時特徵;

其中基於能量的VAD是檢測信號的強度,並且假設語音能量大於背景噪聲能量,這樣當能量大於某一門限時,可以認為有語音存在;

頻域特徵,通過STFT將時域信號變成頻域信號,即使在SNR到0dB時,一些頻帶的長時包絡還是可以區分語音和噪聲;

倒譜特徵,對於VAD,能量倒譜峰值確定了語音信號的基頻(pitch),也有使用MFCC做為特徵的;

基於諧波的特徵:語音的一個明顯特徵是包含了基頻 F0 及其多個諧波頻率,即使在強噪聲場景,諧波這一特徵也是存在的。可以使用自相關的方法找到基頻;

長時特徵:語音是非穩態信號。普通語速通常每秒發出10~15個音素,音素見的譜分布是不一樣的,這就導致了隨著時間變化語音統計特性也是變化的。另一方面,日常的絕大多數噪聲是穩態的(變化比較慢的),如白噪聲/機器噪聲。

VAD的判決算法也多種多樣,如門限算法、統計模型方法、機器學習方法等。

實際上,一方面需要對每個語音幀的幀內信息進行判決;另一方面由於語音幀之間有很強的相關性,相鄰幀的信息對當前幀的影響也應該被關注。

VAD 作為整個流程的最前端,端點檢測處理得好,不僅將處理的時間序列變小,還能消除無聲段道噪聲。

特徵提取

特徵提取是通過將語音波形以相對最小的數據速率轉換為參數表示形式進行後續處理和分析來實現的,MFCC(Mel Frequency Cepstral Coefficents)是一種在自動語音和說話人識別中廣泛使用的特徵。

下圖是MFCC特徵提取的整個過程,下面將一一介紹特徵提取過程每一步的作用:      預加重

在音頻錄製過程中,高頻信號更容易衰減,而像元音等一些因素的發音包含了較多的高頻信號的成分,高頻信號的丟失,可能會導致音素的共振峰並不明顯,使得聲學模型對這些音素的建模能力不強。預加重是個一階高通濾波器,可以提高信號高頻部分的能量

分幀

語音信號是一個非穩態的、時變的信號。但在短時間範圍內可以認為語音信號是穩態的、時不變的。這個短時間一般取10-30ms,因此在進行語音信號處理時,為減少語音信號整體的非穩態、時變的影響,從而對語音信號進行分段處理,其中每一段稱為一幀,幀長一般取25ms。為了使幀與幀之間平滑過渡,保持其連續性,分幀一般採用交疊分段的方法,保證相鄰兩幀相互重疊一部分。相鄰兩幀的起始位置的時間差稱為幀移,我們一般在使用中幀移取值為10ms。

加窗

因為後面會對信號做FFT,而FFT變換的要求為:信號要麼從-∞到+∞,要麼為周期信號。現實世界中,不可能採集時間從 -∞ 到 +∞ 的信號,只能是有限時間長度的信號。由於分幀後的信號是非周期的,進行 FFT 變換之後會有頻率洩露的問題發生,為了將這個洩漏誤差減少到最小程度(注意我說是的減少,而不是消除),我們需要使用加權函數,也叫窗函數。加窗主要是為了使時域信號似乎更好地滿足 FFT 處理的周期性要求,減少洩漏。

DFT

離散傅立葉變換(Discrete Fourier Transform,縮寫為 DFT),將每個窗口內的數據從時域信號轉為頻域信號。

梅爾濾波器組

從 FFT 出來的結果是每個頻帶上面的幅值,然而人類對不同頻率語音有不同的感知能力:對1kHz以下,與頻率成線性關係,對1kHz以上,與頻率成對數關係。頻率越高,感知能力就越差。在Mel頻域內,人的感知能力為線性關係,如果兩段語音的Mel頻率差兩倍,則人在感知上也差兩倍。

梅爾濾波器組將梅爾域上每個三角濾波器的起始、中間和截止頻率轉換線性頻率域,並對 DFT 之後的譜特徵進行濾波,再進行 log 操作,得到Fbank(Filter Bank)特徵。

IDFT

FBank 特徵的頻譜圖如下圖所示,圖中四個紅點表示的是共振峰,是頻譜圖的主要頻率,在語音識別中,根據共振峰來區分不同的音素(phone),所以我們可以把圖中紅線表示的特徵提取出來就行,移除藍色的影響部分。其中紅色平滑曲線將各個共振峰連接起來,這條紅線,稱為譜包絡(Spectral Envelope),藍色上下震蕩比較多的線條稱為譜細節(Spectral details)。這個過程是通過逆離散傅立葉變換(IDFT,Inverse Discrete Fourier Transform)實現的。

聲學模型

聲學模型(Acoustic model)是語音識別系統中最為重要的部分之一,利用了聲學、語音學、環境特性以及說話人性別口音等信息,對語音進行建模。

聲學模型可以理解為是對發聲的建模,它能夠把語音輸入轉換成聲學表示的輸出,更準確的說是給出語音屬於某個聲學符號的概率。在英文中這個聲學符號可以是音節或者更小的顆粒度音素(phone),在中文中這個聲學符號可以是聲韻母或者是顆粒度同英文一樣小的音素。

比較經典的聲學建模模型為隱馬爾科夫模型(Hidden Markov Model,HMM)。隱馬爾可夫模型是一個離散時域有限狀態自動機,這一馬爾可夫模型的內部狀態外界不可見,外界只能看到各個時刻的輸出值。對語音識別系統,輸出值通常就是從各個幀計算而得的聲學特徵。

近年來,隨著深度學習的興起,使用了接近30年的語音識別聲學模型HMM(隱馬爾科夫模型)逐漸被DNN(泛指深度神經網絡)所替代,模型精度也有了突飛猛進的變化,整體來看聲學建模技術從建模單元、模型結構、建模流程等三個維度都有了比較明顯的變化,如圖所示:

下圖為DNN-HMM混合建模框架,DNN的輸入是傳統的語音波形經過加窗、分幀,然後提取出來的頻譜特徵,如MFCC、PLP或更底層的濾波器組(filter bank,FBK)聲學特徵等。輸入特徵使用了在當前幀左右拼幀的方式來實現模型對時序信號長時相關性的建模,可以更好地利用上下文的信息;模型輸出則保持了GMM-HMM經常使用的trihone共享狀態(senone)。

如下圖為各種聲學模型對識別結果(字錯率)的影響,選擇合適的聲學模型是語音識別最核心的關鍵之一。

語言模型

語言模型表示某一字序列發生的概率,是對一組字序列構成的知識表示。它的作用之一為消解多音字的問題,在聲學模型給出發音序列之後,從候選的文字序列中找出概率最大的字符串序列。

語音識別中常用的語言模型是N元文法(N-Gram),即統計前後N個字出現的概率。N 元文法假定某一個字出現的概率僅與前面 N-1 個字出現的概率有關係。N-Gram模型中的N越大,需要的訓練數據就越多。一般的語音識別系統可以做到trigram(N=3)。

語言模型還會對聲學的解碼作約束和重打分,讓最終識別結果符合語法規則。目前最常見的是N-Gram語言模型和基於RNN的語言模型。

字典

語音識別中的字典,就是發音字典,是字詞對應的音素index集合,是字詞和音素之間的映射。中文中就是拼音與漢字的對應,英文中就是音標與單詞的對應,其目的是根據聲學模型識別出來的音素,來找到對應的漢字(詞)或者單詞,用來在聲學模型和語言模型建立橋梁,將兩者聯繫起來。

發音字典的形式舉例如下:

解碼器

解碼器模塊主要完成的工作是,給定輸入特徵序列的情況下,在由聲學模型、發音詞典和語言模型等知識源組成的搜索空間(Search Space)中,通過一定的搜索算法,尋找使概率最大的詞序列。

它的核心公式:

在解碼過程中,各種解碼器的具體實現可以是不同的。按搜索空間的構成方式來分,有動態編譯和靜態編譯兩種方式。根據應用場景不同,可以分為在線解碼器(在伺服器端解碼) 、離線解碼器(在設備端解碼)、二遍解碼器、喚醒解碼器、固定句式解碼器。根據技術分類,可以分為基於lexicon tree的解碼器、基於WFST的解碼器、基於lattice rescore的解碼器等。

總結

以上是小編對語音識別整個流程的初步調研分享,如有不足之處請大家多指教,待後續更深入了解後再分享給大家。

文章參考:

主流聲學模型對比https://cloud.tencent.com/developer/article/1451421

語音識別之特徵提取https://zhuanlan.zhihu.com/p/147386972

語音識別之解碼器技術簡介https://zhuanlan.zhihu.com/p/23648888

本次就先記錄這麼多,下一次再見。

希望大家能有所收穫,一起進步、互相學習!

搜狗測試微信號:Qa_xiaoming

搜狗測試QQ粉絲群:459645679

相關焦點

  • ASR(語音識別)評測學習
    希望對測試小夥伴有所幫助~~(●—●)1、語音識別(Automatic Speech Recognition,ASR)語音識別,也被稱自動語音識別,所要解決的問題是讓機器能夠「聽懂」人類的語音,將語音中包含的文字信息「提取」出來,相當於給機器安裝上「耳朵」,使其具備「能聽」的功能。
  • 一文看懂語音識別
    語音識別是什麼?他有什麼價值,以及他的技術原理是什麼?本文將解答大家對語音識別的常見疑問。語音識別技術(ASR)是什麼?機器要與人實現對話,那就需要實現三步:語音識別已經成為了一種很常見的技術,大家在日常生活中經常會用到:蘋果的用戶肯定都體驗過 Siri ,就是典型的語音識別微信裡有一個功能是」文字語音轉文字」,也利用了語音識別最近流行的智能音箱就是以語音識別為核心的產品
  • 語音識別技術概述
    (Speech Recognition)是以語音為研究對象,通過語音信號處理和模式識別讓機器自動識別和理解人類的語音。語音識別的輸入與輸出如圖1所示。將語音片段輸入轉化為文本輸出的過程就是語音識別。一個完整的語音識別系統通常包括信息處理和特徵提取、聲學模型、語言模型和解碼搜索四個模塊。一個典型的語音識別系統如圖2所示。
  • 什麼是自動語音識別?
    自動語音識別(ASR)是一種將口語轉換為文本的過程。該技術正在不斷應用於即時通訊應用程式、搜尋引擎、車載系統和家庭自動化中。儘管所有這些系統都依賴於略有不同的技術流程,但這些所有系統的第一步都是相同的:捕獲語音數據並將其轉換為機器可讀的文本。
  • 【C/Python】單詞語音識別-牛刀小試
    今天筆者簡單的實現了一下單詞的語音識別器,在訓練集(1060 個樣本)上,錯誤率壓到 1.2%,一學期的努力算是有了一個交代。        注意項目用 Python 3.5.x 和 C 語言開發,開發環境是 Visual Studio 2017。本項目主要參考 HTK 語音識別包,但中間掉進不少的坑,讀者參考 HTK 時也需謹慎。
  • 語音識別技術簡史
    語音識別的精度和速度取決於實際應用環境,但在安靜環境、標準口音、常見詞彙場景下的語音識別率已經超過 95%,意味著具備了與人類相仿的語言識別能力,而這也是語音識別技術當前發展比較火熱的原因。隨著技術的發展,現在口音、方言、噪聲等場景下的語音識別也達到了可用狀態,特別是遠場語音識別已經隨著智能音箱的興起成為全球消費電子領域應用最為成功的技術之一。
  • 語音識別的技術原理是什麼?
    漢語一般直接用全部聲母和韻母作為音素集,另外漢語識別還分有調無調,不詳述。狀態:這裡理解成比音素更細緻的語音單位就行啦。通常把一個音素劃分成3個狀態。語音識別是怎麼工作的呢?實際上一點都不神秘,無非是:把幀識別成狀態(難點)。把狀態組合成音素。把音素組合成單詞。如下圖所示:
  • 一文讀懂,語音互動設計流程
    隨著智能音箱的迅速發展,大家對智能語音產品的需求也變得越來越多,本文給大家詳解語音互動設計的全流程,一起來看看~VUI的第一個時期20世紀50年代,貝爾實驗室建立了一個單人語音數字系統;20世紀90年代,誕生了第一個可行的非特定人的語音識別系統。交互式語音應答IVR系統的出現,代表了VUI的以一個重要時期。2. VUI的第二個時期也就是我們現在所處的的時期。
  • 三星S8折戟語音識別 智能機AI化仍任重道遠
    摘要: 在語音識別上折戟的三星S8,何時才能正式進入AI陣營?國內方面,語音識別更是是炒得很熱,科大訊飛、出門問問等一些列語音識別技術提供商,錘子等四線手機廠商也已經開始引入語音識別技術。不止智慧型手機領域,今年發布的眾多智能電視無一例外不引進語音識別技術。那麼,問題來了:科技巨頭強如三星為何就遲遲未推出語音識別技術那?三星S8好不容易搭配語音識別技術,可為什麼還是個預覽版的那?在語音識別上折戟的三星S8,何時才能正式進入AI陣營?
  • 語音識別技術
    什麼叫自然語音交互,為什麼喚醒詞都需要四個字以上,為什麼方言也能識別,喚醒詞和後面的語音識別有什麼區別,這期的內容給你精彩答案。以下是機哥在做可科大訊飛研究報告中的PPT內容,可以看到科大訊飛的核心技術就在於語音識別、語義理解、自然語音理解、機器翻譯、聲紋識別,其實在應用上的領域就比較好理解,比如智能可穿戴設備,智慧機器人,智慧型手機上的語音識別,最初級的應用就是語音識別,比如在法庭上的庭審記錄直接就可以把語音轉換為文字作為記錄,省去很大一部分的人力時間提升人工效率,智能語音客服可以回答80%左右的用戶問題等等
  • 語音是如何變為文字的?詳解語音識別技術原理
    漢語一般直接用全部聲母和韻母作為音素集,另外漢語識別還分有調無調,不詳述。狀態:這裡理解成比音素更細緻的語音單位就行啦。通常把一個音素劃分成3個狀態。語音識別是怎麼工作的呢?實際上一點都不神秘,無非是:把幀識別成狀態(難點)。把狀態組合成音素。把音素組合成單詞。如下圖所示:
  • 實測:語音識別大用處!語音轉文字讓學習更高效
    語音識別,大家都知道是讓機器聽懂人類說的話,從而達到某種需求、目的。當然這是大方面的,小方面的還有語音識別的語音轉文字方面,同樣是讓機器聽懂我們的話,但表現方式不一樣,讓語音轉文字功能有很大用處。小科的哥哥是安醫大學校的研究生,他就告訴我自己在使用語音轉文字的工具,還是他的導師推薦的!導師習慣記一下實驗記錄,但手跟不上腦袋裡的想法,或者實驗流程,所以找到了語音轉文字的工具,幫助自己快速記錄。後來很多同學都在用,尤其是上課的時候,大家基本的都不在記筆記,都是拿著手機放在那,錄下音,課後整理音頻文件,再生成筆記。
  • 基於聲紋識別的通用語音控制系統設計
    1.2.編寫目的進入21世紀以來,隨著科學技術的突飛進展,語音識別與確認技術也逐漸的走向成熟,基於語音識別技術的對話控制系統受到了越來越多的關注。直接用聲音來發出控制指令,讓機器能「聽懂」你的話,執行相應的命令。
  • 語音識別算法有哪些_語音識別特徵提取方法
    語音識別算法有哪些_語音識別特徵提取方法 網絡整理 發表於 2020-04-01 09:24:49   語音識別算法有哪些   本文列舉了幾種不同的語音識別算法
  • 專注E2E語音識別,騰訊AILab開源語音處理工具包PIKA
    機器之心報導作者:魔王、杜偉PyTorch + Kaldi,騰訊 AI Lab 開源輕量級語音處理工具包 PIKA,專注於端到端語音識別任務。Kaldi 是一個開源的語音識別系統,由 Daniel Povey 主導開發,在很多語音識別測試和應用中廣泛使用。
  • 依圖做語音了!識別精度創中文語音識別新高點
    「作為語音行業的『新生』,我們還是有很多向『老生』學習的地方,但我們立志推動行業創新與發展,做世界最好的中文普通話語音識別技術。」智能語音競爭還未開始,依圖要做世界最好的中文語音識別萬物互聯,語音為先。語音識別是AI理解世界最重要的組成部分,也是AI能聽會說善理解的必要條件。
  • 打人工客服電話也用上了語音識別
    語音識別功能只做了一半,需要先按鍵後說話。想來是打人工客服的人太多了,公司提高了打入門檻。如果是一個接訂單的電話,說什麼也要把0按鍵進入人工客服這個功能保留下來。我想以後也會有更多的公司熱線電話用上語音識別功能,不妨告訴他人怎麼打人工客服電話。最後,關注我,帶你梳理更多IT知識。
  • 語音識別的痛點在哪,從交互到精準識別如何做? | 雷鋒網公開課
    語音識別是目前應用最成熟的人機互動方式,從最初大家體驗過的有屏手持設備這種近場的語音識別,如Siri以及各種語音助手,到現在,語音識別的應用已經完成了向智能硬體以及機器人上延伸,不過,新的人機互動對硬體、算法要求更加苛刻,各企業正面臨著巨大的挑戰。
  • 語音專題第四講,語音識別之解碼器技術簡介|大牛講堂
    語音識別技術,也被稱為自動語音識別(Automatic Speech Recognition,ASR),其目標是將人類語音中的詞彙內容轉換為計算機可讀的輸入,例如按鍵、二進位編碼或者字符序列。與說話人識別及說話人確認不同,後者嘗試識別或確認發出語音的說話人而非其中所包含的詞彙內容。智能硬體行業的不斷發展,對計算機深度學習能力提出了更大的挑戰。
  • 語音識別技術的發展及難點分析
    語音識別技術的發展 與機器進行語音交流,讓它聽明白你在說什麼。語音識別技術將人類這一曾經的夢想變成了現實。語音識別就好比「機器的聽覺系統」,該技術讓機器通過識別和理解,把語音信號轉變為相應的文本或命令。