李要芳 劉智



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