語音頻號處理中怎麼理解分幀?

2021-10-25 22:22:28 字數 2644 閱讀 5614

那麼一幀有多長呢?幀長要滿足兩個條件:

從巨集觀上看,它必須足夠短來保證幀內訊號是平穩的。

前面說過,口型的變化是導致訊號不平穩的原因,所以在一幀的期間內口型不能有明顯變化,即一幀的長度應當小於乙個音素的長度。

正常語速下,音素的持續時間大約是 50~200 毫秒,所以幀長一般取為小於 50 毫秒。

從微觀上來看,它又必須包括足夠多的振動週期,因為傅利葉變換是要分析頻率的,只有重複足夠多次才能分析頻率。

語音的基頻,男聲在 100 赫茲左右,女聲在 200 赫茲左右,換算成週期就是 10 毫秒和 5 毫秒。既然一幀要包含多個週期,所以一般取至少 20 毫秒。

這樣,我們就知道了幀長一般取為 20 ~ 50 毫秒,20、25、30、40、50 都是比較常用的數值,甚至還有人用 32(在程式猿眼裡,這是乙個比較「整」的數字)。

取出來的一幀訊號,在做傅利葉變換之前,要先進行「加窗」的操作,即與乙個「窗函式」相乘,如下圖所示:

加窗的目的是讓一幀訊號的幅度在兩端漸變到0

漸變對傅利葉變換有好處,可以讓頻譜上的各個峰更細,不容易糊在一起(術語叫做減輕頻譜洩漏),具體的數學就不講了。

加窗的代價是一幀訊號兩端的部分被削弱了,沒有像**的部分那樣得到重視。彌補的辦法是,幀不要背靠背地擷取,而是相互重疊一部分。相鄰兩幀的起始位置的時間差叫做幀移,常見的取法是取為幀長的一半,或者固定取為10毫秒。

對一幀訊號做傅利葉變換,得到的結果叫頻譜,它就是下圖中的藍線:

圖中的橫軸是頻率,縱軸是幅度。頻譜上就能看出這幀語音在480580赫茲附近的能量比較強。

語音的頻譜,常常呈現出「精細結構」和「包絡」兩種模式。「精細結構」就是藍線上的乙個個小峰,它們在橫軸上的間距就是基頻,它體現了語音的音高——峰越稀疏,基頻越高,音高也越高。

「包絡」則是連線這些小峰峰頂的平滑曲線(紅線),它代表了口型,即發的是哪個音。

包絡上的峰叫共振峰,圖中能看出四個,分別在500170024503800赫茲附近。

有經驗的人,根據共振峰的位置,就能看出發的是什麼音。

對每一幀訊號都做這樣的傅利葉變換,就可以知道音高和口型隨時間的變化情況,也就能識別出一句話說的是什麼了。

在開始語音識別之前,有時需要把首尾端的靜音切除,降低對後續步驟造成的干擾。這個靜音切除的操作一般稱為vad,需要用到訊號處理的一些技術。要對聲音進行分析,需要對聲音分幀,也就是把聲音切開成一小段一小段,每小段稱為一幀。分幀操作一般不是簡單的切開,而是使用移動窗函式來實現,這裡不詳述。幀與幀之間一般是有交疊的,就像下圖這樣:

圖中,每幀的長度為25毫秒,每兩幀之間有25-10=15毫秒的交疊。我們稱為以幀長25ms、幀移10ms分幀。圖中,每幀的長度為25毫秒,每兩幀之間有25-10=15毫秒的交疊。我們稱為以幀長25ms、幀移10ms分幀。

分幀後,語音就變成了很多小段。但波形在時域上幾乎沒有描述能力,因此必須將波形作變換。常見的一種變換方法是提取mfcc特徵,根據人耳的生理特性,把每一幀波形變成乙個多維向量,可以簡單地理解為這個向量包含了這幀語音的內容資訊。這個過程叫做聲學特徵提取。實際應用中,這一步有很多細節,聲學特徵也不止有mfcc這一種,具體這裡不講。

至此,聲音就成了乙個12行(假設聲學特徵是12維)、n列的乙個矩陣,稱之為觀察序列,這裡n為總幀數。觀察序列如下圖所示,圖中,每一幀都用乙個12維的向量表示,色塊的顏色深淺表示向量值的大小。

接下來就要介紹怎樣把這個矩陣變成文字了。首先要介紹兩個概念:

音素:單詞的發音由音素構成。對英語,一種常用的音素集是卡內基梅隆大學的一套由39個音素構成的音素集,參見the cmu pronouncing dictionary。漢語一般直接用全部聲母和韻母作為音素集,另外漢語識別還分有調無調,不詳述。

狀態:這裡理解成比音素更細緻的語音單位就行啦。通常把乙個音素劃分成3個狀態。

第一步,把幀識別成狀態(難點);

第二步,把狀態組合成音素;

第三步,把音素組合成單詞。

如下圖所示:

圖中,每個小豎條代表一幀,若干幀語音對應乙個狀態,每三個狀態組合成乙個音素,若干個音素組合成乙個單詞。也就是說,只要知道每幀語音對應哪個狀態了,語音識別的結果也就出來了。圖中,每個小豎條代表一幀,若干幀語音對應乙個狀態,每三個狀態組合成乙個音素,若干個音素組合成乙個單詞。也就是說,只要知道每幀語音對應哪個狀態了,語音識別的結果也就出來了。

那每幀音素對應哪個狀態呢?有個容易想到的辦法,看某幀對應哪個狀態的概率最大,那這幀就屬於哪個狀態。比如下面的示意圖,這幀對應s3狀態的概率最大,因此就讓這幀屬於s3狀態。

MATLAB實現語音頻號分幀

為了分析讀入資料,通常進行分幀處理。在分幀中,往往設定在相鄰兩幀之間有一部分重疊,如下圖所示 設語音檔案的資料存放在y中,y的長度為n,取樣頻率為fs,取每幀長為wlen,後一幀對前一幀的位移量用inc表示,相鄰兩幀之間的重疊部分overlap wlen inc。f enframe x,win,in...

語音頻號處理

濁音的聲帶振動基本頻率 fundamental frequency 稱為基音頻率。濁音的基音頻率 pitch 語音生成系統和語音感知系統 語音頻號生成的數學模型 語音頻號的特性分析 語音頻號處理是以語音語言學和數字訊號處理為基礎的綜合性學科,是用數字訊號處理技術對語音頻號進行處理的一門學科。說話人識...

語音增強演算法研究系列筆記 語音頻號加窗分幀處理

幀移參考鏈結 語音頻號屬於一種非平穩時變訊號,其產生過程與發聲器官地運動緊密相關,而發聲器官地狀態速率相對聲音振動地速率來說慢很多,因此語音頻號可以視為短時平穩訊號,因此,對其進行加窗分幀可將語音頻號視為乙個平穩訊號,更便於進行分析 對於語音頻號來說,幀長需要滿足兩個條件 從巨集觀上講,它必須足夠短...