❶ 單通道語音增強之綜述
單通道語音增強是語音信號處理中廣泛研究的課題,主要作為前端去噪模塊應用在提升音質、語音通信、輔助聽覺、語音識別等領域。 單通道語音增強問題定義主要包括兩個方面:
不包括:
單通道語音增強傳統的方法是濾波和統計信號處理,比如WebRTC的雜訊抑制模塊就是用維納濾波。 這些傳統的方法基本都在 《語音增強--理論與實踐》一書中有詳細講解。
近幾年機器學習方法興起,也逐漸成為語音增強的主要研究方向,各種新型神經網路的方法都被嘗試用在語音增強領域。這些新方法主要看近幾年的InterSpeech會議、ICASSP會議和IEEE的期刊。
下面先對單通道語音增強號的基本處咐嘩理步驟做個簡單介紹。
假設麥克風採集到的帶噪語音序列為 ,並且雜訊都是加性雜訊。則帶噪語音序列為無噪語音序列與雜訊序列的和。 原始語音信號與雜訊均可視為隨機信號。
語音信號的處理一般都在頻域,需要對帶噪信號 進行分幀、加窗、短時傅里葉衡凳行變換(STFT)後,得到每一幀的頻域信號,其中X,Y,D分別是干凈語音、帶噪信號和雜訊的頻域信號。
語音增強的目標是對實際信號 的幅度和相位進行估計。但是因為相位不易估計、而且研究表明相位對去噪效果影響比較小cite{wang1982unimportance},所以大部分方法都只對幅度譜進行增強,而相位則沿用帶噪信號的相位。
換句話說,語音增強就是要找出一個頻域的實函數 , 並且將這個函數與帶噪信號相乘,得到干凈語音的估計。這個實函數稱作抑制增益(Suppression Gain)。
下面是單通道語音增強系統主要步驟的示意圖,系統目標就是估計抑制增益,而抑制增益依賴於兩個核心步驟:語音檢測VAD和雜訊估計模塊。只有準確估計雜訊譜 ,才有可能准確估計抑制增益。 詳細的VAD和雜訊估計方法不在這篇文章裡面詳述,具體可以看參考文獻。 一種簡單的想法是先估計出VAD,如過判斷此幀沒有語音,則更新雜訊譜,否則就沿用上一幀的雜訊譜。
綜上,語音增強的典型流程就是:
1 對帶噪語音y[n]分幀, 每一幀進行DFT得到 。
2 利用 進行VAD檢測和雜訊估計。
3 計算抑制增益 。
4 抑制增益 與帶噪信號譜相乘粗握,得到純凈語音譜
5 對 進行IDFT,得到純凈語音序列的估計 。
雜訊估計模塊可以估計雜訊功率,也可以估計信噪比,避免信號幅度變化帶來的誤差。
定義後驗信噪比為,帶噪語音與雜訊功率之比:
定義先驗信噪比,為純凈語音與雜訊功率之比:
譜減法是最直觀的去雜訊思想,就是帶噪信號減去雜訊的頻譜,就等於干凈信號的頻譜。估計信號頻譜的表達式如下,其中 應是雜訊估計模塊得到的雜訊頻譜。
假設語音信號與雜訊不相關,於是得到估計的信號功率譜是測量信號功率譜減去估計的雜訊功率譜。
因此抑制增益函數即為:
維納濾波的思想也很直接,就是將帶噪信號經過線性濾波器變換來逼近原信號,並求均方誤差最小時的線性濾波器參數。維納濾波語音增強的目標就是尋找系數為實數的線性濾波器,使得濾波偶信號與原干凈語音信號之間的均方誤差最小。這是一個優化問題,目標是求使得均方誤差最小的參數
Gain用先驗信噪比表示
見博文 《單通道語音增強之統計信號模型》 。
待補充。
話音激活檢測(Voice Activity Detection, VAD) 將語音幀二分為「純雜訊」和「語音雜訊混合」兩類。 說話人靜音、停頓都會出現多幀的純雜訊,對這些幀無需估計語音信號,而可以用來估計雜訊功率。 語音幀經過VAD分類後,進行不同的處理:
:不含語音幀,更新雜訊功率估計和Gain, 進行抑制;
:包含語音幀,沿用上一幀的雜訊功率和Gain,進行抑制。
語音存在概率SPP(Speech Presence Probability,SPP) 跟VAD作二分類不同,利用統計模型對每一幀估計出一個取值在[0,1]的語音存在概率,也就是一種soft-VAD。 SPP通常跟統計信號模型結合起來估計最終的Gain。
一種估計SPP的方法是根據測量信號 估計每個頻點的語音存在的後驗概率,也就是
。
根據貝葉斯公式:
定義語音不存在的先驗概率 為 , 語音存在的先驗概率 為 。假設雜訊與語音信號為零均值復高斯分布。最終可以得到SPP計算公式:
其中為 為條件信噪比,有 及 。
語音不存在的先驗概率 可以採用經驗值,如0.5,或者進行累加平均, 也可以參考《語音增強—理論與實踐》中更復雜的演算法。
最小值跟蹤發的思想是,雜訊能量比較平穩, 帶語音的片段能量總是大於純雜訊段。 對於每個頻點,跟蹤一段時間內最低的功率,那就是純雜訊的功率。
為了使功率估計更穩定,通常要對功率譜進行平滑處理:
然後尋找當前第 幀的最低功率 。簡單的方法是直接比較前 幀的功率,得到最小值,計算速度較慢。
還有一種方法是對 進行非線性平滑,公式如下。
參數需要調優,可以參考文獻中提供的取值: 、 、 。
這種估計方法的思路是,雜訊的能量變化比語音穩定,因此按頻點統計一段時間內的能量直方圖,每個頻點出現頻次最高的能量值就是雜訊的能量。 主要包括以下幾個步驟:
1.計算當前幀的功率譜
2.計算當前幀前連續D幀功率譜密度直方圖,選擇每個頻點k的頻次最高的功率值
3.滑動平均,更新雜訊功率譜密度
當前幀的SNR很低,或者語音出現概率很低時,意味著當前信號功率很接近雜訊功率,我們可以用當前幀的功率譜與前一幀估計的雜訊功率進行加權平均,從而更新雜訊功率譜。這就是遞歸平均法,通用的公式是:
演算法的核心變成了計算參數 ,研究者提出了不同的方法,比如可以根據後驗信噪比 計算參數:
用 和 分別代表當前幀包含語音和不包含語音,從概率論的角度,當前幀的雜訊功率期望值為:
其中,當前幀不存在語音時,雜訊功率就是信號功率,所以
。當前幀存在語音時,可以用前一幀估計的雜訊功率來近似,
。雜訊的遞歸平均演算法轉化為求當前幀每個頻點的語音存在/不存在概率問題:
比照遞歸平均的通用公式,也就是
。 使用前一節介紹的語音存在概率SPP計算方法求
即可。
MCRA是一種將最小值跟蹤與基於語音概率的遞歸平均結合起來的演算法,核心思想是用當前幀功率譜平滑後與局部最小功率譜密度之比來估計語音概率。
以某閾值 對語音概率 進行二元估計
語音概率也可以進行平滑:
另外,如果將語音不存在是的雜訊估計也做滑動平均,也就是
可以得到最終的雜訊概率估計公式:
後驗信噪比的估計比較直接,就是帶噪信號功率與估計雜訊功率之比: 。然後 。
先驗信噪比是純凈信號功率與雜訊功率之比,無法直接得知,需要更進一步估計。一種方法是簡單譜減法,從功率角度 。 因此
更精確的方法是判決引導法(Decision-directed approach), 滑動平均
參考文獻
[1] P. C. Loizou, Speech enhancement: theory and practice. CRC press, 2007.
❷ 在語音信號參數分析時為什麼要進行預處理,有哪些預處理
語音識別的基本過程 根據實際中的應用不同,語音識別系統可以分為:特定人與非特定人的識別、獨立詞與連續詞的識別、小詞彙量與大詞彙量以及無限詞彙量的識別。但無論那種語音識別系統,其基本原理和處理方法都大體類似純蠢。語嫌褲森音識別過程主要包括語音信號的預處理、特徵提取、模式匹配幾個部分。預處理包括預濾波、采樣和量化、加窗、端點檢測、預加重等過程。語音信號識別最重要的一環就是特徵參數提取。提取的特徵參數芹畝必須滿足以下的要求:(1)提取的特徵參數能有效地代表語音特徵,具有很好的區分性; (2)各階參數之間有良好的獨立性;(3)特徵參數要計算方便,最好有高效的演算法,以保證語音識別的實時實現。在訓練階段,將特徵參數進行一定的處理後,為每個詞條建立一個模型,保存為模板庫。在識別階段,語音信號經過相同的通道得到語音特徵參數,生成測試模板,與參考模板進行匹配,將匹配分數最高的參考模板作為識別結果。同時,還可以在很多先驗知識的幫助下,提高識別的准確率。
❸ 開語音廳做不好什麼原因
音質的要求更高。
1、整體穩定的技術。1對1語聊的技術門檻相對較低,多人語聊和特定場景相對復雜,技術實現難度比較大。以pia戲為例,如果經常出現卡頓、延遲和聽不清的情況,會將營造的劇情氣氛破壞殆盡,主播時不時要退出重新登錄,無法全身心投入,用戶聽到的是斷斷續續的聲音,不能沉浸到劇情中。即構自研的音視頻引擎,通過抖動緩沖技術、前向糾錯技術、丟幀補償技術減少網路抖動和弱網環境下的延遲,保障語音通話低延時且清晰。讓用戶在復雜網路環境和多類型手機的情況下,也能實現暢通優質的語音通話。
2、多人聊天的語音前處理以KTV語聊房為例,在房間當中,有人說話聲音、歌聲、伴奏都在房間呈現,每個人所處的地方,所用的設備也不一樣,這就有很大可能出現回聲、噪音,或是某個人設備不是很好,發出的聲音很小。即構成熟的語音前處理3A技術:回聲消除(AEC)、噪音抑制(ANS)、音量增益(AGC),杜絕回聲和嘯叫,降噪而無損音質。這樣歌者能展示甜美歌聲,聽眾也有良好的聽覺享受。
3、媒體次要信息同步而在KTV類的場景中,AB兩人輪麥合唱,如果輪到B唱歌時發現歌詞沒同步,就很難唱下去。這當中技術難點就在於歌詞等媒體次要信息是否能做到同步。即構的KTV解決方案中,支持將非媒體信息注入媒體流中,歌詞等媒體次要信息和音視頻信息放在同一個媒體通道傳輸的,做到歌詞與歌聲同步展示果。
❹ NetEq中DSP模塊音頻演算法探究
netEQ是webrtc中動態抖動緩沖區和錯誤隱藏的演算法,用來消除因為網路抖動或者丟包。在保持高質量通話的同時,兼顧數據的低延時。其中,兩大模塊分別為MCU、DSP。
MCU(Micro Control Unit)模塊是抖動緩沖區的微控制單元,由於抖動緩沖區作用是暫存接收到的數據包,因此 MCU 的主要作用是安排數據包的插入並控制數據包的輸出。數據包的插入主要是確定來自網路的新到達的數據包在緩沖區中的插入位置,而控制數據包的輸出則要考慮什麼時候需要輸出數據,以及輸出哪一個插槽的數據包。
DSP(digital signal processing)模塊是信號處理單元,主要負責對從 MCU 中提取出來的 PCM 源數據包進行數字信號處理。
本文將針對DSP模塊中設計到的相關演算法以及具體處理過程做詳細介紹和分析。
這里解釋一下DSP處理中幾個操作類型的意義:
加速 Accelerate: 變聲不變調的加速播放演算法
慢速 PreemptiveExpand: 變聲不變調的減速播放演算法
正常 Normal: 正常的解碼播放,不額外引入假數據
融合 Merge: 如果上一次是 Expand 造假出來的數據,那為了聽起來更舒服一些,會跟正常數據包做一次融合演算法
丟包隱藏 Expand(Packet Loss Concealment): 丟包補償,最重要的無中生有演算法模塊,解決 「真丟包」 時沒數據的問題,造假專業戶
舒適噪音 ComfortNoise: 是用來產生舒適雜訊的,比單純的靜音包聽起來會更舒服的靜音狀態
a. 基音,指的是物體震動時所發出的頻率最低的音,其餘為泛音。也就是發音體整段震動,它攜帶著語音中的大部分能量。
b. 基音周期,聲音震動波形的周期,其頻率則為基頻。基音周期是語音處理演算法中的基本單位,是語音估計中的關鍵參數。
c. 基音檢測,是對基音周期的估計,目的是得出和聲音震動頻率完全一致的基音周期長度。
d. 短時自相關函數法,webrtc中用於基因檢測的方法。經典的短時自相關函數法進行基音檢測時,是使用一個窗函數,窗不動,語音信號移動。通過比較原始信號和他位移後的信號之間的相似性來確定基音周期,如果移位距離等於基音周期,那麼兩個信號便具有最大相似性。窗口長度N的選擇至少要大於基音周期的兩倍,N越大,得出的基音周期越准確,但計算量也會相應增加。反之,N越小,誤差越大,計算量越小。
e. WSOLA,Waveform Similarity Over-Lap Add,波形相似重疊相加法。在不改變語音音調並保證音質的前提下,使語音在時間軸上被拉伸或者壓縮,即變速不變調。
採用分解合成的思想,將原始語音以L為幀間距,以N為幀長進行拆分,以aL為幀間距進行合成,其中a為調整因子。為防止頻譜斷裂或相位不連續,合成時在原始語音信號的采樣點處,相鄰區域[-max, +max]內移動,尋找信號波形相關最大的波形,確定合成位置。
圖中是通過直接拷貝的方式實現慢速播放,造成了時域波形不連續。波形相似疊加法避免了上述問題的出現。
加速處理用來解決數據包在jitterbuffer中累積造成延時過大的情況。使用WSOLA演算法在時域上壓縮語音信號。
已上圖為例,長度為110個樣本。其中B區域為短時自相關函數法中的x(n),長度相同的移動窗(A區域)為x(n-τ),以τ為10開始移動,最大為100。在此過程中以拋物線擬合的方式求出相關性最大時的移動距離τ,進而得到該幀的基音周期P。
計算該數據流,中心點,前後兩個基音周期的相關性bestCorr。當相關性大於0.9,將兩個基音周期交叉混合並輸出;否則,按照正常處理直接輸出。
加速處理就是將兩個基音混合成一個個並代替原有的兩個基音來縮短語音長度。
加速後的語音數據存於neteq演算法緩沖區algorithm_buffer中。
neteq/accelerate.cc
減速處理用來解決網路狀況不好而導致音頻數據比較少時,為了人耳聽覺的連續性,使用WSOLA演算法在時域上拉伸信號,來延長網路等待時間。
過程與加速過程類似
減速處理是將兩個基音混合成一個,並插入到兩個基音中間來延長語音長度。因此,經過減速處理的語音幀增加了一個基音周期的時長。
減速後的語音數據存於neteq演算法緩沖區algorithm_buffer中。
neteq/preemptive_expand.cc
當音頻數據丟失,會利用參考數據在演算法緩沖區中創建、補齊缺失內容,實現丟包隱藏,保證聽覺體驗。
上圖中,丟包隱藏使用語音緩沖區中最新的256個樣本作為參考數據源,並將這些數據記為speechHistory(歷史數據)。speechHistory用於連續PLC的場景。
neteq/expand.cc
融合處理發生在播放的上一幀與當前數據幀不連續的情況。比如,上一幀為PLC幀,當前幀為正常幀。
neteq/merge.cc
正常處理一般用於提取的數據包剛好符合播放要求,然後將此包解碼後直接輸出到speech buffer等待播放。如果上次處理是PLC,還需要進行平滑。
neteq/normal.cc
rfc 3389。結合語音活動檢測演算法的舒適噪音生成可快速確定靜音出現的時間,並在出現靜音時產生人工噪音,直到語音活動重新恢復為止。產生的人工噪音可形成傳輸流不間斷的假象,因此電話中的背景聲音會從始至終保持連續,接聽者不會有電話掉線的感覺。
neteq/comfort_noise.cc
參考
https://blog.csdn.net/liuxiaoheng1992/article/details/79379514
https://nemocdz.github.io/post/淺談-webrtc-neteq/#丟包補償-1
《WebRTC語音引擎中NetEq技術的研究》吳江銳
❺ 語音信號預處理
MFCC是計算語音信號的Mel頻率倒譜系數,Mel頻率是基於人耳聽覺特性提出來的,它與Hz頻率成非線性對應關系。Mel頻率倒譜系數(MFCC)則是利用它們之間的這種關系,計算得到的Hz頻譜特徵,MFCC已經廣泛地應用在語音識別領域。由於Mel頻率與Hz頻率之間非線性的對應關系,使得MFCC隨著頻率的提高,其計算精度隨之下降。因此,在應用中常常只使用低頻MFCC,而丟棄中高頻MFCC。
MFCC參數的提取包括以下幾個步驟:
預濾波(低通):前端帶寬為300-3400Hz的抗混疊濾波器。
A/D變換:采樣頻率,線性量化精度。
預加重:通過一個一階有限激勵響應高通濾波器,使信號的頻譜變得平坦,不易受到有限字長效應的影響。
分幀:根據語音的短時平穩特性,語音可以以幀為單位進行處理,實驗中選取的語音幀長為32ms,幀疊為16ms。
加窗:採用哈明窗對一幀語音加窗,以減小吉布斯效應的影響。
快速傅立葉變換(Fast Fourier Transformation, FFT):將時域信號變換成為信號的功率譜。
三角窗濾波:用一組Mel頻標上線性分布的三角窗濾波器(共24個三角窗濾波器),對信號的功率譜濾波,每一個三角窗濾波器覆蓋的范圍都近似於人耳的一個臨界帶寬,以此來模擬人耳的掩蔽效應。
求對數:三角窗濾波器組的輸出求取對數,可以得到近似於同態變換的結果。
離散餘弦變換(Discrete Cosine Transformation, DCT):去除各維信號之間的相關性,將信號映射到低維空間。
譜加權:由於倒譜的低階參數易受說話人特性、信道特性等的影響,而高階參數的分辨能力比較低,所以需要進行譜加權,抑制其低階和高階參數。
倒譜均值減(Cepstrum Mean Subtraction, CMS):CMS可以有效地減小語音輸入信道對特徵參數的影響。
差分參數:大量實驗表明,在語音特徵中加入表徵語音動態特性的差分參數,能夠提高系統的識別性能。可用到了MFCC參數的一階差分參數和二階差分參數。
采樣前的低通濾波,主要是消除采樣時的頻譜混疊。由硬體完成。
預加重主要是提高高頻的頻譜分量。軟體,硬體都可以完成。
預加重前,也可以用高通濾波器,消除低頻噪音。
如果計算mfcc是有了預加重。之前的預加重就不要做。
采樣前的硬體低通濾波是一定要做的。
計算mfcc時的濾波,看起的作用是什麼?如果是進一步消除噪音,那就必須做。
❻ 語音識別的前端處理
前端處理是指在特徵提取之前,先對原始語音進行處理,部分消除雜訊和不同說話人帶來的影響,使處理後的信號更能反映語音的本質特徵。最常用的前端處理有端點檢測和語音增強。端點檢測是指在語音信號中將語音和非語音信號時段區分開來,准確地確定出語音信局大號的起始點。經過端點檢測後,後續處理就可好含以只對語音信號進行,這對提高模型的精確度和識別正確率有重要作用。語音增強的主要任務就是消除環境雜訊對語音的影響。目前通用的方法是採用維納濾波,該方法在雜訊較大的情況下效果好於其它桐襪豎濾波器。
❼ 有哪些新的語音信號編碼方法
20世紀80年代至今,不僅聲碼器和波形編碼器得到了很大發展,並且還有一種全新的革命性編碼方法被普遍推廣,這類編碼器叫混合編碼器。這種編碼器在傳送器中對給定編碼結構的所有可能性進行綜合,找出輸人語音的最好編碼形式,並從這些可能性中發現輸入語音的最優主觀匹配,然後用數碼表示這種主觀匹配並發送到接收器。利用線性預測、VQ、A-B-S、感覺加權、後濾波等技術得到的多脈沖激勵線性預測(MPELP,Multi Pulse Enspirit LinePrognosticate),規則脈沖激勵線性預測(RPELP,Rule Pulse Enspirit Line Prognosticate),碼本激勵線性預測(CELP,Code Enspirit Line Prognosticate) 編碼速率達到8~16Kbit/s甚至更底,其話音質量族知高、編碼速率低,但演算法復雜。
近年來,ITU-T在多媒體數字通信方面(包括電視會議等)制定了一系列國際標准(按ITU的說法是建議)。
表1 ITU-T多媒體會議標准(基本模式)
在現有的網路設施條仵下,H.320和H.323比較適用的標准。H.320的基本音頻模式是G.711 log-PCM(對數脈碼調制)編碼解碼器,它是一種簡單的8kHz采樣頻率對數脈碼調制模式,長期以來它都是數字電話網路主要的編碼方法(長途電話盡管起源於模擬電話,現在長途電話在數字網路上傳輸)。
G.711定義為8位編碼,速率為64Kbit/s,但在H.320中采樣截短為6或7比特位,因為速率相應變為48Kbit/s或56Kbit/s。G.711提供了出色的長話音質窄帶(3kHz音頻帶寬)語音、不太明顯的編解碼延遲(低於1ms)以及非常低的實現復雜性。為了提供與普通G.711音頻電話的兼容性,所有的H.320呼叫在H.221 FAS和BAS信道中進行同步初始化和模式協商時開始發送和接收G.711音頻。
G.711有很多優點,但是G.711指定了兩個不同的編碼A律和μ律,在採用G.711標準的區域,不同地方使用上述兩種不同的方法。CCITT不能達成統一的編碼方法。結果是H.320系統必須由遠端在每次呼叫開始時自動發現使用的編碼律,或者避免使用音頻直到H.320控制過程能用來建立另一音頻模式。而且,G.711因為它的低復雜性和與普遍電話的兼容性成為H.返穗租320的基本音頻模式,但與其他H.320音頻模式相比在使用帶寬方面它是效率低下的。如果轉到其他音頻模式下節省的數據帶寬可用來傳送更多的視頻位,將使H.320視頻質量有很大不同,特別是在普通的2-B(128Kbit/s)H.320呼叫上。
鑒於G.711語音壓縮協議本身的一些缺點,人們一直在找一種替代它的協議,現在已經開始用的有G.722協議和G.728協議。
G.728是目前H.320中用得較多的窄帶音頻模式。它是基於通常的8kHz窄帶采樣和5個采樣(0.625ms)的音頻幀的低時延碼本激勵線性編碼(LD-CELP),比特率為16Kbit/s,提供很好的長話音質,總延遲為大約漏兆1.875ms。
在現有網路條件下,需要一個窄帶音頻模式,但是又要有相當好的語音質量。 最近建立的8Kbit/s電話標准真正提高了該速率下的語音品質並改善了復雜性,這種編碼器在某種程度上是一個突破,因此它的嚴格規范使性能達到或超過了32Kbit/s的G.726 ADPCM,但速率僅為8Kbit/s。ITU G.729 SKbit/s標准在性能上不亞於G.726,其演算法延時少於16ms,隨機誤碼和背景雜訊的性能都不低於G.726,具有與自身的非同步串聯能力。比如說,兩級串聯的性能不低於G.726四級串聯的性能,達到這個水平的編碼稱為共扼結構代數碼激勵線性預測(CS~ACELP),它採用特殊的碼本結構簡化碼本查找。
由於G.729的優點突出,特別適合目前網路條件,因此其在多媒體會議中的應用越來越受到重視。G.729的演算法被稱作共軛結構代數碼激線性預測(CS-ACELP,ConjugateStructuredˉAlgebraic Code Excited Linear Predictive),它構成了G.729標準的基礎。CS-ACELP在標准PCM或線性PCM的話音采樣基礎上,每10ms生成一個10位元組長的話音幀。對於每一個語音幀提取CELP模型參數,再對這些參數在編碼後以每幀80bit進行信道傳輸,在解碼端,接收到的比特流通過激勵碼本解碼成相應的CELP參數,再通過短時綜合濾波器和長時綜合濾波器重建語音幀,最後經過後向濾波進行語音增強。
該演算法提供了優秀音質,且延時很小。CS-ACELP也是為先進的定點運算數字信號處理器設計的,因為它要求強大的運算處理能力。CS-ACELP編碼步驟的方框圖如圖1所示。
❽ 語音識別中的ASR技術通識 2019-12-06
ASR(Automatic speech recognition),自動語言識別,自動將語言轉化成文字的過程,作用類似於人類的耳朵。
流程:輸入-編碼-解碼-輸出
語言識別輸入的是聲音,屬於計算機無法識別的模擬信號,所以需要通過模型將其轉化成數字信號,並對其中的特徵進行提取,編碼時,會將聲音切成很小的片段,成為 幀 ,類似於視頻中最小時間單位的幀。幀和幀之間會有一定的重疊。
對於得到的每一幀,按照人耳聽聲的特定的MCFF規則,提取其中的特徵,轉成 多維向量 。向量中的每一個維度可以看做是這一幀中的特徵。
解碼過程是將得到的向量變成文字的過程,其中用到兩個模型 聲學模型 和 語言模型 。聲學模型是將特徵向量轉化成單個字母(中文的拼音聲母和韻母),成為音素。語言模型是將音素拼接起來成為單詞或者漢字。兩種模型都需要大量的語言數據進行訓練。
傳統識別方式:隱馬爾可夫模型(HMM)
端到端識別方式:神經網路(DNN,deep neural network)
兩種識別方式主要的差異在聲學模型上。
目前中文的識別率在97%以上,距離理想的99%還有很大的差距。
「遠場」。下面主要說3個概念:
語音激活檢測、語音喚醒、以及麥克風陣列。
1)語音激活檢測(voice active detection,VAD)
A)需求背景:在近場識別場旁態消景,比如使用語音輸入法時,用戶可以用手按著語音按鍵說話,結束之後松開,由於近場情況下信噪比(signal to noise ratio, SNR))比較高,信號清晰,簡單演算法也能做到有效可靠。
但遠場識別場景下,用戶不能用手接觸設備,這時雜訊比較大,SNR下降劇烈,必閉李須使用VAD了。
B)定義:判斷什麼時候有語音什麼時候沒有語音(靜音)。
後續的語音信號處理或是語音識別都是在VAD截取出來的有效語音片段上進行的。
2)語音喚醒 (voice trigger,VT)
A)需求背景:在近場識別時,用戶可以點擊按鈕後直接說話,但是遠場識別時,需要在VAD檢測到人聲之後,進行語音喚醒,相當於叫這個AI(機器人)的名字,引起ta的注意,比如蘋果的「Hey Siri」,Google的「OK Google」,亞馬遜Echo的「Alexa」等。
B)定義:可以理解為喊名字,引起聽者的注意。
VT判斷是喚醒(激活)詞,那後續的語音就應該進行識別了;否則,不進行識別。
C) 難點 :語音識別,不論遠場還是進場,都是在雲端進行,但是語音喚醒基本是在(設備)本地進行的,要求更高——
C.1)喚醒響應時間。據傅盛說,世界上所有的音箱,除了Echo和他們做的小雅智能音箱能達到1.5秒之外,其他的都在3秒以上。
C.2)功耗要低。iphone 4s出現Siri,但直到iphone 6s之後才允許不接電源的情況下直接喊「hey Siri」進行語音喚醒。這是因為有6s上有一顆專門進行語音激活的低功耗晶元,當然演算法和硬體要進行配合,演算法也要進行優化。
C.3)喚醒效果。喊它的時候它不答應這叫做漏報,沒喊它的時候它跳出來講話叫做誤報。漏報和誤報運知這2個指標,是此消彼長的,比如,如果喚醒詞的字數很長,當然誤報少,但是漏報會多;如果喚醒詞的字數很短,漏報少了,但誤報會多,特別如果大半夜的突然唱歌或講故事,會特別嚇人的……
C.4)喚醒詞。技術上要求,一般最少3個音節。比如「OK google」和「Alexa」有四個音節,「hey Siri」有三個音節;國內的智能音箱,比如小雅,喚醒詞是「小雅小雅」,而不能用「小雅」。
註:一般產品經理或行業交流時,直接說漢語「語音喚醒」,而英文縮寫「VT」,技術人員可能用得多些。
3)麥克風陣列(Microphone Array)
A)需求背景:在會議室、戶外、商場等各種復雜環境下,會有噪音、混響、人聲干擾、回聲等各種問題。特別是遠場環境,要求拾音麥克風的靈敏度高,這樣才能在較遠的距離下獲得有效的音頻振幅,同時近場環境下又不能爆音(振幅超過最大量化精度)。另外,家庭環境中的牆壁反射形成的混響對語音質量也有不可忽視的影響。
B)定義:由一定數目的聲學感測器(一般是麥克風)組成,用來對聲場的空間特性進行采樣並處理的系統。
c)雲端為主。
比如地圖功能,由於POI(Point of Interest,興趣點,指地理位置數據)數據量太大,直接到雲端搜索可能更方便(除非是「家」、「公司」等個性化場景)。比如,用戶說「從武漢火車站到東福」,可以被糾正為「從武漢火車站到東湖」。
各家公司在宣傳時,會說語音識別率達到了97%,甚至98%,但那一般是需要用戶在安靜環境下,近距離、慢慢的、認真清晰發音;而在一些實際場景,很可能還不夠好的,比如——
1、比如在大家都認為相對容易做的翻譯場景,其實也還沒完全可用,台上演示是一回事,普通用戶使用是另一回事;特別是在一些垂直行業,領域知識很容易出錯;另外,還可詳見 《懟一懟那些假機器同傳》
2、車載
大概3、4年前,我們內部做過針對車載場景的語言助手demo,拿到真實場景內去驗證,結果發現,車內語音識別效果非常不理想。而且直到今年,我曾經面試過一位做車內語音交互系統的產品經理,發現他們的驗收方其實也沒有特別嚴格的測試,因為大家都知道,那樣怎麼也通過不了。。。
車內語音識別的難點很多,除了多人說話的干擾,還有胎噪、風噪,以及經常處於離線情況。
據說有的公司專門在做車內降噪,還有些公司想通過智能硬體來解決,至少目前好像還沒有哪個產品解決好了這個問題,並且獲得了用戶的口碑稱贊的。
3、家庭場景,由於相對安靜和可控,如果遠場做好了,還是有希望的。
4、中英文混合。
特別在聽歌場景,用戶說想聽某首英文歌時,很容易識別錯誤的。這方面,只有傅盛的小雅音箱據說做了很多優化,有待用戶檢驗。
總之,ASR是目前AI領域,相對最接近商用成熟的技術,但還是需要用戶可以配合AI在特定場景下使用。這是不是問題呢?是問題,但其實不影響我們做產品demo和初步的產品化工作,所以反而是我們AI產品經理的發揮機會。
1、遠場語音識別,是最近2年的重要競爭領域。因為家庭(音箱)等場景有可能做好、在被催熟。
2、更好的機會在垂直細分領域,比如方言(方言識別能夠支持40多種,而網路有20多種)、特定人群的聲學匹配方案(兒童)
最後,用一張圖總結語音識別用於人機交互中的幾個難點。
❾ 語音的幀長、幀移與幀數
接著前伏侍姿面的文章,關於語音分幀問題,在前期將語音靜音刪除後,需要將語音裁剪成長度相同的長度或者分幀,保證數據集的統一。長度不同的音頻文件不容易建模分析,需要先分幀,切成長度相同的,另外切成一小段固定長度時,談族段和段之間適當重疊部分。
經過一上午的學習實踐,參考librosa文檔和知乎等資料,終於搞定懂了。
語音信號是一個非穩態的、時變的信號。但在短時間范圍內可以認為語音信號是穩態的、時不變的,這個短時間一般取 10-30ms。進行語音信號處理時,為減少語音信號整體的非穩態、時變的影響,從而對語音信號進行分段處理,其中每一段稱為一幀,幀長一般取 25ms。為了使幀與幀之間平滑過渡,保持其連續性,分幀一般採用交疊分段的方法,保證相鄰兩幀相互重疊一部分,末尾不足部分用零填充。相鄰兩幀的起始位置的時間差稱為幀移,我們一般在使用中幀移取值為 10ms。
那麼對於一個 22050Hz 采樣的音頻來說,幀長有 22050 * 0.025 = 551.25 個點,幀移有 22050 * 0.01 = 220.5 個點。根據上一篇文章- jupyter notebook完成wav文件探索 ,計算點數方法是采樣率 * 時長,那麼wav文件就有5.89569 * 22050 = 130000,和librosa.load返回的數據是一致的。num_samples、frame_len、frame_shift 分別代表音頻的數據點數、幀長和幀移,那麼i 幀的數據需要的點數:(i-1) * frame_shift + frame_len,n 個點的音頻的幀數:ceil(n- / frame_shift) 。
那麼在librosa.load語音文件後,需要自己來分幀嗎?NO,librosa已經幫你實現了!librosa.feature.mfcc函數提取MFCCs特徵時,MFCC一般默認幀長為2048,幀移為512,即默認1/4關系。查看參考librosa文檔:hop_length = win_length / 4,缺絕win_length = n_fft。n_fft=2048, hop_length=512。
那麼筆者再次在jupyter notebook中添加計算,發現和mfcc函數提取的幀數是一致的。那麼在提取特徵時就不需要自動來保證幀移的分幀。jupyter 真是太好用了,可以查看、修改歷史過程,不用從頭開始導入數據、分析數據了。