本發(fā)明涉及音頻處理技術(shù)領(lǐng)域,尤其是一種基于音樂節(jié)奏的語音變速方法及計(jì)算設(shè)備。
背景技術(shù):
近年來,隨著信息科技的發(fā)展逐漸成熟,計(jì)算設(shè)備所具備的處理能力也大幅提升,使得許多復(fù)雜的應(yīng)用得以實(shí)現(xiàn),其中之一便是語音變速的相關(guān)技術(shù)。在語音信號處理領(lǐng)域,語音變速很早就被人們研究,但將語音變速與音樂旋律結(jié)合的方式很少被提及。在實(shí)際生活中,人們常常會(huì)被說唱的節(jié)奏所吸引,但演唱說唱音樂往往需要演唱者具有一定的樂理知識和歌唱技巧,這對普通消費(fèi)者而言有一定的難度。因此,普通用戶希望可以通過簡單地說一些話語,然后將所說的語音轉(zhuǎn)換為配有伴奏的說唱音樂。
現(xiàn)有的歌聲合成方法大多需要事先建立語料庫,根據(jù)語料庫中的語音進(jìn)行語音變速,合成說唱音樂。但是建立語料庫要耗費(fèi)長時(shí)間進(jìn)行語料的錄制,且語料庫需要龐大的儲(chǔ)存空間。
因此,需要一種操作方便、又能夠保證變速后的語音在語調(diào)和語義上的完整性的語音處理方案。
技術(shù)實(shí)現(xiàn)要素:
為此,本發(fā)明提供了一種基于音樂節(jié)奏的語音變速方法及計(jì)算設(shè)備,以力圖解決或者至少緩解上面存在的至少一個(gè)問題。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種基于音樂節(jié)奏的語音變速方法,該方法適于根據(jù)目標(biāo)語音數(shù)據(jù)的節(jié)奏對待處理語音數(shù)據(jù)進(jìn)行變速處理,該方法包括步驟:通過靜音檢測提取待處理語音數(shù)據(jù)中的有聲段;對所提取的有聲段語音數(shù)據(jù)進(jìn)行切字處理;讀取目標(biāo)語音數(shù)據(jù)的midi文件,獲取其中每段midi的文件信息;結(jié)合所述midi文件信息算出每段midi上對應(yīng)的語音數(shù)據(jù);根據(jù)預(yù)定的對齊規(guī)則將對應(yīng)的語音數(shù)據(jù)對齊到該段midi上;采用基于相位聲碼器的語音變速算法對對齊后的語音數(shù)據(jù)進(jìn)行變速;以及將變速后的語音數(shù)據(jù)與目標(biāo)語音數(shù)據(jù)的背景音樂進(jìn)行混音,輸出合成的語音。
可選地,在根據(jù)本發(fā)明的語音變速方法中,通過靜音檢測提取待處理語音數(shù)據(jù)中的有聲段的步驟包括:計(jì)算每一幀語音數(shù)據(jù)的短時(shí)能量,當(dāng)至少有連續(xù)第一數(shù)量幀語音數(shù)據(jù)的短時(shí)能量均小于第一閾值時(shí),確定該段語音數(shù)據(jù)為靜音段;遍歷待處理語音數(shù)據(jù),找出所有的靜音段;以及通過所確定的靜音段從待處理語音數(shù)據(jù)中提取出至少一個(gè)有聲段。
可選地,在根據(jù)本發(fā)明的語音變速方法中,第一閾值根據(jù)預(yù)定長度語音數(shù)據(jù)的平均能量確定。
可選地,在根據(jù)本發(fā)明的語音變速方法中,對所提取的有聲段語音數(shù)據(jù)進(jìn)行切字處理的步驟包括:計(jì)算所提取的有聲段語音數(shù)據(jù)中每一幀語音數(shù)據(jù)的自適應(yīng)子帶頻譜熵;當(dāng)有連續(xù)兩幀語音數(shù)據(jù)的自適應(yīng)子帶頻譜熵均小于第二閾值時(shí),對這兩幀語音數(shù)據(jù)進(jìn)行切字處理;計(jì)算經(jīng)切字處理后的字長度;以及當(dāng)經(jīng)切字處理后字長度大于第三閾值時(shí),根據(jù)頻帶方差對其進(jìn)行再次切分,記錄每個(gè)字的起始幀數(shù)。
可選地,在根據(jù)本發(fā)明的語音變速方法中,第二閾值根據(jù)每個(gè)有聲段語音數(shù)據(jù)的自適應(yīng)子帶頻譜熵均值確定。
可選地,在根據(jù)本發(fā)明的語音變速方法中,計(jì)算每一幀語音數(shù)據(jù)的自適應(yīng)子帶頻譜熵的步驟包括:對該幀語音數(shù)據(jù)進(jìn)行加窗處理,并計(jì)算加窗后語音數(shù)據(jù)的能量譜;將該幀語音數(shù)據(jù)均勻劃分為多個(gè)子帶,計(jì)算子頻帶概率;根據(jù)子頻帶概率計(jì)算子帶加權(quán)因子;根據(jù)最小子帶頻譜能量計(jì)算出有用子帶數(shù)目;以及根據(jù)子帶加權(quán)因子、有用子帶數(shù)目和子頻帶概率計(jì)算出自適應(yīng)子帶頻譜熵。
可選地,在根據(jù)本發(fā)明的語音變速方法中,文件信息包括每段midi的音長、音樂速度、位置和每個(gè)位置所需字?jǐn)?shù)。
可選地,在根據(jù)本發(fā)明的語音變速方法中,結(jié)合midi文件信息算出每段midi上對應(yīng)的語音數(shù)據(jù)的步驟包括:根據(jù)midi文件信息,在該段midi文件對應(yīng)的位置上排列相應(yīng)的語音。
可選地,在根據(jù)本發(fā)明的語音變速方法中,根據(jù)預(yù)定的對齊規(guī)則將所算得的語音數(shù)據(jù)對齊到該段midi上的步驟包括:根據(jù)midi的音樂速度信息將midi文件劃分網(wǎng)格;以及將排列在對應(yīng)位置的語音數(shù)據(jù)對齊到網(wǎng)格上。
可選地,在根據(jù)本發(fā)明的語音變速方法中,根據(jù)預(yù)定的對齊規(guī)則將所算得的語音數(shù)據(jù)對齊到該段midi上的步驟包括:根據(jù)每個(gè)字的起始幀數(shù)計(jì)算其被拉伸或壓縮的倍速;當(dāng)判斷壓縮倍速大于最大壓縮倍速時(shí),通過增加midi的長度使得排列在對應(yīng)位置的語音數(shù)據(jù)對齊midi的節(jié)奏;或當(dāng)判斷拉伸倍速大于最大拉伸倍速時(shí),通過增加語音數(shù)據(jù)的字?jǐn)?shù)使得排列在對應(yīng)位置的語音數(shù)據(jù)對齊midi的節(jié)奏。
可選地,在根據(jù)本發(fā)明的語音變速方法中,最大拉伸倍速是4,所述最大壓縮倍速是2。
可選地,在根據(jù)本發(fā)明的語音變速方法中,采用基于相位聲碼器的語音變速算法對對齊后的語音數(shù)據(jù)進(jìn)行變速的步驟包括:計(jì)算對齊到每段midi上的語音數(shù)據(jù)的變速尺度;獲取midi上對齊的語音數(shù)據(jù)的幅度和相位信息;計(jì)算語音數(shù)據(jù)變速后的幅度和相位信息,生成每一幀語音數(shù)據(jù)對應(yīng)的頻譜;以及對每一幀頻譜進(jìn)行逆傅里葉變換,并通過ola疊加算法合成該段midi對齊的語音數(shù)據(jù)。
可選地,在根據(jù)本發(fā)明的語音變速方法中,在通過靜音檢測提取待處理語音數(shù)據(jù)中的有聲段的步驟之前,還包括對待處理語音數(shù)據(jù)進(jìn)行預(yù)處理的步驟。
可選地,在根據(jù)本發(fā)明的語音變速方法中,第一數(shù)量為20。
根據(jù)本發(fā)明的又一方面,提供了一種計(jì)算設(shè)備,包括:一個(gè)或多個(gè)處理器;和存儲(chǔ)器;一個(gè)或多個(gè)程序,其中所述一個(gè)或多個(gè)程序存儲(chǔ)在存儲(chǔ)器中并被配置為由一個(gè)或多個(gè)處理器執(zhí)行,所述一個(gè)或多個(gè)程序包括用于執(zhí)行如上所述語音變速方法中的任一方法的指令。
根據(jù)本發(fā)明的又一方面,提供了一種存儲(chǔ)一個(gè)或多個(gè)程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述一個(gè)或多個(gè)程序包括指令,所述指令當(dāng)計(jì)算設(shè)備執(zhí)行時(shí),使得計(jì)算設(shè)備執(zhí)行如上所述語音變速方法中的任一方法。
根據(jù)本發(fā)明的語音變速方案,根據(jù)midi文件給定的節(jié)奏信息,將自由說話的語音通過語音切字、語音對齊、語音變速等處理,使重新排列的語音經(jīng)過變速后獲得midi給定的節(jié)奏,通過混音算法將處理后的語音與背景音樂結(jié)合,實(shí)現(xiàn)自由說話的語音到歌曲的轉(zhuǎn)變。可以讓更多人隨時(shí)隨地的體驗(yàn)說唱的快感。
附圖說明
為了實(shí)現(xiàn)上述以及相關(guān)目的,本文結(jié)合下面的描述和附圖來描述某些說明性方面,這些方面指示了可以實(shí)踐本文所公開的原理的各種方式,并且所有方面及其等效方面旨在落入所要求保護(hù)的主題的范圍內(nèi)。通過結(jié)合附圖閱讀下面的詳細(xì)描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯。遍及本公開,相同的附圖標(biāo)記通常指代相同的部件或元素。
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的計(jì)算設(shè)備100的構(gòu)造示意圖;以及
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的基于音樂節(jié)奏的語音變速方法200的流程圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
圖1是示例計(jì)算設(shè)備100的框圖。在基本的配置102中,計(jì)算設(shè)備100典型地包括系統(tǒng)存儲(chǔ)器106和一個(gè)或者多個(gè)處理器104。存儲(chǔ)器總線108可以用于在處理器104和系統(tǒng)存儲(chǔ)器106之間的通信。
取決于期望的配置,處理器104可以是任何類型的處理,包括但不限于:微處理器(μp)、微控制器(μc)、數(shù)字信息處理器(dsp)或者它們的任何組合。處理器104可以包括諸如一級高速緩存110和二級高速緩存112之類的一個(gè)或者多個(gè)級別的高速緩存、處理器核心114和寄存器116。示例的處理器核心114可以包括運(yùn)算邏輯單元(alu)、浮點(diǎn)數(shù)單元(fpu)、數(shù)字信號處理核心(dsp核心)或者它們的任何組合。示例的存儲(chǔ)器控制器118可以與處理器104一起使用,或者在一些實(shí)現(xiàn)中,存儲(chǔ)器控制器118可以是處理器104的一個(gè)內(nèi)部部分。
取決于期望的配置,系統(tǒng)存儲(chǔ)器106可以是任意類型的存儲(chǔ)器,包括但不限于:易失性存儲(chǔ)器(諸如ram)、非易失性存儲(chǔ)器(諸如rom、閃存等)或者它們的任何組合。系統(tǒng)存儲(chǔ)器106可以包括操作系統(tǒng)120、一個(gè)或者多個(gè)應(yīng)用122以及程序數(shù)據(jù)124。在一些實(shí)施方式中,應(yīng)用122可以布置為在操作系統(tǒng)上利用程序數(shù)據(jù)124進(jìn)行操作。在一些實(shí)施例中,計(jì)算設(shè)備100被配置為執(zhí)行基于音樂節(jié)奏的語音變速方法200,該方法200能夠根據(jù)目標(biāo)語音數(shù)據(jù)的節(jié)奏對待處理語音數(shù)據(jù)進(jìn)行變速處理,得到富有說唱音樂節(jié)奏感的語音數(shù)據(jù),程序數(shù)據(jù)124中包含了用于執(zhí)行該方法200的指令。
計(jì)算設(shè)備100還可以包括有助于從各種接口設(shè)備(例如,輸出設(shè)備142、外設(shè)接口144和通信設(shè)備146)到基本配置102經(jīng)由總線/接口控制器130的通信的接口總線140。示例的輸出設(shè)備142包括圖形處理單元148和音頻處理單元150。它們可以被配置為有助于經(jīng)由一個(gè)或者多個(gè)a/v端口152與諸如顯示器或者揚(yáng)聲器之類的各種外部設(shè)備進(jìn)行通信。示例外設(shè)接口144可以包括串行接口控制器154和并行接口控制器156,它們可以被配置為有助于經(jīng)由一個(gè)或者多個(gè)i/o端口158和諸如輸入設(shè)備(例如,鍵盤、鼠標(biāo)、筆、語音輸入設(shè)備、觸摸輸入設(shè)備)或者其他外設(shè)(例如打印機(jī)、掃描儀等)之類的外部設(shè)備進(jìn)行通信。示例的通信設(shè)備146可以包括網(wǎng)絡(luò)控制器160,其可以被布置為便于經(jīng)由一個(gè)或者多個(gè)通信端口164與一個(gè)或者多個(gè)其他計(jì)算設(shè)備162通過網(wǎng)絡(luò)通信鏈路的通信。在本實(shí)施例中,可以通過諸如語音輸入設(shè)備實(shí)時(shí)獲取待處理的語音數(shù)據(jù)。
網(wǎng)絡(luò)通信鏈路可以是通信介質(zhì)的一個(gè)示例。通信介質(zhì)通??梢泽w現(xiàn)為在諸如載波或者其他傳輸機(jī)制之類的調(diào)制數(shù)據(jù)信號中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊,并且可以包括任何信息遞送介質(zhì)?!罢{(diào)制數(shù)據(jù)信號”可以這樣的信號,它的數(shù)據(jù)集中的一個(gè)或者多個(gè)或者它的改變可以在信號中編碼信息的方式進(jìn)行。作為非限制性的示例,通信介質(zhì)可以包括諸如有線網(wǎng)絡(luò)或者專線網(wǎng)絡(luò)之類的有線介質(zhì),以及諸如聲音、射頻(rf)、微波、紅外(ir)或者其它無線介質(zhì)在內(nèi)的各種無線介質(zhì)。這里使用的術(shù)語計(jì)算機(jī)可讀介質(zhì)可以包括存儲(chǔ)介質(zhì)和通信介質(zhì)二者。在一些實(shí)施例中,計(jì)算機(jī)可讀介質(zhì)中存儲(chǔ)一個(gè)或多個(gè)程序,這一個(gè)或多個(gè)程序中包括執(zhí)行某些方法的指令,如根據(jù)本發(fā)明的實(shí)施例,計(jì)算設(shè)備100通過所述指令來執(zhí)行基于音樂節(jié)奏的語音變速方法200。
計(jì)算設(shè)備100可以實(shí)現(xiàn)為小尺寸便攜(或者移動(dòng))電子設(shè)備的一部分,這些電子設(shè)備可以是諸如蜂窩電話、個(gè)人數(shù)字助理(pda)、個(gè)人媒體播放器設(shè)備、無線網(wǎng)絡(luò)瀏覽設(shè)備、個(gè)人頭戴設(shè)備、應(yīng)用專用設(shè)備、或者可以包括上面任何功能的混合設(shè)備。計(jì)算設(shè)備100還可以實(shí)現(xiàn)為包括桌面計(jì)算機(jī)和筆記本計(jì)算機(jī)配置的個(gè)人計(jì)算機(jī)。
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的基于音樂節(jié)奏的語音變速方法200的流程圖。如圖2所示,該方法200根據(jù)目標(biāo)語音數(shù)據(jù)的節(jié)奏對待處理語音數(shù)據(jù)進(jìn)行變速處理,得到富有說唱音樂節(jié)奏感的語音數(shù)據(jù),方法200始于步驟s210,通過靜音檢測提取待處理語音數(shù)據(jù)中的有聲段。
根據(jù)本發(fā)明的實(shí)施方式,首先計(jì)算每一幀語音數(shù)據(jù)的短時(shí)能量,當(dāng)至少有連續(xù)第一數(shù)量幀(如,20幀)語音數(shù)據(jù)的短時(shí)能量均小于第一閾值時(shí),確定該段語音數(shù)據(jù)為靜音段。由于計(jì)算語音數(shù)據(jù)的短時(shí)能量屬于本領(lǐng)域常規(guī)知識,故此處不作展開描述,本方法200可以與任一靜音檢測的手段相結(jié)合,提取出一段語音數(shù)據(jù)中的有聲段。
其中,第一閾值根據(jù)預(yù)定長度語音數(shù)據(jù)的平均能量確定,具體如下:預(yù)先設(shè)置短時(shí)能量的最大門限值為tmax0,tmax1和最小門限值tmin0,tmin1,然后計(jì)算前n幀語音數(shù)據(jù)的(例如,n取15幀)短時(shí)能量的平均值(以下稱平均能量)。若平均能量小于tmin0則第一閾值選擇tmin=tmin0(當(dāng)然,根據(jù)雙門限法還可以同時(shí)確定tmax=tmin1),若平均能量大于tmax0則第一閾值設(shè)為tmin=tmax0(當(dāng)然,可以同時(shí)設(shè)置tmax=tmax1),其他情況下第一閾值設(shè)置為tmin=平均能量的1.5倍(同樣地,還可以設(shè)置tmax=平均能量的10倍)??蛇x地,當(dāng)出現(xiàn)至少連續(xù)20幀語音數(shù)據(jù)的短時(shí)能量都小于tmin(即,第一閾值)時(shí),就認(rèn)為出現(xiàn)語音中斷,確定該至少連續(xù)20幀的語音數(shù)據(jù)為靜音段。
根據(jù)上述方法遍歷整個(gè)待處理語音數(shù)據(jù),找出所有的靜音段。剔除所確定的靜音段,就可以從待處理語音數(shù)據(jù)中提取出有聲段,一般地,有聲段可能有多個(gè)。
通過步驟s210,可以將待處理語音(即,用戶輸入的話語)切分成多個(gè)短語音段,由于在自由說話中的語音不會(huì)像歌詞那樣的符合樂理規(guī)則,故通過靜音檢測可以限制語音段的長度,以便于后續(xù)的對齊處理時(shí)保持語音的完整性。
可選地,在執(zhí)行步驟s210之前,還包括對待處理語音數(shù)據(jù)進(jìn)行預(yù)處理的步驟。例如,歸一化處理、去零點(diǎn)漂移、預(yù)加重處理、分幀處理,等等。預(yù)處理屬于本領(lǐng)域的常規(guī)做法,此處不做進(jìn)一步討論。
隨后在步驟s220中,對所提取的有聲段語音數(shù)據(jù)進(jìn)行切字處理。具體地,本步驟可以分為如下1)2)3)4)四步:
1)計(jì)算經(jīng)步驟s210提取的有聲段語音數(shù)據(jù)中每一幀語音數(shù)據(jù)的自適應(yīng)子帶頻譜熵。其中,自適應(yīng)子帶頻譜熵的求取簡單概括如下:
先取一幀語音數(shù)據(jù)x[n]進(jìn)行加窗處理,得到y(tǒng)[n],其中n為采樣點(diǎn),再對y[n]進(jìn)行傅里葉變換得到能量譜y[k],其中k為頻帶點(diǎn)。
然后,將y[k]均勻劃分為多個(gè)子帶(如,64個(gè)子帶),計(jì)算對應(yīng)子頻帶概率p[m],其中m為子帶數(shù),子頻帶概率計(jì)算公式如下:
p[m]=第m個(gè)子帶的總能量/當(dāng)前幀總能量,
接下來,根據(jù)子頻帶概率求解子帶歸一化加權(quán)因子w[m],計(jì)算公式如下:
w[m]=(pb_old[m]+pb[m]+pb_next[m])/(3*pb[m]),
其中,
再根據(jù)最小子帶頻譜能量計(jì)算出有用子帶數(shù)目,其中,歸一化最小子帶頻譜能量emin為:
emin=-log(當(dāng)前幀最小子帶能量/當(dāng)前幀的總能量),
那么,有用子帶數(shù)目v為:
其中,subtol為總的子帶數(shù),vmin為最少有用子帶數(shù)(本方法中設(shè)為16)。
這樣,就可以得出自適應(yīng)子帶頻譜熵的計(jì)算公式如下:
可選地,為了減小低頻帶對計(jì)算結(jié)果的影響,設(shè)置一個(gè)最小頻帶的值(本方法設(shè)置為4),那么,修改后的自適應(yīng)子帶頻譜熵的計(jì)算公式如下:
2)當(dāng)有連續(xù)兩幀語音數(shù)據(jù)的自適應(yīng)子帶頻譜熵均小于第二閾值時(shí),對這兩幀語音數(shù)據(jù)進(jìn)行切字處理。
其中,第二閾值根據(jù)每個(gè)有聲段語音數(shù)據(jù)的自適應(yīng)子帶頻譜熵均值確定。具體如下:計(jì)算每個(gè)有聲段語音數(shù)據(jù)的自適應(yīng)子帶頻譜熵的均值;遍歷該有聲段中所有的語音幀,若某幀語音數(shù)據(jù)的自適應(yīng)子帶頻譜熵大于均值的2倍,則將該幀的自適應(yīng)子帶頻譜熵重新設(shè)置為均值的2倍;遍歷結(jié)束后,重新計(jì)算該有聲段的自適應(yīng)子帶頻譜熵均值,并設(shè)置高門限值tmax=均值/3,低門限值,也就是第二閾值,tmin=tmax/2。
3)計(jì)算經(jīng)切字處理后的字長度。根據(jù)本發(fā)明的實(shí)施例,在每一次切分處理(包括切字)后,記錄下切分后每個(gè)小段語音數(shù)據(jù)的起始幀數(shù),根據(jù)每段的起始幀數(shù)即可算出字長度。
4)當(dāng)經(jīng)切字處理后字長度大于第三閾值(如,第三閾值設(shè)為100毫秒)時(shí),根據(jù)頻帶方差對其進(jìn)行再次切分,并記錄每個(gè)字的起始幀數(shù)。采用頻帶方差作為特征參數(shù)進(jìn)行再次切分的過程可參考步驟1)2)中以自適應(yīng)子帶頻譜熵作為特征參數(shù)的過程,頻帶方差的計(jì)算屬于本領(lǐng)域常規(guī)算法,此處不再展開描述。本步驟中采用頻帶方差作為特征參數(shù),是為了更好地區(qū)分字與字之間的間斷,提高字切分的準(zhǔn)確性。
經(jīng)步驟s210和步驟s220,即完成了語音切字的處理,經(jīng)過這三次切分處理后,獲取到每個(gè)字及其對應(yīng)的時(shí)長信息。隨后在步驟s230中,讀取目標(biāo)語音數(shù)據(jù)的midi文件,獲取其中每段midi的文件信息。midi(musicalinstrumentdigitalinterface,樂器數(shù)字接口)用音符的數(shù)字控制信號來記錄音樂,其文件信息中包含了每段midi的音長、音樂速度、位置和每個(gè)位置所需字?jǐn)?shù),還包括例如目標(biāo)語音數(shù)據(jù)中間斷出現(xiàn)的位置、每個(gè)大節(jié)和小節(jié)出現(xiàn)的位置及長度等。在本實(shí)施例中,每段midi指在歌曲的樂譜中一個(gè)歌詞的長度。
隨后在步驟s240中,結(jié)合步驟s230中獲取的midi文件信息算出每段midi上對應(yīng)的語音數(shù)據(jù)。根據(jù)midi文件信息可以得到在音樂規(guī)則中,每個(gè)位置所需的字?jǐn)?shù),因此,在對應(yīng)位置排列上相應(yīng)的語音(字),就是每段midi上對應(yīng)的語音數(shù)據(jù)。
遍歷目標(biāo)語音數(shù)據(jù)的midi文件,得到每段midi文件對應(yīng)的語音數(shù)據(jù)。
如果嚴(yán)格地根據(jù)歌詞數(shù)據(jù)和midi提供的節(jié)奏信息將待處理語音按位置排列到目標(biāo)語音的midi上,有極大機(jī)會(huì)會(huì)出現(xiàn)有節(jié)奏、但是聽不清在說什么的情況。故而,在隨后的步驟s250中,會(huì)根據(jù)預(yù)定的對齊規(guī)則將對應(yīng)的語音數(shù)據(jù)對齊到該段midi上,以保證在節(jié)奏最大化的同時(shí),保持語音的可懂度。
根據(jù)本發(fā)明的實(shí)施方式,提供了兩種語音的對齊規(guī)則。
第一,網(wǎng)格對齊。通過將時(shí)間刻度細(xì)化的形式,提高對齊的靈活度并且最大化地保證語音的可懂度。具體操作流程如下所述。
先根據(jù)midi的音樂速度信息將midi文件劃分網(wǎng)格,可選地,將每一個(gè)小節(jié)劃分成多個(gè)網(wǎng)格,細(xì)化對齊的尺度;
再將排列在對應(yīng)位置的語音數(shù)據(jù)對齊到網(wǎng)格上,可選地,將對應(yīng)語音數(shù)據(jù)的長度與midi中每個(gè)小段信息進(jìn)行長度對比,計(jì)算所需要的變速幅度;判斷這個(gè)變速幅度是否超過預(yù)置范圍,若不超過則進(jìn)入下一個(gè)midi段,若超過則將其對齊在最鄰近的網(wǎng)格上,下一個(gè)語音對齊從該網(wǎng)格開始;在處理過程中,可以通過重復(fù)一部分語音來增加語音的長度(一般地,重復(fù)部分布置在語音段的尾部)??蛇x地,一個(gè)大節(jié)的midi文件對應(yīng)一句新的語音。
第二,最具節(jié)奏對齊。在保持變速后的音頻可懂度的情況下,最大限度地對上midi給定的節(jié)奏。具體操作流程如下所述。
根據(jù)每個(gè)字的起始幀數(shù)和對應(yīng)的midi音長計(jì)算其被拉伸或壓縮的倍速:
當(dāng)判斷壓縮倍速大于最大壓縮倍速(如,最大壓縮倍速為2)時(shí),加入下一個(gè)midi,此時(shí)midi長度是兩段midi之和,依次類推,即,通過增加midi的長度使得排列在對應(yīng)位置的語音數(shù)據(jù)對齊midi的節(jié)奏;
反之,判斷拉伸倍速大于最大拉伸倍速(如,最大拉伸倍速為4)時(shí),再取一個(gè)字,將兩個(gè)字視為一個(gè)字重新比較壓縮倍速,依次類推,即,通過增加語音數(shù)據(jù)的字?jǐn)?shù)使得排列在對應(yīng)位置的語音數(shù)據(jù)對齊midi的節(jié)奏。
這里的拉伸倍速可以理解為將語音數(shù)據(jù)的長度進(jìn)行拉伸,通俗來講,音頻的播放速度進(jìn)行了減速,同樣地,壓縮倍速是將語音數(shù)據(jù)的長度進(jìn)行壓縮,壓縮倍速為2即將音頻播放速度加速2倍,即音頻數(shù)據(jù)的長度變?yōu)樵瓉淼?.5倍。
需要說明的是,在語音對齊時(shí),每次處理的語音段都是靜音檢測后的有聲段,處理過程中可以通過重復(fù)一部分語音實(shí)現(xiàn)語音長度的增加。本方法對此不作限制。
隨后對經(jīng)步驟s250對齊后的語音數(shù)據(jù)進(jìn)行變速處理,在步驟s260中,采用基于相位聲碼器(phasevecoder)的語音變速算法對對齊后的語音數(shù)據(jù)進(jìn)行變速。相位聲碼器是將時(shí)域采樣聲音轉(zhuǎn)換為頻率/幅度呈現(xiàn)和變換回時(shí)域的算法,允許編輯頻域中的聲音特性。
根據(jù)本發(fā)明的實(shí)施例,采用基于相位聲碼器的語音變速算法對對齊后的語音數(shù)據(jù)進(jìn)行變速的步驟包括:
1)計(jì)算對齊到每段midi上的語音數(shù)據(jù)的變速尺度。其中,變速尺度可以根據(jù)每段midi的音長和對應(yīng)的語音數(shù)據(jù)的時(shí)長(通過每個(gè)字對應(yīng)的起始幀數(shù)算得)計(jì)算得到。
2)獲取整段midi上對齊的語音數(shù)據(jù)及其對應(yīng)的所有幀在頻域的幅度信息amp[m]和相位信息phase[m],其中m為幀數(shù)。
3)計(jì)算語音數(shù)據(jù)變速后的幅度和相位信息,生成每一幀語音數(shù)據(jù)對應(yīng)的頻譜。
根據(jù)本發(fā)明的實(shí)施例,由已知的時(shí)間刻度time_src和變速尺度可以計(jì)算出變速后的時(shí)間刻度time。如,已知的時(shí)間刻度為time_src=[1234],進(jìn)行兩倍的拉伸,即原先有4幀,變速之后是8幀,這時(shí)時(shí)間刻度變成:
time=[11+3/71+6/72+2/72+5/73+1/73+4/74])
取尺度變換后的第k幀,根據(jù)變換尺度獲取在原尺度上相鄰的兩幀n_frame0、n_frame1。那么,n_frame0、n_frame1的計(jì)算如下:
n_frame0=floor(time[k])
n_frame1=floor(time[k])+1
計(jì)算權(quán)重weight,計(jì)算公式如下:
weight=time[k]/floor(time[k])
根據(jù)權(quán)重進(jìn)行相位和幅度的插值或抽取,其中,相位amp_new[n]表示為:
amp_new[n]=(1-weight)*amp[n_frame0]+weight*amp[n_frame1]
其中,n為新的時(shí)間刻度下的幀數(shù)。
由于計(jì)算相位響應(yīng)時(shí),有時(shí)會(huì)碰到相位響應(yīng)圖延頻率軸突變,這是由于正弦或余弦函數(shù)的周期模數(shù)特征所產(chǎn)生的,處理方法是當(dāng)相位超過2π幅度點(diǎn)時(shí)將其重置為0。
同理,幅度phase[n]表示為:
phase[n]=phase[n]+dphasei+dphase
其中,
dphase_1=phase[n_frame1]-phase[n_frame0]
同上,需要對dphase_1做規(guī)整得到dphase,即,
dphase=dphase_1-2*π*round(dphase_1/2π)
dphasei[i]=2*π*i*幀移/幀長
dphasei=dphasei[i](i=1,2,...n/2+1)
其中,i為頻點(diǎn)數(shù),n為傅里葉變換點(diǎn)數(shù)(這里n=幀長)。
需要說明的是,前文所說的幅度、相位均是傅里葉變換之后得到的,所以并沒有對他們做類似標(biāo)識(如phase[n]=phase[n][i],(i=1,2,...n/2+1))。而此處dphasei是新引入的所以做了說明。由于這些都是行業(yè)內(nèi)部的公知故不再陳述。
在得到語音數(shù)據(jù)變速后的相位和幅度信息后,即可求得相應(yīng)的頻譜。
4)再對每一幀頻譜進(jìn)行逆傅里葉變換,并通過ola(overlap-and-add)疊加算法合成該段midi對齊的語音數(shù)據(jù)。ola疊加算法是音頻變速算法中較為常見的一種算法,且不是本實(shí)施例的重點(diǎn),此處不作展開描述。
遍歷整個(gè)midi文件,獲得與之對應(yīng)的語音數(shù)據(jù),即變速后的語音數(shù)據(jù)。
隨后在步驟s270中,將變速后的語音數(shù)據(jù)與目標(biāo)語音數(shù)據(jù)的背景音樂進(jìn)行混音,輸出合成的語音,即實(shí)現(xiàn)了將自由說話的語音(即,待處理語音)轉(zhuǎn)換成富有節(jié)奏感的說唱歌曲。
根據(jù)本發(fā)明的語音變速方案,根據(jù)midi文件給定的節(jié)奏信息,將自由說話的語音通過語音切字、語音對齊、語音變速等處理,使重新排列的語音經(jīng)過變速后獲得midi給定的節(jié)奏,通過混音算法將處理后的語音與背景音樂結(jié)合,實(shí)現(xiàn)自由說話的語音到歌曲的轉(zhuǎn)變??梢宰尭嗳穗S時(shí)隨地的體驗(yàn)說唱的快感。
本方案采用了三級語音切分,在保證句子完整性的同時(shí)可以對每一個(gè)字進(jìn)行較好地切分,并且在對齊規(guī)則中對變速尺度進(jìn)行限制,能夠更好地保持語音的可懂度。更進(jìn)一步地,本方案中的語音變速采用幀級別的粒度,可以有效地對每一個(gè)字進(jìn)行不同倍率的變速,同時(shí)不會(huì)出現(xiàn)斷續(xù)的情況,保證了變速后的語音在語調(diào)和語義上的完整性。
另外,本方案還可以用于唱歌時(shí)的節(jié)奏糾錯(cuò),應(yīng)用于ktv的評分系統(tǒng)中,根據(jù)節(jié)奏的匹配情況,給出相應(yīng)的得分。
應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員應(yīng)當(dāng)理解在本文所公開的示例中的設(shè)備的模塊或單元或組件可以布置在如該實(shí)施例中所描述的設(shè)備中,或者可替換地可以定位在與該示例中的設(shè)備不同的一個(gè)或多個(gè)設(shè)備中。前述示例中的模塊可以組合為一個(gè)模塊或者此外可以分成多個(gè)子模塊。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
此外,所述實(shí)施例中的一些在此被描述成可以由計(jì)算機(jī)系統(tǒng)的處理器或者由執(zhí)行所述功能的其它裝置實(shí)施的方法或方法元素的組合。因此,具有用于實(shí)施所述方法或方法元素的必要指令的處理器形成用于實(shí)施該方法或方法元素的裝置。此外,裝置實(shí)施例的在此所述的元素是如下裝置的例子:該裝置用于實(shí)施由為了實(shí)施該發(fā)明的目的的元素所執(zhí)行的功能。
本發(fā)明還一并公開了:
a9、如a8所述的方法,其中根據(jù)預(yù)定的對齊規(guī)則將所算得的語音數(shù)據(jù)對齊到該段midi上的步驟包括:根據(jù)midi的音樂速度信息將midi文件劃分網(wǎng)格;以及將排列在對應(yīng)位置的語音數(shù)據(jù)對齊到網(wǎng)格上。
a10、如a7所述的方法,其中,根據(jù)預(yù)定的對齊規(guī)則將所算得的語音數(shù)據(jù)對齊到該段midi上的步驟包括:根據(jù)每個(gè)字的起始幀數(shù)計(jì)算其被拉伸或壓縮的倍速;當(dāng)判斷壓縮倍速大于最大壓縮倍速時(shí),通過增加midi的長度使得排列在對應(yīng)位置的語音數(shù)據(jù)對齊midi的節(jié)奏;或當(dāng)判斷拉伸倍速大于最大拉伸倍速時(shí),通過增加語音數(shù)據(jù)的字?jǐn)?shù)使得排列在對應(yīng)位置的語音數(shù)據(jù)對齊midi的節(jié)奏。
a11、如a10所述的方法,其中,最大拉伸倍速是4,最大壓縮倍速是2。
a12、如a1-11中任一項(xiàng)所述的方法,其中,采用基于相位聲碼器的語音變速算法對對齊后的語音數(shù)據(jù)進(jìn)行變速的步驟包括:計(jì)算對齊到每段midi上的語音數(shù)據(jù)的變速尺度;獲取midi上對齊的語音數(shù)據(jù)的幅度和相位信息;計(jì)算語音數(shù)據(jù)變速后的幅度和相位信息,生成每一幀語音數(shù)據(jù)對應(yīng)的頻譜;以及對每一幀頻譜進(jìn)行逆傅里葉變換,并通過ola疊加算法合成該段midi對齊的語音數(shù)據(jù)。
a13、如a1-12中任一項(xiàng)所述的方法,其中,在通過靜音檢測提取待處理語音數(shù)據(jù)中的有聲段的步驟之前,還包括對待處理語音數(shù)據(jù)進(jìn)行預(yù)處理的步驟。
a14、如a2-13中任一項(xiàng)所述的方法,其中,第一數(shù)量為20。
如在此所使用的那樣,除非另行規(guī)定,使用序數(shù)詞“第一”、“第二”、“第三”等等來描述普通對象僅僅表示涉及類似對象的不同實(shí)例,并且并不意圖暗示這樣被描述的對象必須具有時(shí)間上、空間上、排序方面或者以任意其它方式的給定順序。
盡管根據(jù)有限數(shù)量的實(shí)施例描述了本發(fā)明,但是受益于上面的描述,本技術(shù)領(lǐng)域內(nèi)的技術(shù)人員明白,在由此描述的本發(fā)明的范圍內(nèi),可以設(shè)想其它實(shí)施例。此外,應(yīng)當(dāng)注意,本說明書中使用的語言主要是為了可讀性和教導(dǎo)的目的而選擇的,而不是為了解釋或者限定本發(fā)明的主題而選擇的。因此,在不偏離所附權(quán)利要求書的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。對于本發(fā)明的范圍,對本發(fā)明所做的公開是說明性的,而非限制性的,本發(fā)明的范圍由所附權(quán)利要求書限定。