專利名稱:一種基于數(shù)字信號(hào)處理的語音變聲方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種語音變聲方法,更具體地說,本發(fā)明涉及一種基于數(shù)字信號(hào)處理的語音變聲方法。
背景技術(shù):
基頻和共振峰是語音中兩個(gè)非常重要的特征?;l是發(fā)濁音時(shí)聲帶振動(dòng)的頻率,基頻的高低與說話人的性別直接相關(guān),一般來說男聲的基頻比較低,女聲的基頻比較高。此外,年齡對(duì)于基頻的高低也有一定影響,老年人的基頻比年青人的基頻低,年青人的基頻要比兒童的基頻低。所以通過改變基頻,就能改變語音的效果,影響人對(duì)說話人年齡甚至性別的判斷。
共振峰是指聲門波在聲道里的共鳴頻率。共振峰與聲道的長度有很大的相關(guān)性,聲道越長共振峰的頻率越高,反之亦然。相對(duì)來說,男子的聲道比女子的聲道要長一些,所以男聲的共振峰頻率比女聲的共振峰頻率相對(duì)也要高一些。因此通過改變共振峰,能夠影響人對(duì)說話人的判斷。
對(duì)于修改共振峰的頻率,大部分方法都是基于參數(shù)合成的算法。這些方法普遍存在的問題是運(yùn)算量比較大,需要人工干預(yù),合成的語音的自然度比較差。
對(duì)于改變基頻,目前已經(jīng)有了很多方法。應(yīng)用比較廣泛的有PSOLA算法(PitchSynchronous Overlap and Add),混合諧波隨機(jī)模型法(Hybrid Harmonic/StochasticModel),自回歸線性預(yù)測(cè)系數(shù)法(Auto-Regressive LPC)等方法。PSOLA算法因?yàn)榉椒ê唵?,運(yùn)算量小,而且合成語音的自然度很高,所以應(yīng)用最為廣泛。不過由于PSOLA算法本身的局限性,當(dāng)需要改變基頻范圍比較大時(shí),語音就會(huì)產(chǎn)生相當(dāng)多的混疊現(xiàn)象,造成很大的噪聲。其他兩種方法改變基頻后語音的自然度要差一些,而且這兩種方法的運(yùn)算量都比較大,在DSP芯片實(shí)時(shí)實(shí)現(xiàn)會(huì)有一定的困難。此外,這些方法都會(huì)改變?cè)颊Z音的長度,這對(duì)于變聲后語音的實(shí)時(shí)傳送會(huì)造成很大的問題。而且現(xiàn)有的變聲方法基本上都采用的是模擬電路的方法,不適合于在數(shù)字信號(hào)處理器(DSP)上實(shí)現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種改進(jìn)的語音變聲方法,通過改變語音的基頻和共振峰頻率來獲得變聲的效果;本發(fā)明的目的還在于提供一種改進(jìn)的語音變聲方法,使得變聲后的語音信號(hào)與原始語音信號(hào)長度一致。
本發(fā)明的目的是這樣實(shí)現(xiàn)的一種基于數(shù)字信號(hào)處理的語音變聲方法,包括如下步驟(1)選取需要變聲的原始語音信號(hào);(2)當(dāng)原始語音信號(hào)存在周期性時(shí),計(jì)算其基頻值,并計(jì)算與該基頻值對(duì)應(yīng)的基音周期的長度;當(dāng)原始語音中并不存在周期性時(shí),在65Hz到500Hz之間取一頻率值,將該頻率值對(duì)應(yīng)的周期作為基音周期,將該頻率值對(duì)應(yīng)的周期長度作為基音周期長度;(3)根據(jù)步驟(2)中得到的基音周期長度定位整個(gè)原始語音信號(hào)的每一個(gè)基音周期的位置;(4)在原始語音信號(hào)中的基音周期之間刪除/插入基音周期,得到縮短/伸長的語音信號(hào);(5)將步驟(4)中得到的縮短/伸長的語音信號(hào)線性伸長/壓縮至與原始語音信號(hào)一致的長度,得到變聲后的語音信號(hào)。
在步驟(4)中是在原始語音信號(hào)中的基音周期之間周期性地刪除/插入基音周期。
當(dāng)期望變聲后語音的基頻是原始語音基頻的p倍且p>1時(shí),每隔(p-1)-1個(gè)基音周期插入一個(gè)基音周期,該被插入的基音周期是與插入點(diǎn)相鄰的基音周期的一個(gè)復(fù)制。當(dāng)期望變聲后語音的基頻是原始語音基頻的p倍且0<p<1時(shí),每隔(1-p)-1個(gè)基音周期刪除一個(gè)當(dāng)前基音周期。優(yōu)選地,1<p≤2或0.5≤p<1。
在步驟(5)中的線性伸長/壓縮方法為原始語音的長度為N、步驟(3)得到的縮短/伸長的語音信號(hào)的長度為M,則伸縮比為r=M/N;所述縮短/伸長的語音信號(hào)的序列為x(m),其中1≤m≤M;令變聲后的語音信號(hào)的序列為y(n),其中1≤n≤N;令A(yù)n=nr, Cn=Bn+1,其中 是不大于An的最大整數(shù);則y(n)=x(Bn)+(An-Bn)[x(Cn)-x(Bn)],其中y(n)是變聲后語音序列的第n個(gè)點(diǎn)。
本發(fā)明是基于數(shù)字信號(hào)處理的語音變聲方法,該方法簡單實(shí)用,運(yùn)算量很小,適于在DSP芯片上實(shí)時(shí)實(shí)現(xiàn),變聲的語音的自然度很高。而且變聲后的語音的長度與原始語音長度一致,有利于實(shí)時(shí)傳送變聲后的語音信號(hào)。
圖1是本發(fā)明的語音變聲方法的流程圖;圖2是語音信號(hào)基音周期定位的實(shí)例圖。
具體實(shí)施例方式
下面結(jié)合附圖及具體實(shí)施方向?qū)Ρ景l(fā)明做進(jìn)一步詳細(xì)描述。
如圖1所示的本發(fā)明的語音變聲方法的流程圖。首先輸入一幀語音,一幀語音的長度可以根據(jù)實(shí)際情況需求作適當(dāng)調(diào)整。
然后估計(jì)該輸入的原始語音信號(hào)中的基頻值。在本實(shí)施例的語音基頻估計(jì)中,采用的是諧波和方法(Summation of Sub-Harmonic Method),所以無論原始語音是否存在周期性都將得到一個(gè)基頻值。當(dāng)原始語音存在周期性,也就是存在基音周期,那么將得到一個(gè)有意義的基頻值;當(dāng)原始語音并不存在周期性,也就是不存在基音周期時(shí),如在清音段或者靜音段,得到的實(shí)際上是一個(gè)在65Hz到500Hz之間的一個(gè)隨機(jī)數(shù),但本發(fā)明仍然將該頻率值所對(duì)應(yīng)的周期長度作為該語音段的“偽”基音周期長度。
從上述處理方法可以看出,本發(fā)明事實(shí)上是將不存在周期性的清音段也當(dāng)作濁音段來處理的。這是因?yàn)?,語音的清音段類似于白噪聲,在其中周期性的刪除或者插入語音,幾乎不影響人對(duì)它的聽覺感知效果。而且對(duì)語音不分濁音、清音的統(tǒng)一處理,簡化了算法的復(fù)雜程度,更重要的是避免了濁音誤判為清音時(shí)造成語音變聲失敗的代價(jià)。
語音信號(hào)的基音周期的長度等于語音的采樣率除以該語音信號(hào)的基頻值。根據(jù)該周期長度定位整個(gè)原始語音信號(hào)的每一個(gè)基音周期的位置。
以每秒8K采樣點(diǎn)的語音為例,并將1000個(gè)采樣點(diǎn)作為一個(gè)處理單元,即一幀語音。如該幀語音信號(hào)的平均基頻是100Hz,則其基音周期是80個(gè)采樣點(diǎn),并用此長度來定位基音周期。
一般來說每個(gè)基音周期都有一個(gè)極大值,以此來定位每個(gè)基音周期最為方便可靠。首先在這一幀語音的中間位置附近找到一個(gè)極大值,然后向兩邊每隔一個(gè)基音周期的長度找到一個(gè)極大點(diǎn),依次找到所有基音周期的極大點(diǎn)。本實(shí)施例規(guī)定每個(gè)基音周期開始于該基音周期極大點(diǎn)向后的第二個(gè)過零點(diǎn),結(jié)束于下一個(gè)基音周期的起始點(diǎn)。因此根據(jù)每個(gè)極大點(diǎn)向后尋找其第二個(gè)過零點(diǎn),以此定位出每個(gè)基音周期的區(qū)域。該定位的過程可參照?qǐng)D2所示,圖中實(shí)線所標(biāo)是每個(gè)基音周期的極值點(diǎn),虛線所標(biāo)是極值點(diǎn)向后第二個(gè)過零點(diǎn),兩條虛線之間為一個(gè)基音周期。例如在上述選取的語音信號(hào)中,先在當(dāng)前幀第500個(gè)點(diǎn)附近找到極大值,然后在此極大值向前80點(diǎn)附近和向后80點(diǎn)尋找極大值,再依此方法尋找到該幀語音的所有極大值。最后在每個(gè)極大點(diǎn)向后尋找其第二個(gè)過零點(diǎn),以此定位出每個(gè)基音周期的區(qū)域。
對(duì)于并不存在基音周期的語音信號(hào),在得到其“偽”基音周期長度后,也可用上述的尋找極大值和過零點(diǎn)的方法來定位其偽基音周期的位置。
根據(jù)變聲要求的不同,決定需要插入基音周期還是刪除基音周期。如果需要提高基頻,那么就插入基音周期;如果要降低基頻,就刪除基音周期。例如期望變聲后語音的基頻是原始語音基頻的1.5倍,那么每隔[1/(1.5-1)]=2個(gè)基音周期插入一個(gè)與插入點(diǎn)相鄰的基音周期;例如期望變聲后語音的基頻是原始語音基頻的0.8倍,那么每隔[1/(1-0.8)]=5個(gè)基音周期刪除一個(gè)當(dāng)前的基音周期。這樣就得到伸長或者縮短的語音信號(hào)。
最后將伸長的語音信號(hào)壓縮到與原始語音一致的長度,或者將縮短的語音信號(hào)伸長到與原始語音一致的長度,得到所需要的變聲后的語音信號(hào)。例如由上一步得到的伸長的語音的長度為1400個(gè)采樣點(diǎn),其語音序列為x(m),其中1≤m≤1400。而原始語音的長度為1000個(gè)采樣點(diǎn),也就是說變聲后的語音信號(hào)的長度也應(yīng)該為1000點(diǎn),令變聲后的語音信號(hào)的序列為y(n),其中1≤n≤1000。伸縮比r=1400/1000=1.4。令A(yù)n=nr,
Cn=Bn+1,其中
是不大于An的最大整數(shù)。如下表
通過公式y(tǒng)(n)=x(Bn)+(An-Bn)[x(Cn)-x(Bn)],就得到了壓縮后的變聲后語音,其中y(n)變聲后語音序列的第n個(gè)點(diǎn)。在表格中的右下角,Cn的計(jì)算值1401超過了m可取的最大值1400,在本實(shí)施例中,用與1401最接近的1400來代替。最后可將變聲后的語音輸出,這樣就得到了既有變聲效果,又與原始語音長度一致的語音信號(hào)。
采用與該方法一致的步驟,也可將縮短的語音信號(hào)伸長到與原始語音一致的長度。
權(quán)利要求
1.一種基于數(shù)字信號(hào)處理的語音變聲方法,包括如下步驟(1)選取需要變聲的原始語音信號(hào);(2)當(dāng)原始語音信號(hào)存在周期性時(shí),計(jì)算其基頻值,并計(jì)算與該基頻值對(duì)應(yīng)的基音周期的長度;當(dāng)原始語音中并不存在周期性時(shí),在65Hz到500Hz之間取一頻率值,將該頻率值對(duì)應(yīng)的周期作為基音周期,將該頻率值對(duì)應(yīng)的周期長度作為基音周期長度;(3)根據(jù)步驟(2)中得到的基音周期長度定位整個(gè)原始語音信號(hào)的每一個(gè)基音周期的位置;(4)在原始語音信號(hào)中的基音周期之間刪除/插入基音周期,得到縮短/伸長的語音信號(hào);(5)將步驟(4)中得到的縮短/伸長的語音信號(hào)線性伸長/壓縮至與原始語音信號(hào)一致的長度,得到變聲后的語音信號(hào)。
2.根據(jù)權(quán)利要求1所述的語音變聲方法,其特征在于,在步驟(4)中是在原始語音信號(hào)中的基音周期之間周期性地刪除/插入基音周期。
3.根據(jù)權(quán)利要求2所述的語音變聲方法,其特征在于,當(dāng)期望變聲后語音的基頻是原始語音基頻的p倍且p>1時(shí),每隔(p-1)-1個(gè)基音周期插入一個(gè)基音周期,該被插入的基音周期是與插入點(diǎn)相鄰的基音周期的一個(gè)復(fù)制。
4.根據(jù)權(quán)利要求2所述的語音變聲方法,其特征在于,當(dāng)期望變聲后語音的基頻是原始語音基頻的p倍且0<p<1時(shí),每隔(1-p)-1個(gè)基音周期刪除一個(gè)當(dāng)前基音周期。
5.根據(jù)權(quán)利要求3所述的語音變聲方法,其特征在于,1<p≤2。
6.根據(jù)權(quán)利要求4所述的語音變聲方法,其特征在于,0.5≤p<1。
7.根據(jù)權(quán)利要求1所述的語音變聲方法,其特征在于,在步驟(5)中的線性伸長/壓縮方法為原始語音的長度為N、步驟(4)得到的縮短/伸長的語音信號(hào)的長度為M,則伸縮比為r=M/N;所述縮短/伸長的語音信號(hào)的序列為x(m),其中1≤m≤M;令變聲后的語音信號(hào)的序列為y(n),其中1≤n≤N;令A(yù)n=nr, Cn=Bn+1,其中 是不大于An的最大整數(shù);則y(n)=x(Bn)+(An-Bn)[x(Cn)-x(Bn)],其中y(n)是變聲后語音序列的第n個(gè)點(diǎn)。
全文摘要
本發(fā)明公開了一種基于數(shù)字信號(hào)處理的語音變聲方法,包括步驟(1)選取需要變聲的原始語音信號(hào);(2)得到原始語音信號(hào)的基音周期長度;(3)根據(jù)基音周期長度定位整個(gè)原始語音信號(hào)的每一個(gè)基音周期的位置;(4)在原始語音信號(hào)中的基音周期之間刪除/插入基音周期,得到縮短/伸長的語音信號(hào);(5)將縮短/伸長的語音信號(hào)線性伸長/壓縮至與原始語音信號(hào)一致的長度,得到變聲后的語音信號(hào)。本發(fā)明是基于數(shù)字信號(hào)處理的語音變聲方法,該方法簡單實(shí)用,運(yùn)算量很小,適于在DSP芯片上實(shí)時(shí)實(shí)現(xiàn),變聲的語音的自然度很高。而且變聲后的語音的長度與原始語音長度一致,有利于實(shí)時(shí)傳送變聲后的語音信號(hào)。
文檔編號(hào)G10L13/00GK1567428SQ0313701
公開日2005年1月19日 申請(qǐng)日期2003年6月19日 優(yōu)先權(quán)日2003年6月19日
發(fā)明者李明, 劉建, 汪俊杰, 庹凌云, 顏永紅, 孫寶海 申請(qǐng)人:北京中科信利技術(shù)有限公司, 中國科學(xué)院聲學(xué)研究所