1 引言
改變聲音信號的音調(diào)是許多商用設(shè)備的一種功能,最典型的應(yīng)屬卡拉OK機了。由于發(fā)音音調(diào)高低因人而異,人們希望伴奏音樂的音調(diào)適合自己的嗓音,因此卡拉OK機中設(shè)計了專門的硬件來實現(xiàn)這一功能。例如雅馬哈公司的用于數(shù)字變調(diào)的大規(guī)摸集成電路 YSS222D和YSS216B,內(nèi)部集成了A/D,D/A和數(shù)字信號處理器,利用采樣和重放數(shù)據(jù)時速度的不同來實現(xiàn)變調(diào)。功能,重放比采樣速度快則升調(diào),反之則降調(diào)。另外,為了使播放時間不變,還需對數(shù)據(jù)段進行復(fù)制或刪除。由于商業(yè)保密的需要,具體算法未公開,據(jù)可詢資料實現(xiàn)的系統(tǒng),不能有效解決因復(fù)制或刪除數(shù)據(jù)帶來的相位不連續(xù)問題。
當(dāng)前,聲卡已成為計算機的基本配置,但無變調(diào)功能,為彌補這一缺憾,可以采用件的方法對聲音文件重新編碼,使聲卡回放時音調(diào)改變。另外,數(shù)字音頻工作站也需要軟件實現(xiàn)變調(diào)功能。因此討論了3種軟件實現(xiàn)算法,圍繞著如何變調(diào)而不變時間,以及如何解決相位不連接問題,從變調(diào)原理著手,討論了時域?qū)崿F(xiàn)的理論依據(jù),最后找到了一種有效的變調(diào)方法-- 頻域處理法,實驗證實效果良好。
2 變調(diào)的樂理基礎(chǔ)
聲音是由物體振動產(chǎn)生的,聲音的基本要素有:音調(diào)、音強和音色。樂音體系根據(jù)振動頻率即音調(diào)的不同,將樂音分成音級,基本音級廣泛采用CDEFGAB這8個字母命名,某音級與往上數(shù)8個音級之間的距離稱為“純八度”,世界上普遍采用的12平均律將一個純八度分成12個均等的半音,相鄰兩個半音間的物理振動頻率相差21/12倍,也就是說各半音間的振動頻率成等比關(guān)系,一個純八度頻率相差2倍。
如果將信號中的所有頻率成分升高或降低21/12倍,就能使音調(diào)升高或降低一個半音。假設(shè)原信號頻率為f,變調(diào)后頻率為f,二者的關(guān)系應(yīng)該滿足
f=fx2d/12, d=±1 ,±2,±3 (1)
當(dāng)d》0時,升調(diào),反之,降調(diào);d每變化1,音調(diào)升高或降低一個半音。
3 時域?qū)崿F(xiàn)的依據(jù)及存在的問題
一種實現(xiàn)變調(diào)的作法,是采用硬件實現(xiàn)相似的辦法,即改變WAV文件頭中有關(guān)采樣率的信息。如果采樣率提高,則聲卡回放速度加快,產(chǎn)生升調(diào)的效果,同時回放時間變短;反之,產(chǎn)生降調(diào)的效果,回放時間變長。為保持時間不變,以幀為單位,利用信號的短時周期性,升調(diào)時將幀內(nèi)后部數(shù)據(jù)段復(fù)制,降調(diào)時將幀內(nèi)后部數(shù)據(jù)段刪除,圖1畫出了一幀的數(shù)據(jù)處理情況??梢钥吹剑羰巧{(diào),幀間數(shù)據(jù)是連續(xù)的,但由于數(shù)據(jù)段的復(fù)制,幀內(nèi)數(shù)據(jù)段間相位不連續(xù);若是降調(diào),幀內(nèi)數(shù)據(jù)連續(xù),但幀間數(shù)據(jù)相位不連續(xù),因此聲音質(zhì)量必然受到影響,產(chǎn)生喀嚓聲。
另一種方法是,采用時域抽選和內(nèi)插[4]。下面分析抽選和內(nèi)插的頻譜,看如何實現(xiàn)變調(diào)。抽選表示成下式
Xd[n]=[nM] (2)
表示每M個采樣值選1個,其余M-1個舍棄,則信號長度縮短為1/M。抽選后信號頻譜和原信號頻譜間的關(guān)系為
1 M-1
Xd(ejω)=-Σ X[ej(ω/M-2πi/M (3)
M i=0
圖2所示粗線為M=2的抽選信號頻譜,粗實線為M=2的抽選信號頻譜,可以看出,抽選后信號的頻率成分均為原來的2倍,所以能實現(xiàn)升調(diào)。為防止抽選后頻譜混疊,抽選前必須作抗混疊數(shù)字低通濾波,截止頻率為π/M。
再看看內(nèi)插的頻譜變化。內(nèi)插時域表示成
Xi[n]={x[n/L,n=O,±L,+2L,+3L, 。.. (4)
0, 其它
表示每兩個采樣值中插入L-1個零,整個信號長度增加為L倍。內(nèi)插后信號頻譜和原信號頻譜間的關(guān)系為
Xi(ejω)=X(ejLω) (5)
圖2虛線所示為L=2的內(nèi)插信號頻譜,可以看出,所有頻率成分均為原信號的1/2,所以能實現(xiàn)降調(diào)。為不產(chǎn)生鏡像頻率成分,內(nèi)插后必須作反鏡像數(shù)字低通濾波,截止頻率π/L,也可用線性內(nèi)插取代插零,而無須反鏡像濾波。
抽選和內(nèi)插后的數(shù)據(jù)量同樣會變短或變長,下面來推導(dǎo)保持?jǐn)?shù)據(jù)量不變的具體實現(xiàn)方法。根據(jù)上述抽選和內(nèi)插的頻譜變化情況,反推時域變化過程:若將信號作快速離散傅里葉變換(FFT),將譜線沿頻率軸擴張或收縮,再作反變換(IFFT),得到的信號應(yīng)該是被升調(diào)或降調(diào),并且數(shù)據(jù)量保持不變。
非整數(shù)倍的變調(diào)可由抽選和內(nèi)插結(jié)合實現(xiàn),同樣可以采用數(shù)據(jù)段的復(fù)制或刪除的辦法保持?jǐn)?shù)據(jù)量即回放時間不變,其系統(tǒng)結(jié)構(gòu)如圖3所示。但對于復(fù)制或刪除數(shù)據(jù)后段間相位的不連續(xù)性問題,有些資料[3]提出找出信號的基音周期,以基音周期為復(fù)制或刪除單位,并幀間重疊處理,也不能從根本上解決相位問題。
4 頻域?qū)崿F(xiàn)的算法研究
現(xiàn)在考慮采用頻域?qū)崿F(xiàn)來解決相位問題。
首先采用頻譜伸展的辦法得到升調(diào)的信號,如圖4所示,(a)為原始信號波形及FFT的幅度和相位圖,(b)為將原始信號的FFT譜線向高頻伸展一倍,中間內(nèi)插零,再IFFT得到信號波形及FFT幅度和相位圖,情況和時域抽選一樣。然后考慮將頻譜伸展過程中的譜線內(nèi)插零改成線性內(nèi)插,如(c)所示,可見信號波形段間能很好地吻合,但波形失真較大。最終發(fā)現(xiàn)結(jié)合插零和線性內(nèi)插,低頻插零,高頻線性內(nèi)插,既能保證波形失真較小又能在兩段相連處較好地過濾,如(d)所示。
對于降調(diào),圖5(a)是2幀原始信號波形及后一幀的FFT幅度圖,圖5(b)采用FFT譜線向低頻收縮,再IFFI,得到的波形和時域內(nèi)插法一樣,改進措施見圖5(c),被處理的連續(xù)兩幀信號間有一部分重疊,得到的兩幀信號波形便能很好地過渡。
因此,要實現(xiàn)式(1)任意倍頻率的變調(diào),令α=2d/A2,采用以下公式。為簡單起見,低頻高頻均線性內(nèi)插:
X[K]=FFT[x(n)], k=0,1,。..N-1 (6)
y[n]=IFFT[Y(K)],n=0,1,。..N-1 (8)
其中N是幀長,int()表示取整,min()表示取較小值。注意,僅僅對于降調(diào)a
另外幀長,即被處理的數(shù)據(jù)長度也必須適當(dāng),如果太短,會造成數(shù)據(jù)的復(fù)制和刪除太過頻繁;過長,又不符合短時周期性,明顯地感到聲音的多次重復(fù)或被打斷。經(jīng)過實驗表明,幀長取4000點左右比較合適,對于采樣率44.1 kHz的音頻信號是0.1 s的數(shù)據(jù)量,4 000點的FFT使頻譜取樣間隔為10Hz左右。
5 結(jié)束語
實現(xiàn)變調(diào)的基本原理是改變信號的頻率成分,可以通過時域抽選或內(nèi)插實現(xiàn),但為保持時間不變,每幀要復(fù)制或刪除部分?jǐn)?shù)據(jù)段,由此帶來相位不連續(xù)從而影響聲音質(zhì)量。文中提出的頻域法,根據(jù)變調(diào)的原理,將FFT譜線向高頻或低頻搬移,再作IFFT得到時域信號,若升調(diào)譜線搬移過程中采用線性內(nèi)插,降調(diào)采用時域幀間重疊,能消除數(shù)據(jù)段的不連續(xù)問題,改善變調(diào)后的聲音質(zhì)量。頻域?qū)崿F(xiàn)無須低通抗混疊濾波或低通反鏡像濾波,且FFT是快速算法,假設(shè)采用如ADSP2181或TMS320C54X,乘法運算占用單指令周期的DSP芯片,運算量小于1 MIps,實時運算不成問題??梢?,頻域法是一種有效可行的辦法。
責(zé)任編輯:gt
-
處理器
+關(guān)注
關(guān)注
68文章
19432瀏覽量
231283 -
集成電路
+關(guān)注
關(guān)注
5392文章
11630瀏覽量
363340 -
計算機
+關(guān)注
關(guān)注
19文章
7546瀏覽量
88696
發(fā)布評論請先 登錄
相關(guān)推薦
評論