專(zhuān)利名稱(chēng):一種聲音合成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及聲音合成領(lǐng)域,尤其涉及一種對(duì)不同種類(lèi)聲音數(shù)據(jù)進(jìn)行合成的方法。
背景技術(shù):
現(xiàn)有技術(shù)中通過(guò)聲音合成系統(tǒng)來(lái)進(jìn)行還原和再現(xiàn)的聲音文件主要包括以下三大類(lèi)聲音信號(hào)文件,這類(lèi)文件從根本上講都是記錄了聲音本身的波形數(shù)據(jù),采用不同的編碼算法對(duì)原始波形數(shù)據(jù)進(jìn)行處理進(jìn)而縮減文件大小,在還原此類(lèi)聲音文件時(shí),再用相應(yīng)的解碼器將其還原成原始的聲音波形數(shù)據(jù)。MP3就是此類(lèi)文件,如附圖1所示,在合成聲音的時(shí)候,MP3解碼器對(duì)MP3數(shù)據(jù)進(jìn)行解碼,將其還原成PCM聲音波形數(shù)據(jù),如果需要改變聲音波形特性,比如采樣率、采樣精度、或者增加一些類(lèi)似于混響等的特殊效果,還要解碼器后增加其他的模塊。
樂(lè)譜文件,這類(lèi)文件記錄著樂(lè)器演奏的節(jié)奏和音階的信息,其本身并不包含具體聲音波形數(shù)據(jù)。因此樂(lè)譜文件的特點(diǎn)是文件尺寸非常小,一首5分鐘的大型交響樂(lè)也不過(guò)100Kbyte左右,這與聲音信號(hào)文件動(dòng)輒幾M、幾十M的尺寸是無(wú)法相比的。但它的缺點(diǎn)是合成方式比較復(fù)雜。就像平常我們使用的樂(lè)譜中存在簡(jiǎn)譜和五線(xiàn)譜之分一樣,現(xiàn)在也存在著多種此類(lèi)的樂(lè)譜文件,比如MIDI,SMAF等等。如附圖2所示以MIDI的波表合成為例作簡(jiǎn)要介紹首先,包洛曲線(xiàn)生成器根據(jù)MIDI消息,計(jì)算出包洛曲線(xiàn);其次,波形生成器從波表庫(kù)中取出與MIDI消息相對(duì)應(yīng)的波表數(shù)據(jù),即所要合成樂(lè)器的真實(shí)聲音的采樣數(shù)據(jù),然后再進(jìn)行調(diào)頻計(jì)算產(chǎn)生波形;最后,用包洛曲線(xiàn)對(duì)波形數(shù)據(jù)進(jìn)行調(diào)幅完成對(duì)MIDI消息的合成。其他種類(lèi)樂(lè)譜文件的合成方法與MIDI波表合成方法基本類(lèi)似。
語(yǔ)音合成文件,相對(duì)于以上兩種聲音文件格式,語(yǔ)音合成的文件最為簡(jiǎn)單,只要是文本文件就可以,盡管其合成算法的復(fù)雜度遠(yuǎn)遠(yuǎn)超過(guò)上述的兩種文件,如附圖3所示是對(duì)語(yǔ)音合成原理的簡(jiǎn)要介紹文本分析模塊根據(jù)詞匯支持庫(kù)對(duì)語(yǔ)音文件進(jìn)行分析,韻律建模模塊在規(guī)則庫(kù)的支持下進(jìn)行韻律建模,語(yǔ)音合成器根據(jù)韻律建模的結(jié)果,從原始語(yǔ)音庫(kù)中取出相應(yīng)的語(yǔ)音基元,再利用特定的語(yǔ)音合成算法對(duì)語(yǔ)音基元進(jìn)行韻律特性的調(diào)整和修改,最終合成出符合要求的語(yǔ)音。其中語(yǔ)音基元就是真人朗讀語(yǔ)言片斷(可能是字,也可能是詞)的采樣數(shù)據(jù)。
在實(shí)際應(yīng)用中,一個(gè)聲音合成系統(tǒng)很難同時(shí)支持上述三種文件格式,如果需要同時(shí)支持上述三種文件格式,一般是兩種做法第一種,用三個(gè)獨(dú)立的系統(tǒng)分別處理三種文件格式,這樣的缺點(diǎn)是解決方案不夠緊湊,而且也需要附加的系統(tǒng)來(lái)協(xié)調(diào)三個(gè)不同合成系統(tǒng)的工作。第二種方法,就是設(shè)計(jì)一個(gè)系統(tǒng)完全實(shí)現(xiàn)對(duì)三種文件的支持,但是,從上面的論述可以看出,三種文件的合成方法差別很大,要實(shí)現(xiàn)這樣一個(gè)系統(tǒng)無(wú)疑是非常復(fù)雜的,而且整個(gè)系統(tǒng)的可擴(kuò)展性不強(qiáng),比如說(shuō),如果需要系統(tǒng)也要支持SMAF(SMAF是一種附和的文件格式,它既包含像MIDI一樣的樂(lè)譜數(shù)據(jù),也包含像MP3的聲音的波形信號(hào)數(shù)據(jù)),那么就需要對(duì)系統(tǒng)進(jìn)行修改。如果系統(tǒng)是一枚芯片的話(huà),那么芯片內(nèi)部需要有CPU,而且還要預(yù)留其他資源,用來(lái)以后對(duì)系統(tǒng)進(jìn)行擴(kuò)展,這樣做無(wú)疑是不經(jīng)濟(jì)的。
這就需要一種可對(duì)不同文件格式且本身不帶有聲音波形數(shù)據(jù)的聲音數(shù)據(jù)文件進(jìn)行還原和合成的聲音合成系統(tǒng)來(lái)解決以上問(wèn)題。
本發(fā)明人在研究以上文件類(lèi)型后發(fā)現(xiàn),三種文件的合成器還是存在著一些近似點(diǎn)的,比如在語(yǔ)音合成系統(tǒng)中的語(yǔ)音合成器這個(gè)模塊功能上非常類(lèi)似于樂(lè)譜文件(MIDI)的波表合成器。它們都是從音源庫(kù)中提取出音源,對(duì)于波表合成來(lái)講,它是從波表庫(kù)中提取真實(shí)樂(lè)器的采樣數(shù)據(jù),而對(duì)于語(yǔ)音合成來(lái)講,是從語(yǔ)音庫(kù)中提取人朗讀某個(gè)語(yǔ)音基元的采樣。然后合成器再對(duì)采樣數(shù)據(jù)進(jìn)行調(diào)頻和調(diào)幅來(lái)合成音樂(lè)或者語(yǔ)音。對(duì)于聲音信號(hào)文件來(lái)講,如果需要對(duì)經(jīng)過(guò)解碼器還原的聲音信號(hào)進(jìn)行的進(jìn)一步的處理(比如改變采樣率,采樣精度等等),或者把多路不同的聲音信號(hào)數(shù)據(jù)按一定要求進(jìn)行混合的話(huà),那么可以認(rèn)為,實(shí)現(xiàn)這種功能的模塊就是一個(gè)新的聲音合成器,其中經(jīng)過(guò)解碼器還原得PCM波形數(shù)據(jù)就是音源。而且樂(lè)譜合成器和語(yǔ)音合成器也需要這樣的模塊。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中的問(wèn)題和不足,本發(fā)明的目的在于提供一種對(duì)不同種類(lèi)聲音數(shù)據(jù)進(jìn)行合成的方法。使用該方法的裝置結(jié)構(gòu)簡(jiǎn)單、緊湊,成本低廉,不會(huì)增加系統(tǒng)負(fù)擔(dān)并且易于擴(kuò)展。
為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明的技術(shù)方案以如下方式實(shí)現(xiàn)一種聲音合成方法,其步驟為1)聲音文件分析模塊從接收到的聲音數(shù)據(jù)中提取相關(guān)聲音代碼并將提取的聲音代碼發(fā)送給聲音合成事件生成模塊;2)聲音合成事件生成模塊根據(jù)接收到的聲音代碼,從聲音合成事件生成模塊存儲(chǔ)的系數(shù)庫(kù)中提取出相應(yīng)的采樣信息,并計(jì)算出聲音合成所需要的參數(shù);3)聲音合成事件生成模塊將聲音合成所需要的參數(shù)合成一個(gè)數(shù)據(jù)塊,即事件,并將事件發(fā)送給事件調(diào)度控制模塊;4)事件調(diào)度控制模塊將事件合理的分配給聲音信號(hào)生成模塊的一個(gè)合成通道上;5)合成通道根據(jù)合成事件中的合成參數(shù),從音源數(shù)據(jù)區(qū)中取出相應(yīng)的聲音采樣并根據(jù)合成事件包含的其他參數(shù)對(duì)相應(yīng)聲音采樣進(jìn)行調(diào)頻和調(diào)幅完成聲音的合成。
上述步驟1)中所述的聲音數(shù)據(jù)可以包括樂(lè)譜數(shù)據(jù)和語(yǔ)音數(shù)據(jù),所述聲音文件分析模塊中的樂(lè)譜數(shù)據(jù)分析模塊和語(yǔ)音合成分析模塊分別提取相關(guān)聲音代碼并將提取的聲音代碼發(fā)送給聲音合成事件生成模塊。上述樂(lè)譜數(shù)據(jù)可以包括MIDI數(shù)據(jù)和SMAF數(shù)據(jù)。
上述步驟1)前還包括下面步驟聲音文件分析模塊對(duì)輸入的聲音數(shù)據(jù)進(jìn)行處理,并將相應(yīng)的音源數(shù)據(jù)發(fā)送到音源數(shù)據(jù)處理模塊;所述步驟4)前還包括下面步驟音樂(lè)數(shù)據(jù)處理模塊將音源數(shù)據(jù)發(fā)送到數(shù)據(jù)音源區(qū)中。步驟1)中所述的聲音數(shù)據(jù)可以包括聲音信號(hào)數(shù)據(jù)、樂(lè)譜數(shù)據(jù)和語(yǔ)音數(shù)據(jù),所述聲音文件分析模塊中的樂(lè)譜數(shù)據(jù)分析模塊、語(yǔ)音合成分析模塊和聲音信號(hào)分析模塊分別提取相關(guān)聲音代碼并將提取的聲音代碼發(fā)送給聲音合成事件生成模塊。聲音信號(hào)數(shù)據(jù)可以包括MP3數(shù)據(jù)和WAV數(shù)據(jù)。
對(duì)比現(xiàn)有技術(shù),本發(fā)明的優(yōu)點(diǎn)在于由于聲音合成事件是聲音合成過(guò)程中的具有一定共性的模型,其與具體文件格式無(wú)關(guān),使用聲音合成事件作為聲音文件分析模組和聲音合成模塊之間的橋梁,可以實(shí)現(xiàn)聲音合成模塊完全獨(dú)立,這樣有利于聲音合成模塊的實(shí)現(xiàn),而且,如果聲音合成模塊設(shè)計(jì)的復(fù)雜并有其他特殊效果,只不過(guò)增加聲音合成事件中的參數(shù)就可以了;
另外,使用本發(fā)明方法的裝置可以根據(jù)需要方便的增加或者減少聲音文件分析模組所包含聲音數(shù)據(jù)分析模塊的種類(lèi),這樣在構(gòu)成整個(gè)合成系統(tǒng)的時(shí)候就非常的靈活。
圖1為MP3音樂(lè)數(shù)據(jù)的還原合成示意圖;圖2為MIDI的波表合成原理示意圖;圖3為語(yǔ)音合成原理示意圖;圖4為本發(fā)明第一種合成方法的流程圖;圖5為使用圖4所述方法的裝置結(jié)構(gòu)圖;圖6為本發(fā)明MIDI文件的包洛曲線(xiàn)圖;圖7為本發(fā)明第二種合成方法的流程圖;圖8為使用圖7所述方法的裝置結(jié)構(gòu)圖。
具體實(shí)施例方式
參看圖4,一種聲音合成方法,其步驟為1)聲音文件分析模塊從接收到的聲音數(shù)據(jù)中提取相關(guān)聲音代碼并將提取的聲音代碼發(fā)送給聲音合成事件生成模塊;2)聲音合成事件生成模塊根據(jù)接收到的聲音代碼,從聲音合成事件生成模塊存儲(chǔ)的系數(shù)庫(kù)中提取出相應(yīng)的采樣信息,并計(jì)算出聲音合成所需要的參數(shù);3)聲音合成事件生成模塊將聲音合成所需要的參數(shù)合成一個(gè)數(shù)據(jù)塊,即事件,并將事件發(fā)送給事件調(diào)度控制模塊;4)事件調(diào)度控制模塊將事件合理的分配給聲音信號(hào)生成模塊的一個(gè)合成通道上;5)合成通道根據(jù)合成事件中的合成參數(shù),從音源數(shù)據(jù)區(qū)中取出相應(yīng)的聲音采樣并根據(jù)合成事件包含的其他參數(shù)對(duì)相應(yīng)聲音采樣進(jìn)行調(diào)頻和調(diào)幅完成聲音的合成。
上述步驟1)中所述的聲音數(shù)據(jù)可以包括樂(lè)譜數(shù)據(jù)和語(yǔ)音數(shù)據(jù),也可以為單獨(dú)的樂(lè)譜數(shù)據(jù)或者語(yǔ)音數(shù)據(jù)。樂(lè)譜數(shù)據(jù)則包括MIDI數(shù)據(jù)和SMAF數(shù)據(jù)。
參看圖5,使用上述方法的聲音合成系統(tǒng)包括分析子系統(tǒng)A和合成子系統(tǒng)B;系統(tǒng)A負(fù)責(zé)不同聲音文件的分析,并且產(chǎn)生聲音合成事件,通過(guò)這樣的事件驅(qū)動(dòng)聲音合成系統(tǒng)B合成具體的聲音信號(hào)。分析子系統(tǒng)A包括一個(gè)聲音文件分析模塊10,一個(gè)聲音合成事件生成模塊20;聲音文件分析模塊10對(duì)系統(tǒng)所接收到的聲音數(shù)據(jù)進(jìn)行分析,聲音合成事件生成模塊20接收聲音文件分析模組10發(fā)送的相關(guān)聲音信息和參數(shù);聲音合成事件生成模塊20根據(jù)所述聲音文件分析模組10傳來(lái)的分析結(jié)果,生成適合合成子系統(tǒng)B合成聲音信號(hào)所需的聲音合成事件;合成子系統(tǒng)B包括一個(gè)事件調(diào)度控制模塊40,一個(gè)聲音合成模塊50和一個(gè)音源數(shù)據(jù)區(qū)30;事件調(diào)度控制模塊40接收子系統(tǒng)A中的聲音合成事件生成模塊20傳來(lái)的聲音合成事件,并合理分配聲音合成事件到聲音合成模塊50中的合成通道上,聲音合成模塊50根據(jù)合成事件中帶有的關(guān)于聲音采樣所在位置的參數(shù),從音源數(shù)據(jù)區(qū)30中取出相應(yīng)的聲音采樣,再根據(jù)聲音合成事件包含的其他參數(shù)對(duì)聲音采樣進(jìn)行調(diào)頻和調(diào)幅等各種處理工作完成音符的合成。
聲音文件分析模塊10為多個(gè)相同或不同類(lèi)型的聲音文件分析子模塊,這些聲音文件分析子模塊分別從接收到的聲音數(shù)據(jù)中提取相關(guān)聲音代碼并將提取的聲音代碼發(fā)送給聲音合成事件生成模塊20。所述聲音文件分析子模塊包括樂(lè)譜數(shù)據(jù)分析模塊11和語(yǔ)音合成分析模塊12。
下面用MIDI文件(樂(lè)譜文件)為例說(shuō)明上述方法這里還是沿用圖2中所舉的MIDI消息的例子來(lái)進(jìn)行說(shuō)明00 C000 00 90 64 70 55 80 64 70。
1)當(dāng)音色消息00 C0 00、音符開(kāi)始消息00 90 64 70和音符結(jié)束消息55 80 64 70被樂(lè)譜數(shù)據(jù)分析模塊所接收到時(shí),樂(lè)譜數(shù)據(jù)分析模塊從中提取了幾個(gè)非常有用的信息音色代碼00、消息代碼90、音調(diào)代碼64、速度代碼70和音符持續(xù)時(shí)間55。并將這些代碼發(fā)送到聲音合成事件生成模塊。
2)聲音合成事件生成模塊根據(jù)接收到的消息代碼,從波表系數(shù)庫(kù)中提取出波表采樣的一些信息,再根據(jù)波表合成的算法計(jì)算出波表合成所需要的參數(shù)。在MIDI合成中所用到的波表庫(kù)是事先儲(chǔ)存在子系統(tǒng)B的音源數(shù)據(jù)區(qū)中的,而表示這個(gè)波表庫(kù)里的波表采樣性質(zhì)的一些參數(shù)是儲(chǔ)存在子系統(tǒng)A的聲音合成事件生成模塊里的波表系數(shù)庫(kù)中的。關(guān)于如何計(jì)算得到合成參數(shù)這里就不加贅述了。
請(qǐng)參考其他文獻(xiàn)。
所生成的聲音合成參數(shù)主要分為以下幾類(lèi)第一類(lèi)有關(guān)和成所需波表文件在音源庫(kù)中(即波表庫(kù))的地址信息BASEOFFSET 波表文件的循環(huán)起始點(diǎn)在波表庫(kù)中的地址CURPTR 當(dāng)前位置距離BASEOFFSET的偏移量CURSIGN CURPTR的符號(hào)位ENDPTR;報(bào)表尾距離BASEOFFSET的偏移量If(CURSIGN==0)
一個(gè)采樣數(shù)據(jù)的實(shí)際地址=BASEOFFSET+CURPTRelse一個(gè)采樣數(shù)據(jù)的實(shí)際地址=BASEOFFSET-CURPTR第二類(lèi)有關(guān)包洛曲線(xiàn)的參數(shù)參看圖6,EVLP1,EVLP2,EVLP3,EVLP4對(duì)應(yīng)于包洛曲線(xiàn)的四段的性質(zhì)。
以EVLP1為例EVLP1.EVLPCHG 在此段包洛曲線(xiàn)的變化量EVLP1.EVLPMOD 包洛曲線(xiàn)的數(shù)值是遞增還是遞減,還是保持不變EVLP1.ECNTINIT 包洛曲線(xiàn)生成器的計(jì)數(shù)器的初始值包洛曲線(xiàn)的生成方法就不在這里敘述了。
第三類(lèi)波表采樣的參數(shù)SMPCTR 波表采樣是單聲道的還是雙聲道的BITCTRL 波表采樣的采樣精度是16bit還是8bitSIGNCTRL 波表采樣的數(shù)值是又有符號(hào)數(shù),還是無(wú)符號(hào)數(shù)第四類(lèi)低頻振蕩器參數(shù)(LFO),用來(lái)產(chǎn)生低頻的三角波,在附加AMSTEP,F(xiàn)MSTEP對(duì)聲音進(jìn)行調(diào)頻調(diào)幅以達(dá)到使聲音更加真實(shí)的目的。
SINVAL 三角波的絕對(duì)值SINDIR 三角波的符號(hào)LFOCNT 以下三個(gè)參數(shù)控制三角波的周期LFOINIT;
LFOSIGNAMSTEP 與三角波配合的調(diào)幅參數(shù)FMSTEP 與三角波配合的調(diào)情參數(shù)第五類(lèi)音量控制RVOL 回聲音量控制CVOL 混響音量控制CHNVOL_L 左聲道音量控制CHNVOL_R 右聲道音量控制第六類(lèi)調(diào)頻參數(shù)FRATIO 這是個(gè)非常重要的參數(shù),表達(dá)了輸入波表采樣的頻率和采樣率,與所要合成的音符的頻率和合成輸出數(shù)據(jù)的采樣率之間的計(jì)算關(guān)系。
第七類(lèi)其他控制信息CHNATRB 這組參數(shù)代表的文件類(lèi)型,例如如果是MIDI CHNATRB==0,如果是聲音信號(hào)數(shù)據(jù)CHNATRB==1,如果是語(yǔ)音合成數(shù)據(jù)CHNATRB==2……3)聲音合成事件生成模塊將這些參數(shù)組合成一個(gè)數(shù)據(jù)塊,這個(gè)數(shù)據(jù)塊就是本文所說(shuō)的一種聲音合成事件,作用是告訴子系統(tǒng)B如何合成0號(hào)音色的這個(gè)音符??梢钥吹?,這種事件完全不含節(jié)奏和音符的概念,可以說(shuō)是抽象出來(lái)的一個(gè)模型。
4)當(dāng)子系統(tǒng)B接受到這個(gè)聲音合成事件以后,事件調(diào)度控制模塊把它合理的分配給聲音信號(hào)合成模塊的一個(gè)合成通道上。
5)這個(gè)合成通道根據(jù)合成事件中帶有的關(guān)于波表采樣所在位置的參數(shù),從音源數(shù)據(jù)區(qū)中取出相應(yīng)的波表采樣。在根據(jù)合成事件包含的其他參數(shù)對(duì)波表采樣進(jìn)行調(diào)頻和調(diào)幅,這樣就完成整個(gè)音符的合成工作。
參看圖7,一種音樂(lè)合成方法,其步驟為1)聲音文件分析模塊對(duì)輸入的聲音數(shù)據(jù)進(jìn)行處理,并將相應(yīng)的音源數(shù)據(jù)發(fā)送音源數(shù)據(jù)處理模塊;2)聲音文件分析模塊從接收到的聲音數(shù)據(jù)中提取相關(guān)聲音代碼并將提取的聲音代碼發(fā)送給聲音合成事件生成模塊;3)聲音合成事件生成模塊根據(jù)接收到的聲音代碼,從聲音合成事件生成模塊存儲(chǔ)的系數(shù)庫(kù)中提取出相應(yīng)的采樣信息,并計(jì)算出聲音合成所需要的參數(shù);4)聲音合成事件生成模塊將聲音合成所需要的參數(shù)合成一個(gè)數(shù)據(jù)塊,即事件,并將事件發(fā)送給事件調(diào)度控制模塊;5)音樂(lè)數(shù)據(jù)處理模塊將音源數(shù)據(jù)發(fā)送到數(shù)據(jù)音源區(qū)中;6)事件調(diào)度控制模塊將事件合理的分配給聲音信號(hào)生成模塊的一個(gè)合成通道上;7)合成通道根據(jù)合成事件中的合成參數(shù),從音源數(shù)據(jù)區(qū)中取出相應(yīng)的聲音采樣并根據(jù)合成事件包含的其他參數(shù)對(duì)相應(yīng)聲音采樣進(jìn)行調(diào)頻和調(diào)幅完成聲音的合成。
上述步驟1)中的聲音數(shù)據(jù)可以為聲音信號(hào)文件。上述聲音信號(hào)文件可以為MP3和WAV文件。步驟1)中的聲音數(shù)據(jù)還可以包括樂(lè)譜數(shù)據(jù)和語(yǔ)音數(shù)據(jù)。
參看圖8,使用上述方法的基于不同種類(lèi)聲音數(shù)據(jù)的聲音合成系統(tǒng)包括分析子系統(tǒng)A和合成子系統(tǒng)B;系統(tǒng)A負(fù)責(zé)不同聲音文件的分析,并且產(chǎn)生聲音合成事件,通過(guò)這樣的事件驅(qū)動(dòng)聲音合成系統(tǒng)B合成具體的聲音信號(hào)。分析子系統(tǒng)A包括一個(gè)聲音文件分析模組10,一個(gè)聲音合成事件生成模塊20和一個(gè)音源數(shù)據(jù)處理模塊60;聲音文件分析模組10對(duì)系統(tǒng)所接收到的聲音數(shù)據(jù)進(jìn)行分析,聲音合成事件生成模塊20接收聲音文件分析模組10發(fā)送的相關(guān)聲音信息和參數(shù),音源數(shù)據(jù)處理模塊60接收聲音文件分析模組10發(fā)送的音源數(shù)據(jù);聲音合成事件生成模塊20根據(jù)所述聲音文件分析模組10傳來(lái)的分析結(jié)果,生成適合合成子系統(tǒng)B合成聲音信號(hào)所需的聲音合成事件;音源數(shù)據(jù)處理模塊60把所述聲音文件分析模組10傳來(lái)的合成聲音所需要的音源數(shù)據(jù)進(jìn)行統(tǒng)一的編碼,發(fā)送到系統(tǒng)B的音源數(shù)據(jù)區(qū)30中的可擴(kuò)展區(qū)中;合成子系統(tǒng)B包括一個(gè)事件調(diào)度控制模塊40,一個(gè)聲音合成模塊50和一個(gè)包含有可擴(kuò)展區(qū)的音源數(shù)據(jù)區(qū)30;事件調(diào)度控制模塊40接收子系統(tǒng)A中的聲音合成事件生成模塊20傳來(lái)的聲音合成事件,并合理分配聲音合成事件到聲音合成模塊50中的合成通道上,聲音合成模塊50根據(jù)合成事件中帶有的關(guān)于聲音采樣所在位置的參數(shù),從音源數(shù)據(jù)區(qū)30中取出相應(yīng)的聲音采樣,再根據(jù)聲音合成事件包含的其他參數(shù)對(duì)聲音采樣進(jìn)行調(diào)頻和調(diào)幅等各種處理工作完成音符的合成。
上述聲音文件分析模塊10為多個(gè)相同或不同類(lèi)型的聲音文件分析子模塊,這些聲音文件分析子模塊分別從接收到的聲音數(shù)據(jù)中提取相關(guān)聲音代碼并將提取的聲音代碼發(fā)送給聲音合成事件生成模塊20。所述聲音文件分析子模塊包括樂(lè)譜數(shù)據(jù)分析模塊11、語(yǔ)音合成分析模塊12和聲音信號(hào)分析模塊13。
下面用MP3文件(聲音信號(hào)文件)為例說(shuō)明上述方法1)首先聲音信號(hào)分析模塊對(duì)輸入的MP3文件的一段進(jìn)行解碼,輸出PCM波形數(shù)據(jù),再把PCM數(shù)據(jù)傳送到音源數(shù)據(jù)處理模塊。
2)聲音信號(hào)分析模塊把PCM數(shù)據(jù)參數(shù)發(fā)送到聲音合成事件生成模塊。PCM數(shù)據(jù)有三個(gè)重要的參數(shù)采樣精度、采樣頻率、每個(gè)采樣點(diǎn)的數(shù)據(jù)大小(表示是否是雙聲道的數(shù)據(jù))。
3)聲音合成事件生成模塊根據(jù)輸入?yún)?shù)采樣精度、采樣頻率、每個(gè)采樣點(diǎn)的數(shù)據(jù)大小,再根據(jù)系統(tǒng)對(duì)輸出的采樣精度、采樣頻率、每個(gè)采樣點(diǎn)的數(shù)據(jù)大小的要求,計(jì)算出一組參數(shù)。聲音合成事件生成模塊將這些參數(shù)組合成聲音合成事件發(fā)送到子系統(tǒng)B。
這組參數(shù)基本上與MIDI波表合成時(shí)的參數(shù)是一樣的,只不過(guò)參數(shù)的意義略有變化第一類(lèi)PCM數(shù)據(jù)在音源數(shù)據(jù)區(qū)所處在的位置BASEOFFSET PCM數(shù)據(jù)的地址CURPTR 當(dāng)前位置距離BASEOFFSET的偏移量CURSIGN CURPTR的符號(hào)位ENDPTR;PCM數(shù)據(jù)尾距離BASEOFFSET的偏移量第二類(lèi)有關(guān)包洛曲線(xiàn)的參數(shù)由于在聲音信號(hào)處理的時(shí)候,包洛曲線(xiàn)都是一條直線(xiàn),所以EVLP1,EVLP2,EVLP3和EVLP4各自參數(shù)中的
EVLPCHG 在此段包洛曲線(xiàn)的變化量為0EVLPMOD 包洛曲線(xiàn)的數(shù)值都是保持不變ECNTINIT 包洛曲線(xiàn)生成器的計(jì)數(shù)器的初始值可以任意第三類(lèi)調(diào)頻參數(shù)FRATIO 由于在處理聲音信號(hào)數(shù)據(jù)的時(shí)候,輸入的PCM數(shù)據(jù)和輸出的PCM數(shù)據(jù)之間頻率保持不變,所以FRATIO表達(dá)了輸入PCM采樣的采樣頻率,與所要合成的輸出PCM數(shù)據(jù)的采樣率之間運(yùn)算關(guān)系。
4)音源數(shù)據(jù)處理模塊將PCM數(shù)據(jù)傳送到子系統(tǒng)B中的數(shù)據(jù)音源區(qū)中,放置的地址要和聲音合成事件包含的第一類(lèi)參數(shù)一致。
5)子系統(tǒng)B接收到這個(gè)聲音合成事件以后,事件調(diào)度控制模塊把它合理的分配給聲音信號(hào)合成模塊的一個(gè)合成通道上。
6)這個(gè)合成通道根據(jù)合成事件中帶有的關(guān)于PCM數(shù)據(jù)所在位置的參數(shù),從音源數(shù)據(jù)區(qū)中取出相應(yīng)的PCM數(shù)據(jù)。在根據(jù)合成事件包含的其他參數(shù)對(duì)PCM數(shù)據(jù)進(jìn)行調(diào)頻和調(diào)幅。
7)當(dāng)聲音信號(hào)合成模塊將這一段的PCM數(shù)據(jù)合成結(jié)束以后,它將通知子系統(tǒng)A。
8)子系統(tǒng)A的聲音信號(hào)分析模塊在對(duì)下一段MP3數(shù)據(jù)解碼,輸出PCM數(shù)據(jù)到音源數(shù)據(jù)處理模塊。再由音源數(shù)據(jù)處理模塊將這段PCM數(shù)據(jù)傳送到音源數(shù)據(jù)區(qū)中。
9)由于與前一段PCM數(shù)據(jù)的采樣精度、采樣頻率、每個(gè)采樣點(diǎn)的數(shù)據(jù)大小都是一樣的,所以聲音合成事件生成模塊就不需要重新產(chǎn)生聲音合成事件。
10)子系統(tǒng)B重復(fù)4)、5)、6)這三個(gè)步驟11)整個(gè)系統(tǒng)在過(guò)程7)與過(guò)程9)之間循環(huán),直到整個(gè)MP3文件合成完畢。
權(quán)利要求
1.一種聲音合成方法,其步驟為1)聲音文件分析模塊從接收到的聲音數(shù)據(jù)中提取相關(guān)聲音代碼并將提取的聲音代碼發(fā)送給聲音合成事件生成模塊;2)聲音合成事件生成模塊根據(jù)接收到的聲音代碼,從聲音合成事件生成模塊存儲(chǔ)的系數(shù)庫(kù)中提取出相應(yīng)的采樣信息,并計(jì)算出聲音合成所需要的參數(shù);3)聲音合成事件生成模塊將聲音合成所需要的參數(shù)合成一個(gè)數(shù)據(jù)塊,即事件,并將事件發(fā)送給事件調(diào)度控制模塊;4)事件調(diào)度控制模塊將事件合理的分配給聲音信號(hào)生成模塊的一個(gè)合成通道上;5)合成通道根據(jù)合成事件中的合成參數(shù),從音源數(shù)據(jù)區(qū)中取出相應(yīng)的聲音采樣并根據(jù)合成事件包含的其他參數(shù)對(duì)相應(yīng)聲音采樣進(jìn)行調(diào)頻和調(diào)幅完成聲音的合成。
2.按照權(quán)利要求1所述的聲音合成方法,其特征在于,所述步驟1)中所述的聲音數(shù)據(jù)可以包括樂(lè)譜數(shù)據(jù)和語(yǔ)音數(shù)據(jù),所述聲音文件分析模塊中的樂(lè)譜數(shù)據(jù)分析模塊和語(yǔ)音合成分析模塊分別提取相關(guān)聲音代碼并將提取的聲音代碼發(fā)送給聲音合成事件生成模塊。
3.按照權(quán)利要求2所述的聲音合成方法,其特征在于,所述樂(lè)譜數(shù)據(jù)可以包括MIDI數(shù)據(jù)和SMAF數(shù)據(jù)。
4.按照權(quán)利要求1所述的聲音合成方法,其特征在于,所述步驟1)前還包括下面步驟聲音文件分析模塊對(duì)輸入的聲音數(shù)據(jù)進(jìn)行處理,并將相應(yīng)的音源數(shù)據(jù)發(fā)送到音源數(shù)據(jù)處理模塊;所述步驟4)前還包括下面步驟音樂(lè)數(shù)據(jù)處理模塊將音源數(shù)據(jù)發(fā)送到數(shù)據(jù)音源區(qū)中。
5.按照權(quán)利要求4所述的聲音合成方法,其特征在于,所述步驟1)中所述的聲音數(shù)據(jù)可以包括聲音信號(hào)數(shù)據(jù)、樂(lè)譜數(shù)據(jù)和語(yǔ)音數(shù)據(jù),所述聲音文件分析模塊中的樂(lè)譜數(shù)據(jù)分析模塊、語(yǔ)音合成分析模塊和聲音信號(hào)分析模塊分別提取相關(guān)聲音代碼并將提取的聲音代碼發(fā)送給聲音合成事件生成模塊。
6.按照權(quán)利要求5所述的聲音合成方法,其特征在于,所述聲音信號(hào)數(shù)據(jù)可以包括MP3數(shù)據(jù)和WAV數(shù)據(jù)。
全文摘要
本發(fā)明公開(kāi)了一種聲音合成方法,屬于聲音合成領(lǐng)域。使用該方法的裝置結(jié)構(gòu)簡(jiǎn)單、緊湊,成本低廉,不會(huì)增加系統(tǒng)負(fù)擔(dān)并且易于擴(kuò)展。本發(fā)明步驟為1)聲音文件分析模塊將提取的聲音代碼發(fā)送給聲音合成事件生成模塊;2)聲音合成事件生成模塊計(jì)算出聲音合成所需要的參數(shù);3)聲音合成事件生成模塊合成一個(gè)數(shù)據(jù)塊,即事件,并將事件發(fā)送給事件調(diào)度控制模塊;4)事件調(diào)度控制模塊將事件合理的分配給聲音信號(hào)生成模塊的一個(gè)合成通道上;5)合成通道根據(jù)合成事件中的合成參數(shù),從音源數(shù)據(jù)區(qū)中取出相應(yīng)的聲音采樣并根據(jù)合成事件包含的其他參數(shù)對(duì)相應(yīng)聲音采樣進(jìn)行調(diào)頻和調(diào)幅完成聲音的合成。
文檔編號(hào)G10L19/00GK1547192SQ20031011682
公開(kāi)日2004年11月17日 申請(qǐng)日期2003年11月28日 優(yōu)先權(quán)日2003年11月28日
發(fā)明者張韻東, 趙原 申請(qǐng)人:北京中星微電子有限公司