国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于C語言的語譜圖生成

2022-09-20 02:56羅海濤
現(xiàn)代計算機 2022年14期
關鍵詞:縱坐標時域灰度

羅海濤

(廣東外語外貿大學信息學院,廣州 510420)

0 引言

語言是人類交流的有力工具。通過聲電傳感器把語音轉換為電信號,得到語音信號,再通過采樣、量化等技術得到語音采樣數(shù)據(jù)。在現(xiàn)代信息化社會,人們用計算機對語音采樣數(shù)據(jù)進行存儲、傳送、識別、編碼和增強。

對語音信號的處理最早可以追溯到上世紀30年代末,上世紀40年代初語譜圖儀問世。語譜圖是語音的時域和頻域結合的視圖,其橫坐標是時間,縱坐標是頻率,坐標點值為語音采樣數(shù)據(jù)的能量。語音信號的語譜圖又稱為聲紋,在語音信號處理、編碼、識別等方面有著重要的應用??紤]到橫坐標一個時間點采樣數(shù)據(jù)很難分析出各個頻率成分,橫坐標一般采用一幀語音采樣數(shù)據(jù),這樣可以通過傅里葉變換得到該幀數(shù)據(jù)的頻譜,即縱坐標。而縱坐標各個頻率點的能量不同,如何在一個像素點反映這些不同能量?首先,能量的表示方法有很多種,有的采用幅頻的幅度絕對值作為該頻率點能量,有的采用幅頻的幅度平方作為該頻率點能量,等等。其次,為了在一個像素點反映不同的能量值,采用不同的灰度值方法,即把能量值由大到小按順序轉換為一個像素點的灰度值,能量越大,灰度值越大,顏色越深;反之,能量越小,灰度值越小,顏色越淺。

1 語音信號的預處理

語音信號的頻譜不是均勻分布的,能量集中在低頻部分,頻率越高,其頻譜能量越小。為了消除這種不均勻帶來的影響,在處理之前,一般對音頻采樣數(shù)據(jù)進行預處理。有效的預處理是預加重。預加重實際上是一個一階的數(shù)字濾波器,如公式(1)所示:

式中是一個常數(shù),一般取接近1的小數(shù)。容易求出該濾波器對應的時域響應是(0)=1以及(1)=-μ,這是一個有限沖激響應濾波器FIR。

令=e,得到該濾波器的數(shù)字頻域響應為:

式中參數(shù)是一個常數(shù),一般取接近1的小數(shù),是數(shù)字頻率。

該濾波器實際上是一個高通濾波器,它抑制語音信號低頻部分的幅度,而對高頻部分有增強作用,所以,總體上這種濾波器使語音信號的頻譜變得平坦。

2 各種窗函數(shù)及其作用

為了得到語譜圖,需要對語音采樣信號進行分幀。分幀實際上是在時域對語音數(shù)據(jù)施加一個矩形窗進行截斷,其過程可用圖1來表示。

圖1 語音分幀示意圖

圖1中每幀語音采樣數(shù)據(jù)長度都相同,幀移介于0到1之間。如果幀移為0,則前后兩幀語音完全重疊;如果幀移等于1,則前后兩幀語音完全沒有重疊的部分。分幀時,可以采用多種窗,矩形窗是最簡單的一種,其時域函數(shù)為

式(3)中是幀的長度。對該窗函數(shù)作傅里葉變換,可以得到其頻域函數(shù)為

圖2 矩形窗的幅度與數(shù)字頻率的關系圖

除了矩形窗之外,巴特利窗在截斷信號時有一段過渡,因為這種窗實際上是一個三角形的窗,其時域函數(shù)定義為

同樣對該窗函數(shù)作傅里葉變換,可以得到其頻譜。和矩形窗的頻譜相比,巴特利窗的主瓣寬度增加了,過渡帶也增加了,但旁瓣幅度降低很多。

其他窗函數(shù)還有漢寧窗,又叫升余弦窗,其時域函數(shù)為

這種窗的頻譜旁瓣更小,能量更加集中到主瓣。

對漢寧窗函數(shù)的系數(shù)0.5加以改變,即得到漢明窗,又稱為改進的升余弦窗,其時域函數(shù)為

漢明窗幅度譜旁瓣更小,能量更加集中到主瓣。

上述幾種窗函數(shù)的頻譜中,漢明窗的旁瓣是最小的,主瓣內的能量可達99.6%。

3 語音的頻譜與語譜圖的形成

本文編程對wav音頻格式文件進行數(shù)據(jù)獲取,再進行語音信號處理。wav格式是微軟公司開發(fā)的一種聲音文件格式,也叫波形文件,是最早的數(shù)字音頻文件格式,它具有RIFF(resource interchange file format)格式。加窗分幀是在時域對語音采樣進行分段,分段后再對每一段采樣數(shù)據(jù)作離散傅里葉變換,以獲得該段語音的頻譜。離散傅里葉變換DFT是在時域和頻域都離散的變換,其結果是信號離散的頻譜,如式(8)所示:

離散傅里葉變換雖然使用計算機編程進行,但是由于需要進行很多的復數(shù)運算,速度較慢。為了加快速度,通常采用快速傅里葉變換FFT。由于FFT要求數(shù)據(jù)個數(shù)必須是2的冪,所以運算前,需檢查幀長是否滿足這個要求。通常幀的長度不是2的冪,需要對一幀數(shù)據(jù)補零,以達到2的冪,滿足FFT的要求才能進行FFT運算。設補零后幀長=2

FFT采用蝶形計算的辦法,先把輸入數(shù)據(jù)按二進制的倒位序排列,輸入第1級蝶形進行運算。第1級蝶形運算結果輸入到第2級,依次類推,直到最后一級蝶形,即第級。該級運算結果就是最后的FFT結果,也是該幀語音的頻譜。

語譜圖是一段語音信號的二維時域和頻域圖像,橫坐標是時間次序,采用語音幀的順序編號,即按照第1幀、第2幀的順序幀編號作為橫坐標;縱坐標是對應語音幀的頻譜,所以縱坐標是頻率。考慮到需要在語譜圖的縱坐標表示一幀語音的頻譜,所以需要把頻譜的幅度轉換為一個點的灰度來表示,而幅度又是復數(shù),所以采用復數(shù)絕對值來表示。本文實際編程時,幅度有6種方式供選擇,分別是復數(shù)絕對值(默認)、復數(shù)實部和虛部的平方和、復數(shù)實部和虛部的平方和的平方根、復數(shù)實部和虛部的平方和的立方根、復數(shù)實部和虛部的平方和的四方根、以及復數(shù)實部和虛部的平方和的自然對數(shù),如圖3所示。

圖3 語譜圖的能量形式

綜上所述,語譜圖的形成過程如下:

(1)對語音的音頻數(shù)據(jù)加窗、分幀,幀長取2的冪,不足補零;

(2)確定FFT要求的二進制倒位序;

(3)取得第1幀數(shù)據(jù);

(4)按照倒位序重新對該幀數(shù)據(jù)排序;

(5)把重新排序的數(shù)據(jù)輸入到第1級蝶形,完成該級計算;

(6)蝶形級數(shù)加1;

(7)判斷級數(shù)是否等于,若等于,轉至第(9)步;

(8)計算結果輸入到下一級蝶形輸入端,完成該級計算,轉第(6)步;

(9)對計算得到的幀頻譜,按照圖3所示,根據(jù)用戶的選擇計算能量值,記錄最大能量值;

(10)根據(jù)最大能量值和各點能量值,逐點把能量值轉換為像素灰度值,例如能量最大值的像素點灰度值為最大,取255(黑色),其他各點按照線性關系轉換為灰度值;

(11)循環(huán)根據(jù)該幀數(shù)據(jù)計算得到的各點灰度值,在縱坐標依次畫出各點灰度像素;

(12)數(shù)據(jù)幀編號加1;

(13)判斷是否完成所有幀的計算,若是,結束;若否,轉第(4)步。

4 語譜圖計算結果

本文在Visual C++環(huán)境下,編程對一些英文語音音頻文件進行分析計算,生成語譜圖。每個音頻文件是一個英文單詞的wav波形文件。

以英文單詞“important”為例,首先從音頻文件中讀取該單詞的采樣數(shù)據(jù),如圖4所示。

圖4 單詞important的音頻參數(shù)

從圖4可知,該音頻文件共46739個采樣數(shù)據(jù),每個采樣數(shù)據(jù)用16位二進制表示,有兩個聲道,采樣頻率為44100Hz。后面是兩個聲道的每個采樣數(shù)據(jù),省略。在后面的分析計算中,只取其中一個聲道的數(shù)據(jù)。

下一步,進行端點檢測,去掉語音開始之前和結束之后的多余的采樣數(shù)據(jù),得到結果如圖5所示。

圖5 經過端點檢測后得到的采樣數(shù)據(jù)

從圖5可知,經過端點檢測后,實際剩下的采樣數(shù)據(jù)共39657個,比之前的大為減少,也使后面的處理計算量大為減少。

再按照前面介紹的步驟和方式,計算得到語譜圖如圖6所示。其余單詞的語譜圖不再羅列。

圖6 單詞important的語譜圖

5 結語

語言是人類交流的有力工具。通過傳感器把語音轉換為電信號,再經過離散采樣、量化等處理,得到離散的采樣數(shù)據(jù)。這些采樣適合用計算機進行存儲、傳輸、編碼、增強等處理。語音信號的處理涉及數(shù)字信號處理,還有語音、語言學、認知學和心理學等學科的內容,是一門跨學科的新興學科。語譜圖是語音的聲紋,是語音信號的時域和頻域信息結合的圖像,在語音處理方面有著廣泛的應用。本文采用C++編程,處理語音信號,產生語譜圖。

猜你喜歡
縱坐標時域灰度
天津港智慧工作平臺灰度發(fā)布系統(tǒng)和流程設計
平面直角坐標系中的特殊點
華為“灰度”哲學
晚霞淺淡少年糖
平面直角坐標系中“混”“漏”要不得
Arduino小車巡線程序的灰度閾值優(yōu)化方案
基于MATLAB 的信號時域采樣及頻率混疊現(xiàn)象分析
兩種常用漂浮式風力機平臺動態(tài)特性分析
設動點坐標 讓動點不動
不同入射角風波流海上漂浮式風力機頻域與時域動態(tài)特性
本溪市| 囊谦县| 泰州市| 南开区| 阆中市| 龙南县| 修文县| 开原市| 沽源县| 西平县| 汉中市| 逊克县| 莱芜市| 洛隆县| 甘谷县| 南开区| 遵化市| 万全县| 五寨县| 孟连| 沿河| 和静县| 论坛| 峨眉山市| 当阳市| 古交市| 云南省| 梓潼县| 虞城县| 平乡县| 犍为县| 克山县| 新郑市| 漠河县| 雅江县| 柘荣县| 昌吉市| 鲜城| 皮山县| 和硕县| 类乌齐县|