基于語(yǔ)音頻譜的共振峰聲碼器實(shí)現
語(yǔ)音編碼算法利用語(yǔ)音信號的冗余信息及某些人耳不敏感的信息,可以在低比特率上獲得較高質(zhì)量的重建語(yǔ)音,壓縮編碼一直是通信中的關(guān)鍵技術(shù)。語(yǔ)音信號研究者們一直在尋求一種在保持語(yǔ)音質(zhì)量不顯著(zhù)下降的情況下使語(yǔ)音信號的編碼比特率最小的方法,特別地,低比特率語(yǔ)音編碼體制(比特率在4.8 kb/s以下)因其廣泛的需求而得到研究者的重視。
語(yǔ)音編碼器的性能常常用比特率、延時(shí)、復雜度和質(zhì)量4個(gè)屬性來(lái)進(jìn)行衡量,因此,在分析語(yǔ)音編碼器的性能時(shí),主要應該考慮這些屬性。值得注意的是,這些屬性之間不是孤立的,而是相互緊密聯(lián)系的,例如,低比特率的編碼器一般比高比特率的編碼器有更大的延時(shí)、更高的算法復雜度和較低的語(yǔ)音質(zhì)量。因此在對各種編碼算法進(jìn)行取舍時(shí),應根據實(shí)際應用環(huán)境,在這些屬性之間進(jìn)行權衡。
共振峰參數編碼算法在低碼率的音頻編碼中應用越來(lái)越廣泛。與基于時(shí)域波形的壓縮算法相比,他在傳輸的過(guò)程中只需要傳輸構造信號所用的基頻和共振峰參數,因此可以大大地降低傳輸的碼率,實(shí)現低碼率下的多媒體通信。而且,基于共振峰參數的算法無(wú)須嚴格限制信號的結構,他可以靈活地描述音頻信號的特征。這一靈活性決定了基于共振峰參數的算法,可以滿(mǎn)足對音頻信號進(jìn)行方便訪(fǎng)問(wèn)和控制的需要。
2 基頻及共振峰提取
基頻與共振峰參數的準確提取對于共振峰編碼算法質(zhì)量起著(zhù)至關(guān)重要的作用。在本課題中采用改進(jìn)的雙重傅里葉變換算法進(jìn)行語(yǔ)音參數提取。本課題分析算法所需要的語(yǔ)音頻譜是由機語(yǔ)公司的SA-0505語(yǔ)譜儀分析得到。機語(yǔ)公司的SA-0505頻譜分析儀最高分辨精度為頻率分辨精度為5 Hz,時(shí)間分辨精度為5 ms。分析結果是各頻率分量的幅值函數,不包含相位信息。由于語(yǔ)音信號中相位信息不影響語(yǔ)音分辨,所以在此基礎上的進(jìn)一步工作有很大意義。
在實(shí)際的語(yǔ)音參數提取過(guò)程中,首先應用機語(yǔ)語(yǔ)譜儀分析語(yǔ)音信號,得到語(yǔ)音的時(shí)頻分析圖譜。如圖l所示。
對各時(shí)刻的頻譜序列進(jìn)行傅里葉變換,圖2所示時(shí)刻的頻譜序列的傅里葉變換如圖3所示。
從圖2中可以看出,由于實(shí)際的語(yǔ)音是準周期信號和實(shí)際上是短時(shí)間信號的頻率分析,其頻譜序列不是周期性沖激函數序列的采樣,而是近似三角脈沖的采樣,所以其傅里葉變換的幅度譜呈現高頻衰減性質(zhì)。從圖3中可以觀(guān)察到頻譜序列的幅度譜是周期信號和高頻衰減信號的乘積。實(shí)際語(yǔ)音分析過(guò)程中各時(shí)刻頻譜序列的傅里葉變換后衰減幅度差異很大,低頻部分有時(shí)會(huì )出現分支脈沖的幅值大于下一個(gè)周期主脈沖的幅值,這對信號周期地分辨產(chǎn)生一定的干擾,而無(wú)法準確估計基頻值。所以本文在確定基頻時(shí)利用高頻部分衰減幅度差異較小的特點(diǎn),分析其周期特性并用來(lái)計算語(yǔ)音基頻。
共振峰參數包括共振峰頻率、頻帶寬度和幅值,共振峰信息包含在語(yǔ)音頻譜的包絡(luò )中。因此共振峰參數提取的關(guān)鍵是估計語(yǔ)音頻譜包絡(luò ),并認為譜包絡(luò )中的最大值就是共振峰。利用語(yǔ)音頻譜傅里葉變換相應的低頻部分進(jìn)行逆變換,就可以得到語(yǔ)音頻譜的包絡(luò )曲線(xiàn)。依據頻譜包絡(luò )線(xiàn)各峰值能量的大小確定出第1~第4共振峰,如圖4所示。
對于提取參數準確性的測試,可以在時(shí)域和頻域上與人工分析的結果進(jìn)行比較,這種方法可以定量計算出提取算法的準確度,但工作量大不易實(shí)現。由于基頻和共振峰兩個(gè)基本信息是語(yǔ)音信號辨別的主要特征點(diǎn),所以判斷兩個(gè)參數重建語(yǔ)音信號的語(yǔ)音質(zhì)量就可了解參數提取算法的性能。語(yǔ)音信號重建采用諧波合成方法,即首先根據共振峰信息建立語(yǔ)音頻譜的包絡(luò ),然后根據頻譜包絡(luò )確定基頻及其各次諧波的幅值并合成語(yǔ)音信號。本文應用所得到的參數重新生成語(yǔ)音,主觀(guān)分辨合成語(yǔ)音的質(zhì)量,據此判斷參數提取算法準確度。在短時(shí)間內語(yǔ)音信號可以被看作是平穩信號,所以每一幀的語(yǔ)音頻譜也可以簡(jiǎn)化為一組離散信號,離散的量化值就是基頻。根據離散頻譜利用式(1),式(2)合成語(yǔ)音信號:
V(t)為合成語(yǔ)音信號,fp為基頻。為避免出現尖峰信號,設定了相位φn(ω)函數:
比較3種方式確定的離散頻譜所合成的語(yǔ)音信號:
(1)直接對原語(yǔ)譜圖離散;
(2)對所得的語(yǔ)譜包絡(luò )離散;
(3)對根據共振峰值確定的頻譜包絡(luò )離散。
此方式的具體方案是:由于人耳對共振峰的參數中的中心頻率敏感,而對幅值和帶寬不敏感,所以本文只用共振峰的中心頻率和最大幅值兩個(gè)參數信息來(lái)合成語(yǔ)音。
根據成年人語(yǔ)音信號的共振峰帶寬大約300 Hz,將各共振峰的帶寬統一定為300 Hz。重新作語(yǔ)音頻譜包絡(luò )線(xiàn)時(shí),以各共振峰中心頻率值為中點(diǎn)、最大能量為幅度作寬度為300 Hz的門(mén)信號,然后根據新生成的包絡(luò )線(xiàn)確定基頻的各次諧波的幅值。用第一種語(yǔ)譜圖合成語(yǔ)音聽(tīng)起來(lái)只是音質(zhì)略有變化,可以清晰分辨每個(gè)音節,完整保留原語(yǔ)音的語(yǔ)調、語(yǔ)氣和說(shuō)話(huà)人音質(zhì)特征等信息。這說(shuō)明算法能夠準確提取基頻信息,而且這種合成方法可以合成出高質(zhì)量的語(yǔ)音信號。用第二種語(yǔ)譜圖合成的語(yǔ)音中說(shuō)話(huà)人音質(zhì)特征有些不清楚,其他方面與第一種相同。第三種語(yǔ)譜圖和成的語(yǔ)音中說(shuō)話(huà)人音質(zhì)特征完全被過(guò)濾掉,個(gè)別音節有些含糊,但語(yǔ)氣、語(yǔ)調信息完整保留。
3 共振峰語(yǔ)音編碼
共振峰編碼算法需要基頻和共振峰兩種參數。通過(guò)實(shí)驗表明應用基頻、共振峰信息不但可以重建語(yǔ)音中的元音和濁輔音部分,還可以重建清輔音部分。首先是因為參數提取算法在清輔音部分時(shí)所確定的基頻參數不穩定,根據不穩定參數重建的語(yǔ)音信號會(huì )出現跳變,這種跳變信號與清輔音的頻譜相似。更重要的原因人耳對于輔音的聽(tīng)辨要點(diǎn)是過(guò)渡音征,所以只要準確提供共振峰值就能重建清輔音部分。根據語(yǔ)音信號合成的研究表明,表示濁音信號最主要的是前三個(gè)共振峰。一個(gè)語(yǔ)音信號的共振峰模型,只用前三個(gè)時(shí)變共振峰頻率就可以得到可懂度很好的合成濁音??紤]到特殊情況下可能會(huì )出現偽共振峰,本算法在確定編碼參數時(shí)根據共振峰幅值大小保留4個(gè)共振峰參數。
3.1 參數量化
語(yǔ)音編碼算法最主要的兩個(gè)主要指標是比特率和語(yǔ)音質(zhì)量。低速率語(yǔ)音編碼算法要求在語(yǔ)音可懂的基礎上最大限度地降低比特率。為確定各參數的最大量化度,我們對各參數進(jìn)行不同程度量化后重新合成語(yǔ)音,并評價(jià)各量化程度的語(yǔ)音質(zhì)量。
正常語(yǔ)音的基頻變化范圍為50~500 Hz,基頻量化實(shí)驗時(shí)發(fā)現當基頻量化精度為20 Hz時(shí),重建的語(yǔ)音信號仍然清晰。所以編碼時(shí)基頻最低可以用5 b表示,但為了提高抗誤碼能力用8 b對基頻進(jìn)行編碼。共振峰的量化分為頻率值量化和幅值量化。根據參數提取算法可知,共振峰曲線(xiàn)是基頻及其各次諧波的包絡(luò )線(xiàn)。我們可以認為語(yǔ)音頻譜是基頻及其諧波對共振峰曲線(xiàn)采樣信號,所以可以以基頻值作為描述共振峰曲線(xiàn)的精度。共振峰的中心頻率值就可以用基頻的第幾次諧波確定,所以變化范圍是1~32,編碼時(shí)用5 b表示。人耳對共振峰幅值不敏感,通過(guò)語(yǔ)音實(shí)驗表明當時(shí)域上以16位采樣精度錄制語(yǔ)音,信號振幅變化范圍210~215時(shí)用3 b對幅值編碼時(shí)就能清楚表現語(yǔ)音。所以對于每個(gè)共振峰可以用8 b量化,其中5 b表示中心頻率,3 b表示幅值。
3.2 編碼規則
編碼中語(yǔ)音幀周期可以分為動(dòng)態(tài)和固定兩種形式。動(dòng)態(tài)形式是每幀的周期根據基頻來(lái)確定,即每幀是一個(gè)基頻周期。這種方式在解碼時(shí)語(yǔ)音清晰度自然度最好,但由于幀周期的長(cháng)度小導致編碼率高。固定形式是幀的周期是一定的,根據實(shí)際情況可以設定為10~40 ms。周期長(cháng)度與音質(zhì)成反比,與壓縮率成正比。本算法中幀周期采用固定形式設定為25 ms。根據頻譜能量值判斷是否有語(yǔ)音,當沒(méi)有語(yǔ)音時(shí)以一個(gè)0字節編碼。我們采用一個(gè)字節表示靜音幀,是為了提高算法的抗誤碼能力。
3.3 結果
用本算法對一段正常語(yǔ)速朗讀的語(yǔ)音材料進(jìn)行編碼及解碼,解碼后語(yǔ)音可懂性好,平均碼率1 400 b/s。
4 結 語(yǔ)
理論上只要有準確的基頻和共振峰參數,就可以恢復出原語(yǔ)音信號除嗓音音質(zhì)特征外其他所有特征。本算法所用的參數只有基頻和4個(gè)共振峰,對于語(yǔ)音信號這些參數是分辨語(yǔ)音信息的特征參數。當編碼信息中只含有這些參數,則可以認為就每幀信號來(lái)講沒(méi)有冗余信息,也就是對于每幀信號編碼達到了最大壓縮。如果在本算法基礎上要進(jìn)一步提高壓縮率,只能針對幀與幀間的關(guān)聯(lián)來(lái)設計,如矢量量化算法等。
本編碼算法的延時(shí)短、復雜度低,可以用于實(shí)時(shí)的語(yǔ)音信號傳輸。在比特率、延時(shí)、復雜度3個(gè)評價(jià)指標上其性能良好,解碼后語(yǔ)音有輕微的機器音和個(gè)別音節含糊。導致語(yǔ)音音質(zhì)差的因素有兩個(gè):一是參數量化時(shí)出現誤差,根據實(shí)驗分析誤差主要是共振峰量化誤差,所以量化編碼時(shí)根據實(shí)際要求在音質(zhì)和編碼率間進(jìn)行選擇;二是語(yǔ)音重建算法,本文重建時(shí)只是簡(jiǎn)單地用門(mén)函數表示共振峰幅頻特性,如果能在深入研究共振峰幅頻特性的基礎上改進(jìn)重建算法,解碼后語(yǔ)音音質(zhì)一定會(huì )得到改善。
評論