語音信號處理常識【摘抄|自用】
摘抄自:https://zhuanlan.zhihu.com/p/31193859?utm_source=qq&utm_medium=social【筆記|自用】
專業基礎
算法基礎
聲學機理:
包括發音機理、聽覺機理和語言機理,發音機理主要探討人類發聲器官和這些器官在發聲過程中的作用,而聽覺機理主要探討人類聽覺器官、聽覺神經及其辨別處理聲音的方式,語言機理主要探究人類語言的分布和組織方式。這些知識對於理論突破和模型生成具有重要意義。
信號處理:【任務】
包括語音增強、噪聲抑制、回聲抵消、混響抑制、波束形成、聲源定位、聲源分離、聲源追蹤等。具體如下:
-
語音增強:這裏是狹義定義,指自動增益或者陣列增益,主要是解決拾音距離的問題,自動增益一般會增加所有信號能量,而語音增強只增加有效語音信號的能量。
-
噪聲抑制:語音識別不需要完全去除噪聲,相對來說通話系統中則必須完全去除噪聲。這裏說的噪聲一般指環境噪聲,比如空調噪聲,這類噪聲通常不具有空間指向性,能量也不是特別大,不會掩蓋正常的語音,只是影響了語音的清晰度和可懂度。這種方法不適合強噪聲環境下的處理,但是足以應付日常場景的語音交互。
-
混響消除:混響消除的效果很大程度影響了語音識別的效果。一般來說,當聲源停止發聲後,聲波在房間內要經過多次反射和吸收,似乎若幹個聲波混合持續一段時間,這種現象叫做混響。混響會嚴重影響語音信號處理,並且降低測向精度。
-
回聲抵消:嚴格來說,這裏不應該叫回聲,應該叫“自噪聲”。回聲是混響的延伸概念,這兩者的區別就是回聲的時延更長。一般來說,超過100毫秒時延的混響,人類能夠明顯區分出,似乎一個聲音同時出現了兩次,就叫做回聲。實際上,這裏所指的是語音交互設備自己發出的聲音,比如Echo音箱,當播放歌曲的時候若叫Alexa,這時候麥克風陣列實際上采集了正在播放的音樂和用戶所叫的Alexa聲音,顯然語音識別無法識別這兩類聲音。回聲抵消就是要去掉其中的音樂信息而只保留用戶的人聲,之所以叫回聲抵消,只是延續大家的習慣,其實是不恰當的。
-
聲源測向:這裏沒有用聲源定位,測向和定位是不太一樣的,而消費級麥克風陣列做到測向就可以,定位則需要更多的成本投入。聲源測向的主要作用就是偵測到與之對話人類的聲音以便後續的波束形成。聲源測向可以基於能量方法,也可以基於譜估計,陣列也常用TDOA技術。聲源測向一般在語音喚醒階段實現,VAD技術其實就可以包含到這個範疇,也是未來功耗降低的關鍵因素。
-
波束形成:波束形成是通用的信號處理方法,這裏是指將一定幾何結構排列的麥克風陣列的各麥克風輸出信號經過處理(例如加權、時延、求和等)形成空間指向性的方法。波束形成主要是抑制主瓣以外的聲音幹擾,這裏也包括人聲,比如幾個人圍繞Echo談話的時候,Echo只會識別其中一個人的聲音。
端點檢測:
端點檢測,英語是Voice ActivityDetection,簡稱VAD,主要作用是區分一段聲音是有效的語音信號還是非語音信號。VAD是語音識別中檢測句子之間停頓的主要方法,同時也是低功耗所需要考慮的重要因素。VAD通常都用信號處理的方法來做,之所以這裏單獨劃分,因為現在VAD的作用其實更加重要,而且通常VAD也會基於機器學習的方法來做。
特征提取:
聲學模型通常不能直接處理聲音的原始數據,這就需要把時域的聲音原始信號通過某類方法提取出固定的特征序列,然後將這些序列輸入到聲學模型。事實上深度學習訓練的模型不會脫離物理的規律,只是把幅度、相位、頻率以及各個維度的相關性進行了更多的特征提取。
聲學模型:
聲學模型是語音識別中最為關鍵的部分,是將聲學和計算機學的知識進行整合,以特征提取部分生成的特征作為輸入,並為可變長的特征序列生成聲學模型分數。聲學模型核心要解決特征向量的可變長問題和聲音信號的多變性問題。事實上,每次所提到的語音識別進展,基本上都是指聲學模型的進展。聲學模型叠代這麽多年,已經有很多模型,我們把每個階段應用最為廣泛的模型介紹一下,其實現在很多模型都是在混用,這樣可以利用各個模型的優勢,對於場景的適配更加魯棒。
-
GMM,Gaussian Mixture Model,即高斯混合模型,是基於傅立葉頻譜語音特征的統計模型,可以通過不斷叠代優化求取GMM中的加權系數及各個高斯函數的均值與方差。GMM模型訓練速度較快,聲學模型參數量小,適合離線終端應用。深度學習應用到語音識別之前,GMM-HMM混合模型一直都是優秀的語音識別模型。但是GMM不能有效對非線性或近似非線性的數據進行建模,很難利用語境的信息,擴展模型比較困難。
-
HMM,Hidden Markov Model,即隱馬爾可夫模型,用來描述一個含有隱含未知參數的馬爾可夫過程,從可觀察的參數中確定該過程的隱含參數,然後利用這些參數來進一步分析。HMM是一種可以估計語音聲學序列數據的統計學分布模型,尤其是時間特征,但是這些時間特征依賴於HMM的時間獨立性假設,這樣對語速、口音等因素與聲學特征就很難關聯起來。HMM還有很多擴展的模型,但是大部分還只適應於小詞匯量的語音識別,大規模語音識別仍然非常困難。
-
DNN,Deep Neural Network,即深度神經網絡,是較早用於聲學模型的神經網絡,DNN可以提高基於高斯混合模型的數據表示的效率,特別是DNN-HMM混合模型大幅度地提升了語音識別率。由於DNN-HMM只需要有限的訓練成本便可得到較高的語音識別率,目前仍然是語音識別工業領域常用的聲學模型。
-
RNN,Recurrent Neural Networks,即循環神經網絡,CNN,Convolutional NeuralNetworks,即卷積神經網絡,這兩種神經網絡在語音識別領域的應用,主要是解決如何利用可變長度語境信息的問題,CNN/RNN比DNN在語速魯棒性方面表現的更好一些。其中,
-
-
RNN模型主要包括LSTM(多隱層長短時記憶網絡)、highway LSTM、Residual LSTM、雙向LSTM等。
-
CNN模型包括了時延神經網絡(TDNN)、CNN-DNN、CNN-LSTM-DNN(CLDNN)、CNN-DNN-LSTM、Deep CNN等。其中有些模型性能相近,但是應用方式不同,比如雙向LSTM和Deep CNN性能接近,但是雙向LSTM需要等一句話結束才能識別,而Deep CNN則沒有時延更適合實時語音識別。
-
語音識別數據知識
數據采集:主要是將用戶與機器對話的聲音信息收集起來,一般分為近場和遠場兩個部分,近場采集一般基於手機就可完成,遠場采集一般需要麥克風陣列。數據采集同時還有關註采集環境,針對不同數據用途,語音采集的要求也很不一樣,比如人群的年齡分布、性別分布和地域分布等。
數據清洗:主要是將采集的數據進行預處理,剔除不合要求的語音甚至是失效的語音,為後面的數據標註提供精確的數據。
數據標註:主要是將聲音的信息翻譯成對應的文字,訓練一個聲學模型,通常要標註數萬個小時,而語音是時序信號,所以需要的人力工時相對很多,同時由於人員疲憊等因素導致標註的錯誤率也比較高。如何提高數據標註的成功率也是語音識別的關鍵問題。
數據管理:主要是對標註數據的分類管理和整理,這樣更利於數據的有效管理和重復利用。
數據安全:主要是對聲音數據進行安全方便的處理,比如加密等,以避免敏感信息泄露。
語音識別開源平臺
目前主流的開源平臺包括CMU Sphinx、HTK、Kaldi、Julius、iATROS、CNTK、TensorFlow等,CMU Sphinx是離線的語音識別工具,支持DSP等低功耗的離線應用場景。由於深度學習對於語音識別WER的下降具有明顯的作用,所以Kaldi、CNTK、TensorFlow等支持深度學習的工具目前比較流行,Kaldi的優勢就是集成了很多語音識別的工具,包括解碼搜索等。具體的開源平臺匯總如表1所示。
語音信號處理常識【摘抄|自用】