李要芳 劉智
摘要:變聲器是通過對聲音的音色和音調(diào)的雙重復(fù)合改變,實(shí)現(xiàn)對輸出聲音的變聲?,F(xiàn)使用基于基音同步疊加(PSOLA)算法的波形編輯和拼接技術(shù),利用虛擬儀器軟件LabVIEW對采集的聲音信號進(jìn)行濾波、調(diào)頻處理,實(shí)現(xiàn)了對語音信號的變聲處理。該設(shè)計提供了一種變聲器設(shè)計的簡便快捷方法,具有很好的應(yīng)用前景。
關(guān)鍵詞:基音同步疊加(PSOLA)算法;LabVIEW;變聲器設(shè)計
0 ? ?引言
近年來,語音識別和基于語音段的建模方法逐漸成為研究熱點(diǎn)。在語音合成方面,基于基音同步疊加(PSOLA)算法的波形編輯和拼接技術(shù)就是最具有代表性的一種方法[1-2]。本設(shè)計通過LabVIEW[3]設(shè)計一個變聲器,利用PSOLA算法與重采樣技術(shù)結(jié)合,實(shí)現(xiàn)音頻的變調(diào)不變速以及多種頻段的變調(diào),從而達(dá)到變聲的功能。
1 ? ?變聲器的理論基礎(chǔ)
基音同步疊加(PSOLA)算法是利用短時傅里葉變換重構(gòu)信號的疊加法,主要有基音同步分析、基音同步修改以及基音同步合成三個部分[2]。
1.1 ? ?基音同步分析
設(shè)采集的音頻信號為X(n),選擇合適的時窗分析窗口hm(n)對原始合成單元做加窗處理,得到一組短時信號xm(n)如式(1)所示:
xm(n)=hm(tm-n)X(n) ? ? ? ? ? ?(1)
式(1)中,tm為基音標(biāo)注點(diǎn),hm(n)一般采用漢明窗(Hamming),窗長大于原始信號的一個基音周期,因此窗間有重疊,窗長一般取原始信號基音周期的2~4倍,即得hm(n)如式(2)所示:
hm(n)=h(n)(n/μp) ? ? ? ? ? ? (2)
式(2)中,h(n)為歸一化窗長,μ為窗覆蓋基音周期數(shù)的比例系數(shù),p為基音周期。通常情況下,取μ=2,能夠使合成簡化。若要提高基頻,令p取為原始分析基音周期;若要降低基頻,令p取為合成基音周期,這樣能夠使得合成簡化。
1.2 ? ?基音同步修改
基音同步修改分修改聲音的時域與頻域特性[4],對語音基頻的修改是通過對合成單元標(biāo)記間隔的增加來減少正在進(jìn)行的語音,對語音時長的修改是通過合成單元同步標(biāo)記的插入來刪除正在進(jìn)行的語音。
首先,進(jìn)行語音基頻的修改,對短時分析信號xm(n)進(jìn)行傅里葉變換Xm(n),得到短時分析傅里葉變換,如公式(3)所示:
Xm(n)=Xm(ej2πn/N)=xm(n)e-j2πn/N ?(0≤n≤N-1) ? ? (3)
又Xm(n)有公式如下:
Xm(n)=E(n)V(n) ? ? ? ?(4)
式中:E(n)為分析音段激勵源信號頻譜;V(n)為頻譜的譜包絡(luò)部分。
然后,按照音高調(diào)整系數(shù)對音段激勵源信號頻譜E(n)進(jìn)行拉伸或壓縮,得到合成激勵源頻譜E′(n)。將E′(n)與原始頻譜的譜包絡(luò)V(n)相乘得到短時合成傅里葉頻譜Xm′(n)如式(5)所示:
Xm′(n)=E′(n)V(n) ? ? ? ? ? ?(5)
最后,進(jìn)行語音時長的修改。首先對短時合成傅里葉頻譜Xm′(n)進(jìn)行傅里葉逆變換,得到中間短時合成信號xm′(n)。然后對原始拼接單元時長進(jìn)行修改,得到新的中間短時合成信號xp′(n),這樣,新的基音標(biāo)注tp就取代了前面中間短時合成信號的基音標(biāo)注tm,當(dāng)時長調(diào)整系數(shù)為λ時,選擇合適的tm使之與λtp最接近,則xp′(n)=xm′(n)。當(dāng)時長調(diào)整系數(shù)λ<1時,則加快語音,需要去掉一些短時信號;當(dāng)時長調(diào)整系數(shù)λ>1時,則放慢語速,需要重復(fù)一些短時信號。這樣就可以得到與新合成信號基音標(biāo)記同步的短時合成信號序列。
1.3 ? ?基音同步合成
采用合成信號譜與原始信號譜差異最小的最小平方疊加合成法,合成的信號如式(6)所示:
x(n)=∑papxp(n)hp(tp-n)/∑php2(tp-n) ? ? ?(6)
式中:分母是時變單位化因子,hp(n)是合成窗序列,是窗之間時變疊加的能量補(bǔ)償,ap是音強(qiáng)調(diào)整系數(shù),用來調(diào)整合成語音信號的強(qiáng)度。
式(6)也可簡化如下:
x(n)=∑papxp′(n)/∑php(tp-n) ? ? ?(7)
公式(7)中的分母是時變的單位化因子,用來補(bǔ)償相鄰窗口疊加部分的能量損失。在寬帶條件下,當(dāng)合成窗長為合成基音周期的兩倍時,該因子也為常數(shù);在窄帶條件下該因子接近于常數(shù)。故式(7)可進(jìn)一步簡化為如式(8)所示:
x(n)=∑papxp′(n) ? ? ? ? ?(8)
2 ? ?變聲器的設(shè)計
2.1 ? ?前面板的總體設(shè)計
為了使界面看起來簡潔,變聲器的設(shè)計分為聲音采集模塊、聲音錄制模塊和聲音播放模塊。如圖1所示,左邊將聲音信號采集到LabVIEW并顯示波形,右邊將采集到的聲音信號進(jìn)行變聲處理后播放。此次設(shè)計設(shè)有五種聲音播放效果,如圖1所示。
2.2 ? ?后面板的程序設(shè)計
后面板程序設(shè)計主要分3個部分,即聲音采集程序設(shè)計、聲音播放程序設(shè)計與變聲處理程序設(shè)計。
2.2.1 ? ?聲音采集程序設(shè)計
聲音采集的程序由一系列聲音輸入VI和一系列聲音文件VI并列組成[5-6]。聲音采集程序框圖如圖2所示[7]。
2.2.2 ? ?聲音播放程序設(shè)計
聲音播放程序框圖是由聲音輸出VI和聲音文件VI組成,實(shí)現(xiàn)的功能為把聲音文件播放出來。程序框圖如圖3所示。
2.2.3 ? ?變聲處理程序設(shè)計
變聲處理程序如圖4所示。變聲之前先用數(shù)字IIR濾波器VI將寫入的聲音信號進(jìn)行濾波處理,然后用FFT頻譜(幅度-相位)VI將聲音進(jìn)行傅里葉變換,得到變換的頻譜。然后使用FFT功率譜和PSD VI,計算時間信號的平均自功率譜,最后用窗口函數(shù)縮放VI截取語音信號樣本,就得到了變聲處理后的聲音信號[4]。
3 ? ?程序運(yùn)行與分析
采集聲音效果測試時,在界面中顯示采集的聲音波形。聲音采集播放程序運(yùn)行效果如圖5所示。
4 ? ?結(jié)語
本文使用基于基音同步疊加(PSOLA)算法的波形編輯和拼接技術(shù),利用虛擬儀器軟件LabVIEW對采集的聲音信號進(jìn)行濾波、調(diào)頻處理,實(shí)現(xiàn)了對語音信號的變聲處理。本設(shè)計能使變聲器的設(shè)計更加簡便快捷,具有很好的應(yīng)用前景。
[參考文獻(xiàn)]
[1] 黎子芬,謝曉方,林麗娜,等.基于TD-PSOLA算法的語音合成方法研究[J].海軍航空工程學(xué)院學(xué)報,2008,23(1):101-104.
[2] 涂相華,蔡蓮紅.用于語音合成的PSOLA算法簡介[J].微型計算機(jī),1996(4):5-9.
[3] 劉君華,賈惠芹,丁暉,等.虛擬儀器圖形化編程語言LabVIEW教程[M].西安:西安電子科技大學(xué)出版社,2007.
[4] 彭柏,許剛.利用頻譜搬移控制語音轉(zhuǎn)換中的共振峰[J].電聲技術(shù),2007,31(1):39-43.
[5] 熊國華,羅頌榮,王耕耘.基于聲卡虛擬音頻信號分析儀設(shè)計[J].國外電子測量技術(shù),2006,25(4):37-39.
[6] 于琳,陳健.基于Labview的聲卡信號采集及其分析系統(tǒng)設(shè)計[J].儀器儀表用戶,2009,16(4):39-41.
[7] 孟武勝,朱劍波,黃鴻,等.基于LabVIEW數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].電子測量技術(shù),2008(11):63-65.
收稿日期:2020-07-17
作者簡介:李要芳(1987—),男,湖南常德人,碩士,工程師,主要從事液壓鑿巖機(jī)、頂錘式液壓鉆機(jī)、掘進(jìn)臺車、礦用振動篩等方面的設(shè)計研究工作。
劉智(1986—),男,湖南岳陽人,博士,講師,主要從事流體傳動與控制、液壓鑿巖裝備方面的研究與教學(xué)工作。