李冬梅,劉冀川
(中國電子科技集團公司第五十四研究所,河北石家莊050081)
語音變速處理是將所輸入的語音信號以任意的速度(慢或快)播放,這在目前是一項十分流行的語音處理技術,在語音合成、語音識別和頻譜分析等方面有著廣泛應用前景,引起了很多研究者的關注。對于數(shù)字語音信號,在改變其播放速度方面,傳統(tǒng)技術是通過改變輸出的采樣率來實現(xiàn),但這種方法會導致音調和音色發(fā)生變化,語音效果變差,嚴重時甚至無法識別語音內(nèi)容。為了達到變速不變調的效果,可以利用自相關函數(shù)、短時平均幅度差函數(shù)、倒譜法和小波變換等構成的基音檢測法以及基于參數(shù)編碼的LPC算法等,但這些方法在硬件設計和實現(xiàn)時比較繁瑣。本文根據(jù)基音波形的概念,在時域上對基音波形的復制和抽取,實現(xiàn)了語音的變速不變調處理和FPGA的實現(xiàn)。
從物理原理來看,語音信號是由肺擠壓出的空氣激勵發(fā)聲器官帶來的震動產(chǎn)生的。說話時聲帶相互靠攏但不完全封閉,這樣聲門變成一條窄縫,當氣流通過時壓力減小,從而聲帶完全合攏使氣流不能通過,在氣流被阻斷時壓力恢復正常,因而聲帶間的空隙形成,氣流再次通過。這一過程周而復始,就形成了一串周期性的脈沖氣流送入聲道。這個脈沖串的周期稱為“基音周期”,其倒數(shù)是“基音頻率”。這種方式發(fā)出的音為濁音。語音的另一種產(chǎn)生方式是聲門完全閉合,此時聲道不是受聲門周期脈沖氣流的激勵,而是利用口腔內(nèi)存有的空氣釋放出來而發(fā)聲。該氣流在口腔中形成湍流,因而帶有明顯的隨機噪聲的特點。這種方式發(fā)出的音為清音。語音產(chǎn)生過程的物理近似[1]過程如圖1所示。
圖1 語音信號產(chǎn)生的離散時域模型
根據(jù)以上發(fā)音原理可知,任何發(fā)聲行為都有振動過程,即必須有作用力使物體產(chǎn)生振動,從而產(chǎn)生聲波,這個作用力是間歇的,而非連續(xù)的。被振動的物體在前一作用力消除之后、后一作用力到來之前,產(chǎn)生回復到原狀態(tài)的運動,這樣便產(chǎn)生了振動。語音信號就是這種機械振動的電表現(xiàn),其波形與機械振動相對應,所以在十分小的時間間歇內(nèi),它應該可被看作是由微小的阻尼振動波所組成的,如圖2所示。這些微小的且具有實際含義的一段阻尼振動波被稱為基音波形,即音元。任何語音信號都是由音元連接構成的。一段語音信號如圖3所示,這段語音信號中包含了3個音元[2]。
圖2 阻尼振動波的波形
圖3 語音信號
語音信號的每一種語素實際上由一種基音波形的不斷重復產(chǎn)生,基音波形的頻譜決定了語音的頻譜特性,而重復的周期數(shù)則決定了語素的時間長度。因此,要實現(xiàn)變速不變調,就需要找出基音波形,然后修改基音波形的數(shù)據(jù)。比如,要實現(xiàn)聲音慢放1倍的變化,即原來正常放1 min的內(nèi)容,現(xiàn)在要放2 min,只需要重復一次基音波形;而實現(xiàn)聲音快放1倍的變化,即原來正常放1 min的內(nèi)容,現(xiàn)在要放0.5 min,則可以每隔一個基音波形刪除一個,就能夠實現(xiàn)聲音變速不變調。根據(jù)試驗觀察,音元長度通常短于20 ms。由于人耳有聽覺殘留的現(xiàn)象,所以取20 ms長的語音信號為一個音元。
為了保證語音信號改變播放速率的同時,信號相對強弱、頻率、音調和音色等特征不變,在原語音信號中增加或減少聲音信息來保持單位時間內(nèi)重放出的信息量不變,主要考慮的問題是在什么地方插入或刪除聲音信息、插入或刪除怎樣的信息。
語音變速處理包括語音變慢處理和變快處理。語音變慢處理是在部分或所有音元后插入一段信息單元。在確定了插入的聲音信息的位置后,需進一步確定插入多少聲音信息,插入的信息單元可以是空白信號、插入點前一小段信號和經(jīng)衰減的插入點前一小段信號。經(jīng)驗證,插入點前一小段信號效果較好,方法較簡單。語音變快處理是刪除部分音元,將未刪除的音元緊縮連接起來。處理方法如下:
①確定播放速率R,R為經(jīng)過處理后的語音播放速度與原始速度的比值;
②采集語音信號,以音元為單位切割語音信號,并按順序對音元進行標記,標記表示該音元在語音中的位置,如表1所示,原始語音信號的每個音元編號為0~n。
表1 定位誤差隨張角大小的變化
③對語音信號進行變速處理,以n/R向下取整后重新標記音元。將重新標記后的音元拼接在一起,如表1所示。慢放時,原速第4個音元放在了第5個的位置,中間空缺的音元補成前一個音元,后面的依此類推;快放時,原速第3個和第4個音元都重新標記為2,即刪除第4個音元,把第3個音元放在位置2,后面的依此類推。
④拼接時,拼接點處引起跳變,會有噪聲。采用加權濾波,將拼接的前一個音元的后幾個點與后一個音元的前幾個點加權相加,有效地去除了噪聲。
語音播放變速率FPGA實現(xiàn)的系統(tǒng)框圖如圖4所示。
圖4 語音播放變速率系統(tǒng)
將采集到的語音信號以音元為單位存儲到FPGA內(nèi)部RAM,將存儲的數(shù)據(jù)進行處理(如濾波等),然后根據(jù)播放速率R,將存儲的音元進行重新編號,存入另一個內(nèi)部FIFO中,將存入的數(shù)據(jù)按原采樣率放出即可實現(xiàn)語音的快放或慢放。
上述設計采用VHDL語言,并用Modelsim進行功能驗證。設計的實驗結果如圖5所示,它是將仿真得到的二進制語音數(shù)據(jù)經(jīng)MATLAB轉換為波形文件格式后顯示的時域波形。語音“Lesson one”原速播放時語音波形,時長625 ms,如圖5(a)所示;R=0.8慢放時語音波形,時長781 ms,如圖5(b)所示;R=1.5快放時語音波形,時長416 ms,如圖5(c)所示??梢钥闯?,語音波形基本保持一致,并無明顯的噪聲引入。基因波形沒有改變,語音的頻譜特征就沒有改變,即實現(xiàn)了語音播放變速不變調。
圖5 語音變速波形圖比較
采用上述的語音播放變速不變調算法分別測試了漢語、英語、日語、韓語、法語和德語等多種語言,通過試聽,由于語調不變,可懂度的主觀MOS分可以達到4以上。采用的方法簡單直觀、速度快、專用資源少,更適合于集成電路的實現(xiàn)。
[1]谷源濤,應啟珩,鄭君里.信號與系統(tǒng)-MATLAB綜合試驗[M].北京:高等教育出版社,2008:108-119.
[2]蘇 勇.音頻信號保真變速處理方法[P].中國:1145519A,1997.
[3]韓紀慶,張 磊,鄭鐵然.語音信號處理[M].北京:清華大學出版社,2004:11-41.
[4]趙 力.語音信號處理[M].北京:機械工業(yè)出版社,2003:20-30.
[5]POHLMANN K C.數(shù)字音頻原理與應用[M].蘇 菲,譯.北京:電子工業(yè)出版社,2002:13-30.
[6]易克初,田 斌,付 強.語音信號處理[M].北京:國防工業(yè)出版社,2000:51-58.
[7]韓 慧,王繼祥.一種提高語音干擾效果評估準確度的方法[J].無線電工程,2011,41(3):17 -19.
[8]徐大為,吳邊,趙建偉,等.一種噪聲環(huán)境下的實時語音端點檢測算法[J].計算機工程與應用,2003(1):115-117.
[9]ROUAT J,LIU Y C,MORISSETTE D.A Pitch Determination and Voiced/Unvoiced Decision Algorithm for Noisy Speech[J].Speech Comm,1997,21(3):191 -200.
[10]王曉亞,魯玉海.語音的端點檢測處理技術[J].無線電工程,2010,40(2):16 -18.
[11]劉 驍,張海燕,劉鎮(zhèn)清.一種變速語音音調復原的處理方法[J].電聲技術,2000(7):7-9.