中國電子科技集團公司第三十六研究所 周欣 李洋銳 馬國峰
通信接收機的語音信號解調(diào)結(jié)果為時域數(shù)據(jù),反映了語音的時域特性,而要對語音信號進行深度處理需獲取語音頻域特征信息。聲譜圖體現(xiàn)了語音信號的頻域特征,本文研究了語音聲譜圖生成的相關(guān)技術(shù),首先介紹了語音WAVE文件格式,以及通過短時傅里葉變換從時域數(shù)據(jù)獲取頻域數(shù)據(jù)的原理,最后依據(jù)時間、頻率、幅度信息實現(xiàn)了聲譜圖生成。
語音是由大部分穩(wěn)定以及部分動態(tài)變化的狀態(tài)構(gòu)成的連續(xù)音頻流。聲譜圖是依賴于傅里葉變換的顯示圖形,實際上是一種動態(tài)的頻譜圖,能夠直觀的顯示出語音中包含的各種頻率信號隨時間的能量強弱變化情況。聲譜圖縱軸為頻率,橫軸為時間,任意一個給定頻率成分在給定時刻的能量強弱用點的顏色來表示。語音特征向量可以從聲譜圖中提取出來[1]。語音音素的屬性可以從聲譜圖里觀察出來,通過觀察聲譜圖共振峰和它們的轉(zhuǎn)變可以更好地識別聲音,隱馬爾科夫模型就是對聲譜圖進行建模以達到好的識別性能。聲譜圖可以直觀地評估TTS(Text to Speech)系統(tǒng)的好壞,直接對比合成的語音和自然的語音聲譜圖的匹配度。由此,將語音時域數(shù)據(jù)轉(zhuǎn)化為聲譜圖是非常重要的一步。
WAVE文件格式是符合RIFF(Resource Interchange File Format,資源交互式文件格式)規(guī)范的一種數(shù)據(jù)編碼。對于音頻流的編碼,WAVE沒有嚴格的規(guī)則,幾乎任何支持ACM(Audio Codec Manager,音頻編解碼器管理器)規(guī)范的編碼都可以用來對音頻數(shù)據(jù)流進行編碼。最基本的WAVE文件格式是PCM(Pulse Code Modulation,脈沖編碼調(diào)制)格式。PCM是沒有經(jīng)過任何壓縮的聲音采樣數(shù)據(jù)格式,聲卡能夠直接播放。而其他采用壓縮編碼的聲音數(shù)據(jù),需要把壓縮的數(shù)據(jù)按照編解碼格式解碼成PCM格式,再送到聲卡才能正常播放。WAVE文件包括RIFF文件頭(File Header)和一系列數(shù)據(jù)塊(Data Chunk),而其中最主要的“WAVE”數(shù)據(jù)塊由“fmt”子數(shù)據(jù)塊和“data”子數(shù)據(jù)塊組成?!癴mt”數(shù)據(jù)塊用于詳細說明數(shù)據(jù)格式,“data”數(shù)據(jù)塊包含實際的采樣數(shù)據(jù)。數(shù)據(jù)塊是WAVE文件最基本的組成單元,數(shù)據(jù)塊中包含的字段有“類型塊標識”(該字段為可選字段)“標識符”“數(shù)據(jù)大小”和“數(shù)據(jù)”。其中“類型塊標識”只在部分數(shù)據(jù)塊中用到,如“WAVE”數(shù)據(jù)塊就使用了“類型塊標識”,當使用了“類型塊標識”時,該數(shù)據(jù)塊就沒有“標志符”“數(shù)據(jù)大小”及“數(shù)據(jù)”字段項?!邦愋蛪K標識”表示下面嵌套有別的數(shù)據(jù)塊,只作為文件讀取解析時的一個標志,通常先找到這個類型塊標識,再以它為起點讀取后面嵌套的其他數(shù)據(jù)塊。WAVE文件的具體格式如表1所示:

表1 WAVE文件的具體格式Tab.1 The specific format of the WAVE file
描述PCM數(shù)據(jù)的基本單元是“Sample”(采樣),一個Sample代表采樣一次得到的數(shù)據(jù)。如果用44kHz采樣,將在一秒中得到44000個Sample。每個Sample可以用8位、16位表示,位數(shù)越高,音頻質(zhì)量越好。如果是單聲道文件,采樣數(shù)據(jù)按時間順序存儲,它的基本組織單位是一個字節(jié)(8位)或字。如果是雙聲道的文件,采樣數(shù)據(jù)按時間先后順序交叉存入,左右聲道數(shù)據(jù)交叉存儲在一起,先存儲第一個Sample的左聲道數(shù)據(jù),然后存儲第一個Sample的右聲道數(shù)據(jù)。
傅里葉變換是一種分析信號的方法,它可分析信號的成分,也可用這些成分合成信號,在信號分析中,主要用于平穩(wěn)信號的處理[2]。歐拉公式可以將任意函數(shù)轉(zhuǎn)化為一系列正(余)弦函數(shù)之和,任意函數(shù)在這里指我們的時域信號,而正(余)弦函數(shù)包含信號的頻率和對應(yīng)振幅信息。傅里葉變換可以將0~t時間信號(時域、水平軸時間、垂直軸大小)分解到不同的頻率分量(頻域、水平軸頻率、垂直軸大小),通過傅里葉變換可以獲取一段信號總體上包含哪些頻率的成分,但是對各成分出現(xiàn)的時刻無法得知[3]。因此對于非平穩(wěn)信號,傅里葉變換就顯示出了它的局限性,而我們?nèi)粘I钪械慕^大多數(shù)音頻都是非平穩(wěn)信號的。解決這個問題的方法是使用短時傅里葉變換來處理語音信號。短時傅里葉變換的思想是將全部時域過程分解為很多等長的小進程,每一個小過程近似平穩(wěn),然后對每一個小過程舉行傅里葉變換。短時傅立葉變換采用滑動窗口機制,設(shè)定窗口大小和步長,讓窗口在時域信號上滑動,分別計算每個窗口的傅立葉變換。把函數(shù)和窗口函數(shù)相乘,然后通過滑動窗口函數(shù)做傅里葉變換,得到一系列的傅里葉變換結(jié)果,形成不同時間窗口對應(yīng)的頻域信號,然后將結(jié)果進行排列,通過時間疊加累積得到一個隨時間變化的二維時頻信號聲譜數(shù)據(jù)矩陣[4]。
生成聲譜圖時,語音被分成許多幀,每一幀對應(yīng)一個代表頻率和能量之間的關(guān)系的頻譜。在實際應(yīng)用中,有三種頻譜,即線性振幅譜、對數(shù)振幅譜和自功率譜,本文采用對數(shù)振幅譜。對數(shù)振幅譜中需對振幅做對數(shù)運算,其縱坐標的單位是分貝。對數(shù)振幅譜中振幅較低的成份相對高振幅成份得以拉高,從而可以觀察到掩蓋在低幅噪聲中的周期信號。從音頻文件生成聲譜圖的過程描述如下:
(1)讀取音頻文件,處理得到一個保存音頻數(shù)據(jù)的數(shù)組、采樣頻率和時長等信息;
(2)確定所需要用到的窗函數(shù)、窗長度、重疊長度、傅立葉點數(shù)等相關(guān)參數(shù),在傅里葉變換計算過程中需加窗進行平滑處理,以減弱非同步采樣造成的柵欄效應(yīng)和頻譜泄漏[5],常用的窗函數(shù)有矩形窗、漢寧窗、平頂窗、指數(shù)窗等,本文使用的是漢寧窗;
(3)將輸入數(shù)據(jù)做短時傅里葉變換處理,得到其中一幀語音的頻譜圖(頻率-幅度),對連續(xù)多幀語音進行相同處理,得到含時間、頻率序列的二維數(shù)組數(shù)據(jù);
(4)根據(jù)處理后的時頻矩陣繪制聲譜圖,以幀號(時間)為x軸,頻率為y軸,以顏色表示幅度。通過增加時間這個維度,就可以顯示一段語音而不是一幀語音的頻譜。聲譜圖生成的流程圖如圖1所示。

圖1 短時傅里葉變換生成聲譜圖的流程圖Fig.1 The flow chart of short-time Fourier transform to generate a spectrogram
聲譜圖生成結(jié)果示意如圖2所示。

圖2 聲譜圖生成結(jié)果示意圖Fig.2 Schematic diagram of the result of spectrogram generation
本文介紹了如何通過語音信號解調(diào)結(jié)果數(shù)據(jù)生成聲譜圖的方法,通過分析WAVE格式,解析WAVE文件,采用短時傅里葉變換實現(xiàn)時域數(shù)據(jù)到頻域數(shù)據(jù)的生成,然后根據(jù)時間-頻率-幅度信息得到了語音信號的語譜,為后續(xù)語音信號深度處理如降噪增強、端點檢測、語音識別等提供基礎(chǔ)支撐。
引用
[1] 孔旭,關(guān)佶紅.以聲譜圖相似度為度量的波形音樂檢索[J].計算機工程與應(yīng)用,2009,45(13):136-141.
[2] 孫端.短時傅里葉變換在工業(yè)測量中的應(yīng)用[J].機電信息,2020(26):14-15.
[3] 張子濤.基于小波和PNCC特征參數(shù)的語音識別技術(shù)研究[D].重慶:重慶大學(xué),2018.
[4] 胡航.現(xiàn)代語音信號處理[M].北京:電子工業(yè)出版社,2014.
[5] 劉會衡,王正強,宋立新.數(shù)字信號處理課程中利用DFT分析模擬信號頻譜的幾個問題[J].計算機時代,2020(06):13-16.