本申請涉及音樂制作領(lǐng)域,尤其涉及一種自動生成鬼畜類歌曲的方法及裝置。
背景技術(shù):
現(xiàn)在網(wǎng)絡(luò)上有很多鬼畜類型的歌曲及視頻廣受歡迎,鬼畜類的歌曲及視頻以高度同步、快速重復(fù)的素材配合背景音樂的節(jié)奏、鬼一樣的抽搐來達(dá)到洗腦或喜感效果,或通過音、視頻剪輯,用頻率極高的重復(fù)畫面或聲音組合而成的一段節(jié)奏配合音畫同步率極高的一類歌曲及視頻。但是,通常這種鬼畜類型的音頻需要專業(yè)人員來制作,而且制作過程復(fù)雜,周期較長。目前并沒有一種裝置或設(shè)備能夠自動生成鬼畜類型的歌曲。
技術(shù)實(shí)現(xiàn)要素:
本申請?zhí)峁┝艘环N自動生成鬼畜類歌曲的方法及裝置。為了實(shí)現(xiàn)上述目的,本申請?zhí)峁┝艘韵录夹g(shù)方案:
一種自動生成鬼畜類歌曲的方法,包括:
獲取第一語音文件;
建立所述第一語音文件中發(fā)聲的音節(jié)與樂器數(shù)字接口midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系,所述發(fā)聲的音節(jié)為漢字的讀音,所述midi格式音頻文件由預(yù)設(shè)的背景音樂生成,所述midi格式音頻文件包含midi音符和所述midi音符的音長;
根據(jù)所述對應(yīng)填充關(guān)系,將所述第一語音文件中發(fā)聲的音節(jié)的音長做拉伸或者壓縮處理,使得發(fā)聲的音節(jié)的音長與對應(yīng)填充的midi音符的音長相同,得到第二語音文件;
將所述第二語音文件中每p個句塊作為一個變聲單位進(jìn)行隨機(jī)變聲處理,其中p為正整數(shù);
根據(jù)所述對應(yīng)填充關(guān)系,將隨機(jī)變聲處理后的第二語音文件與所述預(yù)設(shè)的背景音樂進(jìn)行混音,得到鬼畜類歌曲。
優(yōu)選的,在所述獲取第一語音文件之后,且在所述建立所述第一語音文件中發(fā)聲的音節(jié)與樂器數(shù)字接口midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系之前,還包括:
檢測所述第一語音文件中發(fā)聲的音節(jié)和未發(fā)聲的音節(jié),將所述未發(fā)聲的音節(jié)之前的連續(xù)的發(fā)聲的音節(jié)作為一個句塊,并記錄每個句塊中發(fā)聲的音節(jié)個數(shù)n,其中,未發(fā)生的音節(jié)為漢字組成的句子之間的停頓,連續(xù)的發(fā)聲的音節(jié)組成句塊,未發(fā)聲的音節(jié)劃分出不同的句塊,n為正整數(shù);
讀取由預(yù)設(shè)的背景音樂生成的midi格式音頻文件,所述midi格式音頻文件包含midi音符和所述midi音符的音長;
檢測所述midi格式音頻文件中每個小節(jié)所包含的midi音符,并記錄每個小節(jié)所包含的midi音符個數(shù)m,m為正整數(shù)。
優(yōu)選的,在檢測所述第一語音文件中發(fā)聲的音節(jié)和未發(fā)聲的音節(jié),將所述未發(fā)聲的音節(jié)之前的連續(xù)的發(fā)聲的音節(jié)作為一個句塊之后,且在建立所述第一語音文件中發(fā)聲的音節(jié)與樂器數(shù)字接口midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系之前,還包括:
若一個句塊滿足預(yù)設(shè)的條件,將該句塊與前面相鄰的一個句塊或者與后面相鄰的一個句塊合并為一個句塊,合并后的句塊中的發(fā)聲的音節(jié)個數(shù)為合并前兩個句塊中發(fā)聲的音節(jié)的數(shù)量之和,若合并后的句塊滿足所述預(yù)設(shè)的條件,則將合并后的句塊與該合并后的句塊前面相鄰的一個句塊或者與后面相鄰的一個句塊合并為一個句塊,直到合并后的句塊不滿足所述預(yù)設(shè)的條件,其中,所述預(yù)設(shè)的條件為句塊中發(fā)聲的音節(jié)的個數(shù)n小于或者等于預(yù)設(shè)的數(shù)值。
優(yōu)選的,所述建立所述第一語音文件中發(fā)聲的音節(jié)與樂器數(shù)字接口midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系,具體包括:
比較所述第一語音文件中第i個句塊中發(fā)聲的音節(jié)個數(shù)n和所述midi格式音頻文件中第i個小節(jié)的midi音符個數(shù)m,其中i為正整數(shù),將n大于2m的句塊平均劃分為f個句塊,使得滿足n/f小于或者等于2m,其中f為大于1的正整數(shù),每個句塊中發(fā)聲的音節(jié)個數(shù)為n/f,如果n不能被f整除,則將n/f向下或者向上取整;
若n小于m,則對應(yīng)填充關(guān)系為,第i個句塊中n個發(fā)聲的音節(jié)一一對應(yīng)第i個小節(jié)中前n個midi音符,第i個句塊中從倒數(shù)第m-n個發(fā)聲的音節(jié)開始一一對應(yīng)在第i個小節(jié)剩余的m-n的音符;
若n等于m,則對應(yīng)填充關(guān)系為,第i個句塊中第k個發(fā)聲的音節(jié)對應(yīng)第i個小節(jié)中第k個midi音符,其中k為正整數(shù);
若n大于m且小于或者等于2m,則對應(yīng)填充關(guān)系為,第i個句塊中倒數(shù)第2*(n-m)個發(fā)聲的音節(jié)之前的發(fā)聲的音節(jié)一一對應(yīng)第i個小節(jié)中的音符,從第i個句塊中倒數(shù)第2*(n-m)個發(fā)聲的音節(jié)開始,第i個句塊中兩個連續(xù)的發(fā)聲的音節(jié)對應(yīng)一個midi音符。
一種自動生成鬼畜類歌曲的裝置,包括:
語音獲取模塊,用于獲取第一語音文件;
對應(yīng)關(guān)系建立模塊,用于建立所述第一語音文件中發(fā)聲的音節(jié)與樂器數(shù)字接口midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系,所述發(fā)聲的音節(jié)為漢字的讀音,所述midi格式音頻文件由預(yù)設(shè)的背景音樂生成,所述midi格式音頻文件包含midi音符和所述midi音符的音長;
音長處理模塊,用于根據(jù)所述對應(yīng)填充關(guān)系,將所述第一語音文件中發(fā)聲的音節(jié)的音長做拉伸或者壓縮處理,使得發(fā)聲的音節(jié)的音長與對應(yīng)填充的midi音符的音長相同,得到第二語音文件;
變聲處理模塊,用于將所述第二語音文件中每p個句塊作為一個變聲單位進(jìn)行隨機(jī)變聲處理,其中p為正整數(shù);
混音模塊,用于根據(jù)所述對應(yīng)填充關(guān)系,將隨機(jī)變聲處理后的第二語音文件與所述預(yù)設(shè)的背景音樂進(jìn)行混音,得到鬼畜類歌曲。
優(yōu)選的,還包括:
音節(jié)檢測模塊,用于在所述語音獲取模塊獲取第一語音文件之后,且在所述對應(yīng)關(guān)系建立模塊建立所述第一語音文件中發(fā)聲的音節(jié)與樂器數(shù)字接口midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系之前,檢測所述第一語音文件中發(fā)聲的音節(jié)和未發(fā)聲的音節(jié),將所述未發(fā)聲的音節(jié)之前的連續(xù)的發(fā)聲的音節(jié)作為一個句塊,并記錄每個句塊中發(fā)聲的音節(jié)個數(shù)n,其中,未發(fā)生的音節(jié)為漢字組成的句子之間的停頓,連續(xù)的發(fā)聲的音節(jié)組成句塊,未發(fā)聲的音節(jié)劃分出不同的句塊,n為正整數(shù);
讀取模塊,用于在所述對應(yīng)關(guān)系建立模塊建立所述第一語音文件中發(fā)聲的音節(jié)與樂器數(shù)字接口midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系之前,讀取由預(yù)設(shè)的背景音樂生成的midi格式音頻文件,所述midi格式音頻文件包含midi音符和所述midi音符的音長;
音符檢測模塊,用于在所述讀取模塊讀取由預(yù)設(shè)的背景音樂生成的midi格式音頻文件之后,檢測所述midi格式音頻文件中每個小節(jié)所包含的midi音符,并記錄每個小節(jié)所包含的midi音符個數(shù)m,m為正整數(shù)。
優(yōu)選的,還包括:
句塊合并模塊,用于在所述音節(jié)檢測模塊用于檢測所述第一語音文件中發(fā)聲的音節(jié)和未發(fā)聲的音節(jié),將所述未發(fā)聲的音節(jié)之前的連續(xù)的發(fā)聲的音節(jié)作為一個句塊之后,且在所述對應(yīng)關(guān)系建立模塊用于建立所述第一語音文件中發(fā)聲的音節(jié)與樂器數(shù)字接口midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系之前,若一個句塊滿足預(yù)設(shè)的條件,將該句塊與前面相鄰的一個句塊或者與后面相鄰的一個句塊合并為一個句塊,合并后的句塊中的發(fā)聲的音節(jié)個數(shù)為合并前兩個句塊中發(fā)聲的音節(jié)的數(shù)量之和,若合并后的句塊滿足所述預(yù)設(shè)的條件,則將合并后的句塊與該合并后的句塊前面相鄰的一個句塊或者與后面相鄰的一個句塊合并為一個句塊,直到合并后的句塊不滿足所述預(yù)設(shè)的條件,其中,所述預(yù)設(shè)的條件為句塊中發(fā)聲的音節(jié)的個數(shù)n小于或者等于預(yù)設(shè)的數(shù)值。
優(yōu)選的,所述對應(yīng)關(guān)系建立模塊用于建立所述第一語音文件中發(fā)聲的音節(jié)與樂器數(shù)字接口midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系包括:
對應(yīng)關(guān)系建立模塊具體用于,比較所述第一語音文件中第i個句塊中發(fā)聲的音節(jié)個數(shù)n和所述midi格式音頻文件中第i個小節(jié)的midi音符個數(shù)m,其中i為正整數(shù),將n大于2m的句塊平均劃分為f個句塊,使得滿足n/f小于或者等于2m,其中f為大于1的正整數(shù),每個句塊中發(fā)聲的音節(jié)個數(shù)為n/f,如果n不能被f整除,則將n/f向下或者向上取整;
若n小于m,則對應(yīng)填充關(guān)系為,第i個句塊中n個發(fā)聲的音節(jié)一一對應(yīng)第i個小節(jié)中前n個midi音符,第i個句塊中從倒數(shù)第m-n個發(fā)聲的音節(jié)開始一一對應(yīng)在第i個小節(jié)剩余的m-n的音符;
若n等于m,則對應(yīng)填充關(guān)系為,第i個句塊中第k個發(fā)聲的音節(jié)對應(yīng)第i個小節(jié)中第k個midi音符,其中k為正整數(shù);
若n大于m且小于或者等于2m,則對應(yīng)填充關(guān)系為,第i個句塊中倒數(shù)第2*(n-m)個發(fā)聲的音節(jié)之前的發(fā)聲的音節(jié)一一對應(yīng)第i個小節(jié)中的音符,從第i個句塊中倒數(shù)第2*(n-m)個發(fā)聲的音節(jié)開始,第i個句塊中兩個連續(xù)的發(fā)聲的音節(jié)對應(yīng)一個midi音符。
由上述方案可知,本申請?zhí)峁┝艘环N自動生成鬼畜類歌曲的方法及裝置,首先獲取第一語音文件,建立所述第一語音文件中發(fā)聲的音節(jié)與midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系;根據(jù)所述對應(yīng)填充關(guān)系,將所述第一語音文件中發(fā)聲的音節(jié)的音長做拉伸或者壓縮處理,使得發(fā)聲的音節(jié)的音長與對應(yīng)填充的midi音符的音長相同,得到第二語音文件;將所述第二語音文件中每p個句塊作為一個變聲單位進(jìn)行隨機(jī)變聲處理;根據(jù)所述對應(yīng)填充關(guān)系,將隨機(jī)變聲處理后的第二語音文件與所述預(yù)設(shè)的背景音樂進(jìn)行混音,得到鬼畜類歌曲。
附圖說明
為了更清楚地說明本申請實(shí)施例中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為一種自動生成鬼畜類歌曲的方法的流程圖;
圖2為又一種自動生成鬼畜類歌曲的方法的流程圖;
圖3為一種自動生成鬼畜類歌曲的裝置的流程圖。
具體實(shí)施方式
本申請?zhí)峁┝艘环N自動生成鬼畜類歌曲的方法和裝置,該裝置可以應(yīng)用在各種電子設(shè)備中,如計算機(jī)、或者平板電腦、或者手機(jī)。當(dāng)該裝置應(yīng)用在手機(jī)中時,該裝置可以為手機(jī)應(yīng)用(application,app)。
下面詳細(xì)介紹實(shí)現(xiàn)該裝置自動生成鬼畜類歌曲的過程。
圖1為一種自動生成鬼畜類歌曲的方法的流程圖,該方法的具體流程如下:
s101:獲取第一語音文件。
其中,獲取第一語音文件可以由兩種方法實(shí)現(xiàn),第一種方法為,接收第一語音文件,例如第一語音文件可以是用戶提前錄制的;第二種方法為,接收用戶的語音,生成第一語音文件。例如,手機(jī)上的app采集用戶的語音,并將語音生成第一語音文件。
其中,在語音文件中,發(fā)聲的音節(jié)為漢字的讀音。未發(fā)聲的音節(jié)為,漢字之間的停頓。
基于上述獲取方法,第一語音文件中音節(jié)(包括發(fā)聲的音節(jié)和未發(fā)聲的音節(jié))的排列順序與用戶錄制語音的過程中用戶發(fā)出語音的順序一致。
s102:檢測第一語音文件中發(fā)聲的音節(jié)和未發(fā)聲的音節(jié),將未發(fā)聲的音節(jié)之前的連續(xù)的發(fā)聲的音節(jié)作為一個句塊,并記錄每個句塊中發(fā)聲的音節(jié)個數(shù)n,n為正整數(shù)。
連續(xù)的發(fā)聲的音節(jié)組成句塊,未發(fā)聲的音節(jié)劃分出不同的句塊。句塊的排列順序與用戶錄制語音的過程中用戶發(fā)出語音的順序一致。
例如,檢測第一語音文件中發(fā)聲的音節(jié)和未發(fā)聲的音節(jié),從開始檢測到第一個發(fā)聲的音節(jié)直到檢測到第一個未發(fā)聲的音節(jié),第一個未發(fā)聲的音節(jié)之前的連續(xù)的發(fā)聲的音節(jié)即為一個句塊,并記錄該句塊中發(fā)聲的音節(jié)個數(shù)n,然后,進(jìn)行下一個句塊的檢測,直到完成對第一語音文件的檢測。
例如,手機(jī)app接收用戶的語音,生成的語音文件中包括以下內(nèi)容“問世間情為何物直教人生死相許”,空格為用戶輸入語音時的停頓,即未發(fā)聲的音節(jié)。檢測該語音文件中發(fā)聲的音節(jié)和未發(fā)聲的音節(jié),檢測到的第一個音節(jié)為發(fā)聲的音節(jié),即漢字“問”,第二個音節(jié)為發(fā)聲的音節(jié),即漢字“世”,繼續(xù)對后面的音節(jié)進(jìn)行檢測,直到檢測到第八個音節(jié),即空格處,第八個音節(jié)為一個未發(fā)聲的音節(jié),而且是檢測到的第一個未發(fā)聲的音節(jié),將該未發(fā)聲的音節(jié)之前的連續(xù)的發(fā)聲的音節(jié)作為一個句塊,即將“問世間情為何物”這句話作為一個句塊,并記錄該句塊中發(fā)聲的音節(jié)的個數(shù)為7。在檢測完一個句塊后,將重新對檢測的發(fā)聲的音節(jié)進(jìn)行計數(shù)。然后,繼續(xù)對后續(xù)音節(jié)進(jìn)行檢測,檢測到的第一個音節(jié)為發(fā)聲的音節(jié),即漢字“直”,繼續(xù)對后面的音節(jié)進(jìn)行檢測,直到檢測到第八個音節(jié),即空格處,第八個音節(jié)為一個未發(fā)聲的音節(jié),而且是檢測到的第一個未發(fā)聲的音節(jié),將該未發(fā)聲的音節(jié)之前的連續(xù)的發(fā)聲的音節(jié)作為一個句塊,即“直教人生死相許”這句話作為一個句塊,并記錄該句塊中發(fā)聲的音節(jié)的個數(shù)為7。
s103:讀取由預(yù)設(shè)的背景音樂生成的樂器數(shù)字接口(musicalinstrumentdigitalinterface,midi)格式音頻文件,所述midi格式音頻文件包含midi音符和所述midi音符的音長,檢測所述midi格式音頻文件中每個小節(jié)所包含的midi音符,并記錄每個小節(jié)所包含的midi音符個數(shù)m,m為正整數(shù)。
其中,預(yù)設(shè)的背景音樂可以由用戶根據(jù)自己的喜好提前設(shè)置,從而滿足用戶的個性化需求。預(yù)設(shè)的背景音樂也可以由程序開發(fā)者提前設(shè)置?;蛘?,程序開發(fā)者提前設(shè)置背景音樂,用戶可以從其中選擇自己喜歡的背景音樂,如果沒有用戶喜歡的背景音樂,用戶可以根據(jù)自己的喜好提前設(shè)置背景音樂。為了達(dá)到鬼畜類型音樂更好的效果,一般選擇節(jié)奏感較強(qiáng)的音樂作為背景音樂。midi格式的音頻文件由背景音樂生成。
例如,|12345|即為一個小節(jié),“|”是小節(jié)線,每個小節(jié)之間是由小節(jié)線來劃分,該小節(jié)所包含的midi音符個數(shù)為5。
需要說明的是,步驟s103可以在步驟s101之前執(zhí)行,也可以在步驟s102之前執(zhí)行,只要在步驟s104之前完成即可,本申請對步驟s101、s102、s103的執(zhí)行順序并不做限定。
s104:建立第一語音文件中發(fā)聲的音節(jié)與midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系。
其中,建立第一語音文件中發(fā)聲的音節(jié)與midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系的具體實(shí)現(xiàn)方式為:
比較第一語音文件中第i個句塊中發(fā)聲的音節(jié)個數(shù)n和midi格式音頻文件中第i個小節(jié)的midi音符個數(shù)m,將n大于2m的句塊平均分劃分為f個句塊,使得滿足n/f小于或者等于2m,其中f為大于1的正整數(shù),每個句塊中發(fā)聲的音節(jié)個數(shù)為n/f,如果n不能被f整除,則將n/f向下或者向上取整。
需要說明的是f的取值,將f預(yù)先設(shè)置一個數(shù)值,當(dāng)不滿足n/f小于或者等于2m,可以將f逐一遞增,或者逐一遞減,直到滿足n/f小于或者等于2m。
例如,第i個句塊中發(fā)聲的音節(jié)個數(shù)13大于第i個小節(jié)中midi音符個數(shù)5的兩倍,f預(yù)先設(shè)置為2,將第i個句塊平均劃分為2個句塊,每個句塊中發(fā)聲的音節(jié)個數(shù)為13/2,而13/2結(jié)果并不為整數(shù),需要對13/2結(jié)果進(jìn)行取整處理,其中一個句塊中發(fā)聲的音節(jié)個數(shù)為7,另一個句塊中發(fā)聲的音節(jié)個數(shù)為6。
例如,第i個句塊中發(fā)聲的音節(jié)個數(shù)24大于第i個小節(jié)中midi音符個數(shù)5的兩倍,f預(yù)先設(shè)置為2,將第i個句塊平均劃分為2個句塊,每個句塊中發(fā)聲的音節(jié)個數(shù)為24/2,而24/2并不小于或者等于10,將f加1,將第i個句塊平均劃分為3個句塊,24/3滿足小于或者等于10的條件,每個句塊中發(fā)聲的音節(jié)個數(shù)為8。
若n小于m,則對應(yīng)填充關(guān)系為,第i個句塊中n個發(fā)聲的音節(jié)一一對應(yīng)第i個小節(jié)中前n個midi音符,第i個句塊中從倒數(shù)第m-n個發(fā)聲的音節(jié)開始一一對應(yīng)在第i個小節(jié)剩余的m-n的音符。即在音符多于音節(jié)的情況下,在多余的音符中重復(fù)最后m-n個發(fā)聲的音節(jié)。
例如,第i個句塊為“直教人生死相許”,該句塊中發(fā)聲的音節(jié)個數(shù)n=7,第i個小節(jié)中midi音符個數(shù)m=9,在此用數(shù)字代表音符,那么9個音符分別是1,2,3,4,5,6,7,8,9。則第i個句塊中發(fā)聲的音節(jié)與第i個小節(jié)中midi音符對應(yīng)填充關(guān)系為:“直”對應(yīng)音符“1”,“教”對應(yīng)音符“2”,“人”對應(yīng)音符“3”,“生”對應(yīng)音符“4”,“死”對應(yīng)音符“5”,“相”對應(yīng)音符“6”,“許”對應(yīng)音符“7”,“相”對應(yīng)音符“8”,“許”對應(yīng)音符“9”。
又例如,第i個句塊為“我愛你”,該句塊中發(fā)聲的音節(jié)個數(shù)n=3,第i個小節(jié)中midi音符個數(shù)m=7,在此用數(shù)字代表音符,那么7個音符分別是1,2,3,4,5,6,7。則第i個句塊中發(fā)聲的音節(jié)與第i個小節(jié)中midi音符對應(yīng)填充關(guān)系為:“我”對應(yīng)音符“1”,“愛”對應(yīng)音符“2”,“你”對應(yīng)音符“3”,“我”對應(yīng)音符“4”,“愛”對應(yīng)音符“5”,“你”對應(yīng)音符“6”,“你”對應(yīng)音符“7”。
若n等于m,則對應(yīng)填充關(guān)系為,第i個句塊中第k個發(fā)聲的音節(jié)對應(yīng)第i個小節(jié)中第k個midi音符。
例如,第i個句塊為“直教人生死相許”,該句塊中發(fā)聲的音節(jié)個數(shù)n=7,第i個小節(jié)中midi音符個數(shù)m=7,在此用數(shù)字代表音符,那么7個音符分別是1,2,3,4,5,6,7。則第i個句塊中發(fā)聲的音節(jié)與第i個小節(jié)中midi音符對應(yīng)填充關(guān)系為:“直”對應(yīng)音符“1”,“教”對應(yīng)音符“2”,“人”對應(yīng)音符“3”,“生”對應(yīng)音符“4”,“死”對應(yīng)音符“5”,“相”對應(yīng)音符“6”,“許”對應(yīng)音符“7”。
若n大于m且小于或者等于2m,則對應(yīng)填充關(guān)系為,第i個句塊中倒數(shù)第2*(n-m)個發(fā)聲的音節(jié)之前,第i個句塊中發(fā)聲的音節(jié)一一對應(yīng)第i個小節(jié)中的音符,從第i個句塊中倒數(shù)第2*(n-m)個發(fā)聲的音節(jié)開始,第i個句塊中兩個連續(xù)的發(fā)聲的音節(jié)對應(yīng)一個midi音符。
例如,第i個句塊為“直教人生死相許”,該句塊中發(fā)聲的音節(jié)個數(shù)n=7,第i個小節(jié)中midi音符個數(shù)m=5,在此用數(shù)字代表音符,那么5個音符分別是1,2,3,4,5。則第i個句塊中發(fā)聲的音節(jié)與第i個小節(jié)中midi音符對應(yīng)填充關(guān)系為:“直”對應(yīng)音符“1”,“教”對應(yīng)音符“2”,“人”對應(yīng)音符“3”,“生死”對應(yīng)音符“4”,“相許”對應(yīng)音符“5”。
綜上,本申請實(shí)施例將語音文件中一個句塊對應(yīng)midi格式音頻文件中一個小節(jié),發(fā)聲的音節(jié)對應(yīng)midi音符的位置這樣做出來的音樂更具有連貫性。而且,在一個句塊中發(fā)聲的音節(jié)數(shù)量等于一個小節(jié)中midi音符的數(shù)量的情況下,把一個發(fā)聲的音節(jié)對應(yīng)一個midi音符,這樣使處理后的第二語音文件更契合背景音樂的節(jié)奏點(diǎn),整體效果更有節(jié)奏感。并且,在一個句塊中發(fā)聲的音節(jié)數(shù)量少于一個小節(jié)中midi音符數(shù)量時,設(shè)定了一定的重復(fù)規(guī)則,使做出來的效果更符合鬼畜的感覺。在一個句塊中發(fā)聲的音節(jié)數(shù)量多于一個小節(jié)中midi音符數(shù)量時,將多個發(fā)聲的音節(jié)對應(yīng)一個音符,使得語速更快,更符合鬼畜的感覺。
s105:根據(jù)所述對應(yīng)填充關(guān)系,將第一語音文件中發(fā)聲的音節(jié)的音長做拉伸或者壓縮處理,使得發(fā)聲的音節(jié)的音長與對應(yīng)填充的midi音符的音長相同,得到第二語音文件。
其中,因?yàn)榘l(fā)聲的音節(jié)的音長和midi音符的音長有可能是不一樣的,所以需要根據(jù)對應(yīng)填充的midi音符的音長,將發(fā)聲的音節(jié)的時長進(jìn)行拉伸或者壓縮處理,使得發(fā)聲的音節(jié)的音長與對應(yīng)填充的midi音符的音長相同,這樣處理后的第二語音文件更契合背景音樂的節(jié)奏點(diǎn),使得整體效果更有節(jié)奏感。
例如,“直”對應(yīng)音符“1”,“直”的音長為1秒,而“1”的音長為2秒,則將“直”的音長拉伸為2秒,使得“直”的音長和“1”的音長相同。
又例如,“人”對應(yīng)音符“3”,“人”的音長為2秒,而“3”的音長為1秒,則將“人”的音長壓縮為1秒,使得“人”的音長和“3”的音長相同。
s106:將第二語音文件中每p個句塊作為一個變聲單位進(jìn)行隨機(jī)變聲處理,其中p為正整數(shù)。
其中,在隨機(jī)變聲處理過程中,可以對每個變聲單位隨機(jī)添加多種不同的變聲效果,相鄰兩個變聲單位所添加的變聲效果可以相同,也可以不相同,并設(shè)置每個變聲效果出現(xiàn)的概率。例如,對某個變聲單位隨機(jī)添加小黃人、電視機(jī)喇叭、操場喇叭、原聲(即不做變聲處理)四種變聲效果,相應(yīng)地每個變聲效果出現(xiàn)的概率為2/9,2/9,2/9,1/3。
可見,本申請實(shí)施例設(shè)定了隨機(jī)的變聲效果,即使用戶提供同一語音文件,但是每次處理后的效果都是不同的,使最終效果具有多樣性和趣味性。并且,當(dāng)相鄰兩個變聲單位所添加的變聲效果不相同時,得到的鬼畜效果更好。
s107:根據(jù)所述對應(yīng)填充關(guān)系,將隨機(jī)變聲處理后的第二語音文件與預(yù)設(shè)的背景音樂進(jìn)行混音,得到鬼畜類歌曲。
綜上,本申請實(shí)施例將語音文件中一個句塊對應(yīng)midi格式音頻文件中一個小節(jié),這樣做出來的音樂更具有連貫性。并且,根據(jù)對應(yīng)midi音符的音長,將第一語音文件中相應(yīng)的發(fā)聲的音節(jié)做拉伸或者壓縮處理,使得發(fā)聲的音節(jié)的音長與對應(yīng)填充的midi音符的音長相同,這樣處理后得到的第二語音文件更契合背景音樂的節(jié)奏點(diǎn),使得整體效果更有節(jié)奏感。而且,將第二語音文件以p個句塊作為一個變聲單位進(jìn)行隨機(jī)變聲處理,使得變聲處理后的第二語音文件更具有鬼畜效果。并且,因?yàn)樽兟曁幚硎请S機(jī)的,所以即使用戶提供同一語音文件,每次處理后的效果是不同的,使最終效果具有多樣性和趣味性。
進(jìn)一步的,如果第一語音文件中存在多個短句,而一個短句中的漢字個數(shù)太少,例如一個短句中只有兩個漢字,那么將這樣一個短句對應(yīng)在一個小節(jié)中,則漢字重復(fù)的次數(shù)太多,最終得到的鬼畜類歌曲效果不好。為了達(dá)到更好的效果,可以將多個短句合并為一個長句,這樣做出來的鬼畜類歌曲效果更好。
為了減少第一語音文件中短句重復(fù)的次數(shù),本申請?zhí)峁┝巳鐖D2所示的又一個實(shí)施例,即在圖1所示的s102之后s104之前,還包括:
s1021:若一個句塊滿足預(yù)設(shè)的條件,將該句塊與前面相鄰的一個句或者與后面相鄰的一個句塊合并為一個句塊,合并后的句塊中的發(fā)聲的音節(jié)個數(shù)為合并前兩個句塊中發(fā)聲的音節(jié)的數(shù)量之和,若合并后的句塊滿足預(yù)設(shè)的條件,則將合并后的句塊與該合并后的句塊前面相鄰的一個句塊或者與后面相鄰的一個句塊合并為一個句塊,直到合并后的句塊不滿足預(yù)設(shè)的條件,其中,預(yù)設(shè)的條件為句塊中發(fā)聲的音節(jié)的個數(shù)n小于或者等于預(yù)設(shè)的數(shù)值。
需要說明的是,步驟s1021和步驟s103的執(zhí)行順序可以為:先執(zhí)行s1021,再執(zhí)行s103,還可以為:先執(zhí)行s103,再執(zhí)行s1021。
可選的,還可以將第一語音文件中的一些滿足預(yù)設(shè)條件的句塊與前面相鄰的一個句塊合并為一個句塊,而將第一語音文件中的另外一些滿足預(yù)設(shè)條件的句塊與后面相鄰的一個句塊合并為一個句塊。
其中,句塊的排列順序如前所述。
例如,預(yù)設(shè)的數(shù)值為4,第一語音文件為“兩只老虎兩只老虎跑得快跑得快”,第一個句塊和第二個句塊中的發(fā)聲的音節(jié)個數(shù)為4,第三個和第四個句塊中發(fā)聲的音節(jié)個數(shù)為3,將第三個句塊和第二個句塊合并為一個句塊,或者將第三個句塊和第四個句塊合并為一個句塊。這樣做的目的是將多個短句合并為一個長句,將合并后的一個長句對應(yīng)到一個小節(jié)中,漢字重復(fù)的次數(shù)就不會太多,最終得到的鬼畜類歌曲效果就比較好。
在將全部滿足預(yù)設(shè)條件的句塊均與前面相鄰的一個句塊進(jìn)行合并的情況下,若第一個句塊滿足預(yù)設(shè)的條件,將第一個句塊與后面相鄰的一個句塊合并為一個句塊。
在將全部滿足預(yù)設(shè)條件的句塊均與后面相鄰的一個句塊進(jìn)行合并的情況下,若最后一個句塊滿足預(yù)設(shè)的條件,將最后一個句塊與前面相鄰的一個句塊合并為一個句塊,或者,無論最后一個句塊是否滿足預(yù)設(shè)條件,均不與其它句塊合并。
圖3為本申請實(shí)施例公開的一種自動生成鬼畜類歌曲的裝置,包括:語音獲取模塊、對應(yīng)關(guān)系建立模塊、音長處理模塊、變聲處理模塊和混音模塊,
其中,語音獲取模塊,用于獲取第一語音文件。
對應(yīng)關(guān)系建立模塊,用于建立所述第一語音文件中發(fā)聲的音節(jié)與樂器數(shù)字接口midi格式音頻文件中midi音符的對應(yīng)填充關(guān)系,所述發(fā)聲的音節(jié)為漢字的讀音,所述midi格式音頻文件由預(yù)設(shè)的背景音樂生成,所述midi格式音頻文件包含midi音符和所述midi音符的音長。
音長處理模塊,用于根據(jù)所述對應(yīng)填充關(guān)系,將所述第一語音文件中發(fā)聲的音節(jié)的音長做拉伸或者壓縮處理,使得發(fā)聲的音節(jié)的音長與對應(yīng)填充的midi音符的音長相同,得到第二語音文件。
變聲處理模塊,用于將所述第二語音文件中每p個句塊作為一個變聲單位進(jìn)行隨機(jī)變聲處理,其中p為正整數(shù)。
混音模塊,用于根據(jù)所述對應(yīng)填充關(guān)系,將隨機(jī)變聲處理后的第二語音文件與所述預(yù)設(shè)的背景音樂進(jìn)行混音,得到鬼畜類歌曲。
可選的,還包括音節(jié)檢測模塊,讀取模塊,音符檢測模塊,句塊合并模塊。
上述模塊的功能的具體實(shí)現(xiàn)過程,以及附加功能,均可以參見上述方法實(shí)施例,這里不再贅述。