本申請(qǐng)涉及音頻信號(hào)處理技術(shù)領(lǐng)域,尤其涉及一種自動(dòng)作曲方法、裝置和終端設(shè)備。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)在音樂(lè)處理上的應(yīng)用,計(jì)算機(jī)音樂(lè)應(yīng)運(yùn)而生。計(jì)算機(jī)音樂(lè)作為新生代藝術(shù),已逐漸滲透到音樂(lè)的創(chuàng)作、樂(lè)器演奏、教育、娛樂(lè)等各個(gè)方面。采用人工智能技術(shù)進(jìn)行自動(dòng)作曲作為計(jì)算機(jī)音樂(lè)中較新的研究方向,近年來(lái)受到了相關(guān)領(lǐng)域研究人員的高度重視。
現(xiàn)有的基于人工智能技術(shù)的自動(dòng)作曲方法主要有以下兩種:基于啟發(fā)式搜索的自動(dòng)作曲和基于遺傳算法的自動(dòng)作曲。但是,現(xiàn)有的基于啟發(fā)式搜索的自動(dòng)作曲只適用于樂(lè)曲長(zhǎng)度短的情況,其搜索效率隨著樂(lè)曲長(zhǎng)度的增加成指數(shù)級(jí)下降,因而對(duì)于長(zhǎng)度較長(zhǎng)的樂(lè)曲該方法的可行性差;而基于遺傳算法的自動(dòng)作曲方法繼承了遺傳算法的一些典型缺點(diǎn),例如:對(duì)初始種群依賴大、遺傳算子難以精準(zhǔn)選定等。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的目的旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問(wèn)題之一。
為此,本申請(qǐng)的第一個(gè)目的在于提出一種自動(dòng)作曲方法。該方法通過(guò)構(gòu)建音樂(lè)頻帶特征結(jié)合模型和音樂(lè)預(yù)測(cè)模型,實(shí)現(xiàn)自動(dòng)作曲,是一種全新的自動(dòng)作曲方法,解決了現(xiàn)有技術(shù)所存在的效率低、可行性差、主觀影響大等問(wèn)題。
本申請(qǐng)的第二個(gè)目的在于提出一種自動(dòng)作曲裝置。
本申請(qǐng)的第三個(gè)目的在于提出一種終端設(shè)備。
本申請(qǐng)的第四個(gè)目的在于提出一種包含計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)介質(zhì)。
為了實(shí)現(xiàn)上述目的,本申請(qǐng)第一方面實(shí)施例的自動(dòng)作曲方法,包括:接收待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件,所述待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件包括所述待預(yù)測(cè)前段音樂(lè)的音頻數(shù)據(jù)或音樂(lè)描述信息;提取所述音樂(lè)文件對(duì)應(yīng)音樂(lè)的幀級(jí)音頻特征;根據(jù)所述幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)頻帶特征結(jié)合模型,獲得攜帶頻帶信息的幀級(jí)音頻特征;根據(jù)所述攜帶頻帶信息的幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)預(yù)測(cè)模型,獲得預(yù)測(cè)出的音樂(lè),以實(shí)現(xiàn)自動(dòng)作曲。
本申請(qǐng)實(shí)施例的自動(dòng)作曲方法中,接收待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件之后,提取上述音樂(lè)文件對(duì)應(yīng)音樂(lè)的幀級(jí)音頻特征,然后根據(jù)上述幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)頻帶特征結(jié)合模型,獲得攜帶頻帶信息的幀級(jí)音頻特征,最后根據(jù)上述攜帶頻帶信息的幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)預(yù)測(cè)模型,獲得預(yù)測(cè)出的音樂(lè),從而可以實(shí)現(xiàn)自動(dòng)作曲,進(jìn)而可以提高自動(dòng)作曲的效率和可行性,降低了主觀因素對(duì)自動(dòng)作曲的影響。
為了實(shí)現(xiàn)上述目的,本申請(qǐng)第二方面實(shí)施例的自動(dòng)作曲裝置,包括:接收模塊,用于接收待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件,所述待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件包括所述待預(yù)測(cè)前段音樂(lè)的音頻數(shù)據(jù)或音樂(lè)描述信息;提取模塊,用于提取所述接收模塊接收的音樂(lè)文件對(duì)應(yīng)音樂(lè)的幀級(jí)音頻特征;獲得模塊,用于根據(jù)所述幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)頻帶特征結(jié)合模型,獲得攜帶頻帶信息的幀級(jí)音頻特征;以及根據(jù)所述攜帶頻帶信息的幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)預(yù)測(cè)模型,獲得預(yù)測(cè)出的音樂(lè),以實(shí)現(xiàn)自動(dòng)作曲。
本申請(qǐng)實(shí)施例的自動(dòng)作曲裝置中,接收模塊接收待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件之后,提取模塊提取上述音樂(lè)文件對(duì)應(yīng)音樂(lè)的幀級(jí)音頻特征,然后獲得模塊根據(jù)上述幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)頻帶特征結(jié)合模型,獲得攜帶頻帶信息的幀級(jí)音頻特征,以及根據(jù)上述攜帶頻帶信息的幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)預(yù)測(cè)模型,獲得預(yù)測(cè)出的音樂(lè),從而可以實(shí)現(xiàn)自動(dòng)作曲,進(jìn)而可以提高自動(dòng)作曲的效率和可行性,降低了主觀因素對(duì)自動(dòng)作曲的影響。
為了實(shí)現(xiàn)上述目的,本申請(qǐng)第三方面實(shí)施例的終端設(shè)備,包括:一個(gè)或多個(gè)處理器;存儲(chǔ)裝置,用于存儲(chǔ)一個(gè)或多個(gè)程序;當(dāng)所述一個(gè)或多個(gè)程序被所述一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得所述一個(gè)或多個(gè)處理器實(shí)現(xiàn)如上所述的方法。
為了實(shí)現(xiàn)上述目的,本申請(qǐng)第四方面實(shí)施例提供一種包含計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令在由計(jì)算機(jī)處理器執(zhí)行時(shí)用于執(zhí)行如上所述的方法。
本申請(qǐng)附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過(guò)本申請(qǐng)的實(shí)踐了解到。
附圖說(shuō)明
本申請(qǐng)上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1為本申請(qǐng)自動(dòng)作曲方法一個(gè)實(shí)施例的流程圖;
圖2為本申請(qǐng)自動(dòng)作曲方法另一個(gè)實(shí)施例的流程圖;
圖3為本申請(qǐng)自動(dòng)作曲方法中拓?fù)浣Y(jié)構(gòu)一個(gè)實(shí)施例的示意圖;
圖4為本申請(qǐng)自動(dòng)作曲方法再一個(gè)實(shí)施例的流程圖;
圖5為本申請(qǐng)自動(dòng)作曲方法中能量值坐標(biāo)表示示意圖;
圖6為本申請(qǐng)自動(dòng)作曲方法再一個(gè)實(shí)施例的流程圖;
圖7為本申請(qǐng)自動(dòng)作曲方法再一個(gè)實(shí)施例的流程圖;
圖8為本申請(qǐng)自動(dòng)作曲方法中拓?fù)浣Y(jié)構(gòu)另一個(gè)實(shí)施例的示意圖;
圖9為本申請(qǐng)自動(dòng)作曲裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
圖10為本申請(qǐng)自動(dòng)作曲裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
圖11為本申請(qǐng)終端設(shè)備一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面詳細(xì)描述本申請(qǐng)的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,僅用于解釋本申請(qǐng),而不能理解為對(duì)本申請(qǐng)的限制。相反,本申請(qǐng)的實(shí)施例包括落入所附加權(quán)利要求書(shū)的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。
圖1為本申請(qǐng)自動(dòng)作曲方法一個(gè)實(shí)施例的流程圖,如圖1所示,上述自動(dòng)作曲方法可以包括:
步驟101,接收待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件,上述待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件包括上述待預(yù)測(cè)前段音樂(lè)的音頻數(shù)據(jù)或音樂(lè)描述信息。
其中,上述待預(yù)測(cè)前段音樂(lè)的音頻數(shù)據(jù)或音樂(lè)描述信息指的是給定一小段音樂(lè)的音頻數(shù)據(jù)或者音樂(lè)描述信息,然后就可以依據(jù)給定的一小段音樂(lè)的音頻數(shù)據(jù)或者音樂(lè)描述信息預(yù)測(cè)后面的音樂(lè)。
上述音樂(lè)描述信息一般可以轉(zhuǎn)換為音頻數(shù)據(jù),上述音樂(lè)描述信息可以為樂(lè)器數(shù)字接口(musicalinstrumentdigitalinterface;以下簡(jiǎn)稱:midi)文件等。
步驟102,提取上述音樂(lè)文件對(duì)應(yīng)音樂(lè)的幀級(jí)音頻特征。
步驟103,根據(jù)上述幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)頻帶特征結(jié)合模型,獲得攜帶頻帶信息的幀級(jí)音頻特征。
步驟104,根據(jù)上述攜帶頻帶信息的幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)預(yù)測(cè)模型,獲得預(yù)測(cè)出的音樂(lè),以實(shí)現(xiàn)自動(dòng)作曲。
上述自動(dòng)作曲方法中,接收待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件之后,提取上述音樂(lè)文件對(duì)應(yīng)音樂(lè)的幀級(jí)音頻特征,然后根據(jù)上述幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)頻帶特征結(jié)合模型,獲得攜帶頻帶信息的幀級(jí)音頻特征,最后根據(jù)上述攜帶頻帶信息的幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)預(yù)測(cè)模型,獲得預(yù)測(cè)出的音樂(lè),從而可以實(shí)現(xiàn)自動(dòng)作曲,進(jìn)而可以提高自動(dòng)作曲的效率和可行性,降低了主觀因素對(duì)自動(dòng)作曲的影響。
圖2為本申請(qǐng)自動(dòng)作曲方法另一個(gè)實(shí)施例的流程圖,如圖2所示,步驟103之前,還可以包括:
步驟201,收集音樂(lè)文件,并將上述音樂(lè)文件轉(zhuǎn)換為相同格式的音頻文件。
具體地,可通過(guò)爬取互聯(lián)網(wǎng)大量音樂(lè)文件,得到大量訓(xùn)練數(shù)據(jù),上述音樂(lè)文件可以是音頻數(shù)據(jù),也可以是音樂(lè)描述信息,例如:midi文件等。然后可以將上述音樂(lè)文件轉(zhuǎn)換為相同格式的音頻文件,上述音頻文件的格式只需滿足可以進(jìn)行快速傅里葉變換(fastfouriertransformation;以下簡(jiǎn)稱:fft)即可,例如:“.pcm”或“.wav”等,本實(shí)施例對(duì)上述音頻文件的格式不作限定,本實(shí)施例以“.pcm”格式為例進(jìn)行說(shuō)明。需要說(shuō)明的是:如果上述音樂(lè)文件為音樂(lè)描述信息,如midi文件,則需要先將midi文件轉(zhuǎn)換為音頻文件,再轉(zhuǎn)換為“.pcm”格式的音頻文件。
步驟202,提取上述音頻文件的幀級(jí)音頻特征。
步驟203,確定音樂(lè)頻帶特征結(jié)合模型的拓?fù)浣Y(jié)構(gòu)。
具體地,拓?fù)浣Y(jié)構(gòu)為一個(gè)對(duì)沖的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),本實(shí)施例以對(duì)沖循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrentneuralnetworks;以下簡(jiǎn)稱:rnn)為例,其拓?fù)浣Y(jié)構(gòu)包括兩個(gè)獨(dú)立的rnn和一個(gè)連接單元,如圖3所示,圖3為本申請(qǐng)自動(dòng)作曲方法中拓?fù)浣Y(jié)構(gòu)一個(gè)實(shí)施例的示意圖。兩個(gè)獨(dú)立的rnn,分別取名為lf_rnn和hf_rnn,分別用于低頻段多頻率特征結(jié)合和高頻段多頻率特征結(jié)合。
lf_rnn的輸入為某幀tm時(shí),從低頻開(kāi)始的能量值e(tm,fi),i=1,2,…,k,k=1,2,…,n/2(n為fft點(diǎn)數(shù)),以及上一頻點(diǎn)lf_rnn的輸出li-1;lf_rnn的輸出為li表示考慮了低頻信息后的第tm幀第i頻點(diǎn)的能量值。
同理,hf_rnn的輸入為某幀tm時(shí),從高頻開(kāi)始的能量值e(tm,fj),j=n/2,n/2-1,…,k,其中k=1,2,…,n/2(n為fft點(diǎn)數(shù)),以及上一頻點(diǎn)hf_rnn的輸出hj+1;hf_rnn的輸出為hi表示考慮了高頻信息后的第tm幀第j頻點(diǎn)的能量值。
接連單元即為圖3中的concatenate,當(dāng)i=j(luò)=k時(shí)將二者連接成n(tm,fk),得到考慮了其他頻點(diǎn)信息的第tm幀第k頻點(diǎn)的能量值。
步驟204,根據(jù)確定的拓?fù)浣Y(jié)構(gòu)和上述幀級(jí)音頻特征,訓(xùn)練上述音樂(lè)頻帶特征結(jié)合模型。
具體地,在訓(xùn)練音樂(lè)頻帶特征結(jié)合模型時(shí),所采用的訓(xùn)練算法可以為神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練算法,如反向傳播(backpropagation;以下簡(jiǎn)稱:bp)算法,本實(shí)施例對(duì)采用的訓(xùn)練算法不作限定。
圖4為本申請(qǐng)自動(dòng)作曲方法再一個(gè)實(shí)施例的流程圖,如圖4所示,本申請(qǐng)圖2所示實(shí)施例中,步驟202可以包括:
步驟401,將上述音頻文件按幀進(jìn)行固定點(diǎn)數(shù)的快速傅里葉變換。
具體地,可以將“.pcm”格式的音頻文件按幀進(jìn)行固定點(diǎn)數(shù)的fft。
步驟402,根據(jù)快速傅里葉變換的結(jié)果計(jì)算上述音頻文件的每幀在每個(gè)頻率點(diǎn)的能量值。
圖5為本申請(qǐng)自動(dòng)作曲方法中能量值坐標(biāo)表示示意圖,圖5給出了各幀在各個(gè)頻點(diǎn)的能量值坐標(biāo)表示的示意圖,其中,橫軸t表示時(shí)序幀,縱軸f表示頻率點(diǎn),坐標(biāo)e(t,f)表示能量值,m表示總幀數(shù),n表示fft點(diǎn)數(shù)。
步驟403,根據(jù)上述能量值確定每幀的音符歸屬。
具體地,在每個(gè)頻率點(diǎn),確定上述音頻文件的第一幀和第二幀屬于第一個(gè)音符;然后判斷第一差值的絕對(duì)值是否小于第二差值,其中,上述第一差值為上述音頻文件的第三幀的能量值與上述音頻文件的第一幀到第二幀能量值的平均值之差,上述第二差值為上述音頻文件的第一幀到第二幀能量值的最大值與最小值之差;如果是,則確定上述音頻文件的第三幀屬于第一個(gè)音符,再依次向后判斷第四幀直至最后一幀的音符歸屬。
如果上述第一差值的絕對(duì)值大于或等于第二差值,則將上述音頻文件的第三幀作為第二個(gè)音符的開(kāi)始,并確定上述音頻文件的第四幀屬于第二個(gè)音符;從上述音頻文件的第五幀開(kāi)始判斷第三差值的絕對(duì)值是否小于第四差值,上述第三差值為上述音頻文件的第五幀的能量值與上述音頻文件的第三幀到第四幀能量值的平均值之差,上述第四差值為上述音頻文件的第三幀到第四幀能量值的最大值與最小值之差;按照與判斷第三幀的音符歸屬相同的方式確定第五幀的音符歸屬,以此類推,直至將上述音頻文件的最后一幀的音符歸屬確定完畢。
也就是說(shuō),確定每幀的音符歸屬可以為:對(duì)每個(gè)頻率點(diǎn)進(jìn)行如下處理:將t1和t2幀認(rèn)為屬于第一個(gè)音符,從第t3幀開(kāi)始判斷歸屬——如果滿足e(t3,f1)-emean(t1,t2)|<(emax(t1,t2)-emin(t1,t2)),那么第t3幀屬于第一個(gè)音符,再依次向后判斷每幀的歸屬,其中,emean(t1,t2)、emax(t1,t2)和emin(t1,t2)分別表示第t1到t2幀能量值的平均值、最大值和最小值;否則將第t3幀作為第二個(gè)音符的開(kāi)始,并確定第t4幀屬于第二個(gè)音符,從第t5幀開(kāi)始判斷,仍是通過(guò)公式|e(t5,f1)-emean(t3,t4)|<(emax(t3,t4)-emin(t3,t4))確定第t5幀的音符歸屬,直至所有幀的音符歸屬確定完畢。
步驟404,計(jì)算每個(gè)音符的能量值,根據(jù)每個(gè)音符的能量值獲取幀級(jí)音頻特征。
圖6為本申請(qǐng)自動(dòng)作曲方法再一個(gè)實(shí)施例的流程圖,如圖6所示,本申請(qǐng)圖4所示實(shí)施例中,步驟404可以包括:
步驟601,計(jì)算每個(gè)音符所含所有幀的能量均值,作為每個(gè)音符的能量值。
步驟602,將每個(gè)音符所包括的每幀的能量值歸一化為所屬音符的能量值。
步驟603,濾除能量值小于預(yù)定閾值的音符,以獲得幀級(jí)音頻特征。
其中,上述預(yù)定閾值可以在具體實(shí)現(xiàn)時(shí)根據(jù)系統(tǒng)性能和/或?qū)崿F(xiàn)需求等自行設(shè)定,本實(shí)施例對(duì)上述預(yù)定閾值的大小不作限定。
本實(shí)施例中,定義一個(gè)音符的能量為該音符所含所有幀的能量均值,這樣就可以計(jì)算每個(gè)音符所含所有幀的能量均值,作為每個(gè)音符的能量值e(i),再將每個(gè)音符所包括的每幀能量值歸一化為所屬音符的能量值。進(jìn)一步地,還可在計(jì)算出每個(gè)音符的能量值后,根據(jù)音符能量均值emean濾除過(guò)小的能量值,這些能量值較小的音符可能是噪音。也就是說(shuō),對(duì)于每個(gè)e(i),如果e(i)<αemean,則可以將該音符的能量值設(shè)為0,其中,αemean即為上述預(yù)定閾值,α值可根據(jù)實(shí)際應(yīng)用情況確定,本實(shí)施例對(duì)此不作限定。
需要說(shuō)明的是,本申請(qǐng)圖2所示實(shí)施例中,步驟201~步驟204可以與步驟101~步驟102先后執(zhí)行,也可以與步驟101~步驟102并行執(zhí)行,本申請(qǐng)實(shí)施例對(duì)此不作限定。
圖7為本申請(qǐng)自動(dòng)作曲方法再一個(gè)實(shí)施例的流程圖,如圖7所示,本申請(qǐng)圖1所示實(shí)施例中,步驟104之前,還可以包括:
步驟701,確定音樂(lè)預(yù)測(cè)模型的拓?fù)浣Y(jié)構(gòu)。
本實(shí)施例中,上述音樂(lè)預(yù)測(cè)模型采用rnn模型,如圖8所示,圖8為本申請(qǐng)自動(dòng)作曲方法中拓?fù)浣Y(jié)構(gòu)另一個(gè)實(shí)施例的示意圖,圖8所示的rnn模型的輸入為音樂(lè)頻帶特征結(jié)合模型的輸出n(tm,fk),以及上一幀模型的輸出hm,輸出為下一幀的能量值n(tm+1,fk)。
步驟702,根據(jù)上述音樂(lè)頻帶特征結(jié)合模型的輸出,以及確定的拓?fù)浣Y(jié)構(gòu),訓(xùn)練上述音樂(lè)預(yù)測(cè)模型。
需要說(shuō)明的是,步驟701和步驟702可以與步驟101~步驟103先后執(zhí)行,也可以與步驟101~步驟103并行執(zhí)行,本實(shí)施例對(duì)此不作限定。
上述自動(dòng)作曲方法可以實(shí)現(xiàn)自動(dòng)作曲,進(jìn)而可以提高自動(dòng)作曲的效率和可行性,降低了主觀因素對(duì)自動(dòng)作曲的影響,是一種全新的自動(dòng)作曲方法,解決了現(xiàn)有技術(shù)所存在的效率低、可行性差和主觀影響大等問(wèn)題。
圖9為本申請(qǐng)自動(dòng)作曲裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,本實(shí)施例中的自動(dòng)作曲裝置可以作為終端設(shè)備,或者終端設(shè)備的一部分,實(shí)現(xiàn)本申請(qǐng)?zhí)峁┑淖詣?dòng)作曲方法。其中,上述終端設(shè)備可以為客戶端設(shè)備,也可以為服務(wù)端設(shè)備,本申請(qǐng)對(duì)上述終端設(shè)備的形態(tài)不作限定。
如圖9所示,上述自動(dòng)作曲裝置可以包括:接收模塊91、提取模塊92和獲得模塊93;
其中,接收模塊91,用于接收待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件,上述待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件包括上述待預(yù)測(cè)前段音樂(lè)的音頻數(shù)據(jù)或音樂(lè)描述信息;其中,上述待預(yù)測(cè)前段音樂(lè)的音頻數(shù)據(jù)或音樂(lè)描述信息指的是給定一小段音樂(lè)的音頻數(shù)據(jù)或者音樂(lè)描述信息,然后就可以依據(jù)給定的一小段音樂(lè)的音頻數(shù)據(jù)或者音樂(lè)描述信息預(yù)測(cè)后面的音樂(lè)。上述音樂(lè)描述信息一般可以轉(zhuǎn)換為音頻數(shù)據(jù),上述音樂(lè)描述信息可以為midi文件等。
提取模塊92,用于提取接收模塊91接收的音樂(lè)文件對(duì)應(yīng)音樂(lè)的幀級(jí)音頻特征;
獲得模塊93,用于根據(jù)上述幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)頻帶特征結(jié)合模型,獲得攜帶頻帶信息的幀級(jí)音頻特征;以及根據(jù)上述攜帶頻帶信息的幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)預(yù)測(cè)模型,獲得預(yù)測(cè)出的音樂(lè),以實(shí)現(xiàn)自動(dòng)作曲。
上述自動(dòng)作曲裝置中,接收模塊91接收待預(yù)測(cè)前段音樂(lè)的音樂(lè)文件之后,提取模塊92提取上述音樂(lè)文件對(duì)應(yīng)音樂(lè)的幀級(jí)音頻特征,然后獲得模塊93根據(jù)上述幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)頻帶特征結(jié)合模型,獲得攜帶頻帶信息的幀級(jí)音頻特征,以及根據(jù)上述攜帶頻帶信息的幀級(jí)音頻特征和預(yù)先構(gòu)建的音樂(lè)預(yù)測(cè)模型,獲得預(yù)測(cè)出的音樂(lè),從而可以實(shí)現(xiàn)自動(dòng)作曲,進(jìn)而可以提高自動(dòng)作曲的效率和可行性,降低了主觀因素對(duì)自動(dòng)作曲的影響。
圖10為本申請(qǐng)自動(dòng)作曲裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,與圖9所示的自動(dòng)作曲裝置相比,不同之處在于,圖10所示的自動(dòng)作曲裝置還可以包括:收集模塊94、轉(zhuǎn)換模塊95、確定模塊96和訓(xùn)練模塊97;
收集模塊94,用于在獲得模塊93獲得攜帶頻帶信息的幀級(jí)音頻特征之前,收集音樂(lè)文件;
轉(zhuǎn)換模塊95,用于將收集模塊94收集的音樂(lè)文件轉(zhuǎn)換為相同格式的音頻文件;
具體地,收集模塊94可通過(guò)爬取互聯(lián)網(wǎng)大量音樂(lè)文件,得到大量訓(xùn)練數(shù)據(jù),上述音樂(lè)文件可以是音頻數(shù)據(jù),也可以是音樂(lè)描述信息,例如:midi文件等。然后轉(zhuǎn)換模塊95可以將上述音樂(lè)文件轉(zhuǎn)換為相同格式的音頻文件,上述音頻文件的格式只需滿足可以進(jìn)行fft即可,例如:“.pcm”或“.wav”等,本實(shí)施例對(duì)上述音頻文件的格式不作限定,本實(shí)施例以“.pcm”格式為例進(jìn)行說(shuō)明。需要說(shuō)明的是:如果上述音樂(lè)文件為音樂(lè)描述信息,如midi文件,則需要先將midi文件轉(zhuǎn)換為音頻文件,再轉(zhuǎn)換為“.pcm”格式的音頻文件。
提取模塊92,還用于提取轉(zhuǎn)換模塊95轉(zhuǎn)換的音頻文件的幀級(jí)音頻特征。
確定模塊96,用于確定音樂(lè)頻帶特征結(jié)合模型的拓?fù)浣Y(jié)構(gòu);具體地,確定模塊96確定的拓?fù)浣Y(jié)構(gòu)為一個(gè)對(duì)沖的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),本實(shí)施例以對(duì)沖rnn為例,其拓?fù)浣Y(jié)構(gòu)包括兩個(gè)獨(dú)立的rnn和一個(gè)連接單元,如圖3所示,兩個(gè)獨(dú)立的rnn,分別取名為lf_rnn和hf_rnn,分別用于低頻段多頻率特征結(jié)合和高頻段多頻率特征結(jié)合。
lf_rnn的輸入為某幀tm時(shí),從低頻開(kāi)始的能量值e(tm,fi),i=1,2,…,k,k=1,2,…,n/2(n為fft點(diǎn)數(shù)),以及上一頻點(diǎn)lf_rnn的輸出li-1;lf_rnn的輸出為li表示考慮了低頻信息后的第tm幀第i頻點(diǎn)的能量值。
同理,hf_rnn的輸入為某幀tm時(shí),從高頻開(kāi)始的能量值e(tm,fj),j=n/2,n/2-1,…,k,其中k=1,2,…,n/2(n為fft點(diǎn)數(shù)),以及上一頻點(diǎn)hf_rnn的輸出hj+1;hf_rnn的輸出為hi表示考慮了高頻信息后的第tm幀第j頻點(diǎn)的能量值。
接連單元即為圖3中的concatenate,當(dāng)i=j(luò)=k時(shí)將二者連接成n(tm,fk),得到考慮了其他頻點(diǎn)信息的第tm幀第k頻點(diǎn)的能量值。
訓(xùn)練模塊97,用于根據(jù)確定模塊96確定的拓?fù)浣Y(jié)構(gòu)和提取模塊92提取的幀級(jí)音頻特征,訓(xùn)練上述音樂(lè)頻帶特征結(jié)合模型。具體地,訓(xùn)練模塊97在訓(xùn)練音樂(lè)頻帶特征結(jié)合模型時(shí),所采用的訓(xùn)練算法可以為神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練算法,如bp算法,本實(shí)施例對(duì)采用的訓(xùn)練算法不作限定。
本實(shí)施例中,提取模塊92可以包括:變換子模塊921、計(jì)算子模塊922、確定子模塊923和獲取子模塊924;
其中,變換子模塊921,用于將上述音頻文件按幀進(jìn)行固定點(diǎn)數(shù)的快速傅里葉變換;具體地,變換子模塊921可以將“.pcm”格式的音頻文件按幀進(jìn)行固定點(diǎn)數(shù)的fft。
計(jì)算子模塊922,用于根據(jù)變換子模塊921快速傅里葉變換的結(jié)果計(jì)算上述音頻文件的每幀在每個(gè)頻率點(diǎn)的能量值;圖5給出了各幀在各個(gè)頻點(diǎn)的能量值坐標(biāo)表示的示意圖,其中,橫軸t表示時(shí)序幀,縱軸f表示頻率點(diǎn),坐標(biāo)e(t,f)表示能量值,m表示總幀數(shù),n表示fft點(diǎn)數(shù)。
確定子模塊923,用于根據(jù)計(jì)算子模塊922計(jì)算的能量值確定每幀的音符歸屬。
計(jì)算子模塊922,還用于計(jì)算每個(gè)音符的能量值;
獲取子模塊924,用于根據(jù)計(jì)算子模塊922計(jì)算的每個(gè)音符的能量值獲取幀級(jí)音頻特征。
其中,計(jì)算子模塊922,具體用于計(jì)算每個(gè)音符所含所有幀的能量均值,作為每個(gè)音符的能量值;以及將每個(gè)音符所包括的每幀的能量值歸一化為所屬音符的能量值;
獲取子模塊924,具體用于濾除能量值小于預(yù)定閾值的音符,以獲得幀級(jí)音頻特征。其中,上述預(yù)定閾值可以在具體實(shí)現(xiàn)時(shí)根據(jù)系統(tǒng)性能和/或?qū)崿F(xiàn)需求等自行設(shè)定,本實(shí)施例對(duì)上述預(yù)定閾值的大小不作限定。
本實(shí)施例中,定義一個(gè)音符的能量為該音符所含所有幀的能量均值,這樣就可以計(jì)算每個(gè)音符所含所有幀的能量均值,作為每個(gè)音符的能量值e(i),再將每個(gè)音符所包括的每幀能量值歸一化為所屬音符的能量值。進(jìn)一步地,還可在計(jì)算出每個(gè)音符的能量值后,根據(jù)音符能量均值emean濾除過(guò)小的能量值,這些能量值較小的音符可能是噪音。也就是說(shuō),對(duì)于每個(gè)e(i),如果e(i)<αemean,則可以將該音符的能量值設(shè)為0,其中,αemean即為上述預(yù)定閾值,α值可根據(jù)實(shí)際應(yīng)用情況確定,本實(shí)施例對(duì)此不作限定。
本實(shí)施例中,確定子模塊923可以包括:音符確定單元9231和判斷單元9232;
音符確定單元9231,用于在每個(gè)頻率點(diǎn),確定上述音頻文件的第一幀和第二幀屬于第一個(gè)音符;
判斷單元9232,用于判斷第一差值的絕對(duì)值是否小于第二差值;上述第一差值為上述音頻文件的第三幀的能量值與上述音頻文件的第一幀到第二幀能量值的平均值之差,第二差值為上述音頻文件的第一幀到第二幀能量值的最大值與最小值之差;
音符確定單元9231,還用于當(dāng)?shù)谝徊钪档慕^對(duì)值小于第二差值時(shí),確定上述音頻文件的第三幀屬于第一個(gè)音符,再依次向后判斷第四幀直至最后一幀的音符歸屬。
音符確定單元9231,還用于當(dāng)?shù)谝徊钪档慕^對(duì)值大于或等于第二差值時(shí),將上述音頻文件的第三幀作為第二個(gè)音符的開(kāi)始,并確定上述音頻文件的第四幀屬于第二個(gè)音符;
判斷單元9232,還用于從上述音頻文件的第五幀開(kāi)始判斷第三差值的絕對(duì)值是否小于第四差值,上述第三差值為上述音頻文件的第五幀的能量值與上述音頻文件的第三幀到第四幀能量值的平均值之差,上述第四差值為上述音頻文件的第三幀到第四幀能量值的最大值與最小值之差;按照與判斷第三幀的音符歸屬相同的方式確定第五幀的音符歸屬,以此類推,直至將上述音頻文件的最后一幀的音符歸屬確定完畢。
也就是說(shuō),確定子模塊923確定每幀的音符歸屬可以為:對(duì)每個(gè)頻率點(diǎn)進(jìn)行如下處理:音符確定單元9231將t1和t2幀認(rèn)為屬于第一個(gè)音符,判斷單元9232從第t3幀開(kāi)始判斷歸屬——如果滿足|e(t3,f1)-emean(t1,t2)|<(emax(t1,t2)-emin(t1,t2)),那么第t3幀屬于第一個(gè)音符,再依次向后判斷每幀的歸屬,其中,emean(t1,t2)、emax(t1,t2)和emin(t1,t2)分別表示第t1到t2幀能量值的平均值、最大值和最小值;否則將第t3幀作為第二個(gè)音符的開(kāi)始,并確定第t4幀屬于第二個(gè)音符,從第t5幀開(kāi)始判斷,仍是通過(guò)公式|e(t5,f1)-emean(t3,t4)|<(emax(t3,t4)-emin(t3,t4))確定第t5幀的音符歸屬,直至所有幀的音符歸屬確定完畢。
進(jìn)一步地,上述自動(dòng)作曲裝置還可以包括:確定模塊96和訓(xùn)練模塊97;
確定模塊96,用于在獲得模塊93獲得預(yù)測(cè)出的音樂(lè)之前,確定音樂(lè)預(yù)測(cè)模型的拓?fù)浣Y(jié)構(gòu);本實(shí)施例中,確定模塊96確定的音樂(lè)預(yù)測(cè)模型的拓?fù)浣Y(jié)構(gòu)為rnn模型,如圖8所示,rnn模型的輸入為音樂(lè)頻帶特征結(jié)合模型的輸出n(tm,fk),以及上一幀模型的輸出hm,輸出為下一幀的能量值n(tm+1,fk)。
訓(xùn)練模塊97,用于根據(jù)上述音樂(lè)頻帶特征結(jié)合模型的輸出,以及確定模塊96確定的拓?fù)浣Y(jié)構(gòu),訓(xùn)練上述音樂(lè)預(yù)測(cè)模型。
上述自動(dòng)作曲裝置可以實(shí)現(xiàn)自動(dòng)作曲,進(jìn)而可以提高自動(dòng)作曲的效率和可行性,降低了主觀因素對(duì)自動(dòng)作曲的影響,是一種全新的自動(dòng)作曲方法,解決了現(xiàn)有技術(shù)所存在的效率低、可行性差和主觀影響大等問(wèn)題。
圖11為本申請(qǐng)終端設(shè)備一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,本申請(qǐng)中的終端設(shè)備可以實(shí)現(xiàn)本申請(qǐng)?zhí)峁┑淖詣?dòng)作曲方法,上述終端設(shè)備可以為客戶端設(shè)備,也可以為服務(wù)端設(shè)備,本申請(qǐng)對(duì)上述終端設(shè)備的形態(tài)不作限定。上述終端設(shè)備可以包括:一個(gè)或多個(gè)處理器;存儲(chǔ)裝置,用于存儲(chǔ)一個(gè)或多個(gè)程序;當(dāng)上述一個(gè)或多個(gè)程序被上述一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得上述一個(gè)或多個(gè)處理器實(shí)現(xiàn)本申請(qǐng)?zhí)峁┑淖詣?dòng)作曲方法。
圖11示出了適于用來(lái)實(shí)現(xiàn)本申請(qǐng)實(shí)施方式的示例性終端設(shè)備12的框圖。圖11顯示的終端設(shè)備12僅僅是一個(gè)示例,不應(yīng)對(duì)本申請(qǐng)實(shí)施例的功能和使用范圍帶來(lái)任何限制。
如圖11所示,終端設(shè)備12以通用計(jì)算設(shè)備的形式表現(xiàn)。終端設(shè)備12的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元16,系統(tǒng)存儲(chǔ)器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器28和處理單元16)的總線18。
總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來(lái)說(shuō),這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(industrystandardarchitecture;以下簡(jiǎn)稱:isa)總線,微通道體系結(jié)構(gòu)(microchannelarchitecture;以下簡(jiǎn)稱:mac)總線,增強(qiáng)型isa總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(videoelectronicsstandardsassociation;以下簡(jiǎn)稱:vesa)局域總線以及外圍組件互連(peripheralcomponentinterconnection;以下簡(jiǎn)稱:pci)總線。
終端設(shè)備12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被終端設(shè)備12訪問(wèn)的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng)的和不可移動(dòng)的介質(zhì)。
系統(tǒng)存儲(chǔ)器28可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)器(randomaccessmemory;以下簡(jiǎn)稱:ram)30和/或高速緩存存儲(chǔ)器32。終端設(shè)備12可以進(jìn)一步包括其它可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為舉例,存儲(chǔ)系統(tǒng)34可以用于讀寫不可移動(dòng)的、非易失性磁介質(zhì)(圖11未顯示,通常稱為“硬盤驅(qū)動(dòng)器”)。盡管圖11中未示出,可以提供用于對(duì)可移動(dòng)非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動(dòng)器,以及對(duì)可移動(dòng)非易失性光盤(例如:光盤只讀存儲(chǔ)器(compactdiscreadonlymemory;以下簡(jiǎn)稱:cd-rom)、數(shù)字多功能只讀光盤(digitalvideodiscreadonlymemory;以下簡(jiǎn)稱:dvd-rom)或者其它光介質(zhì))讀寫的光盤驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過(guò)一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。存儲(chǔ)器28可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置以執(zhí)行本申請(qǐng)各實(shí)施例的功能。
具有一組(至少一個(gè))程序模塊42的程序/實(shí)用工具40,可以存儲(chǔ)在例如存儲(chǔ)器28中,這樣的程序模塊42包括——但不限于——操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本申請(qǐng)所描述的實(shí)施例中的自動(dòng)作曲方法。
終端設(shè)備12也可以與一個(gè)或多個(gè)外部設(shè)備14(例如鍵盤、指向設(shè)備、顯示器24等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該終端設(shè)備12交互的設(shè)備通信,和/或與使得該終端設(shè)備12能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過(guò)輸入/輸出(i/o)接口22進(jìn)行。并且,終端設(shè)備12還可以通過(guò)網(wǎng)絡(luò)適配器20與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(localareanetwork;以下簡(jiǎn)稱:lan),廣域網(wǎng)(wideareanetwork;以下簡(jiǎn)稱:wan)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖11所示,網(wǎng)絡(luò)適配器20通過(guò)總線18與終端設(shè)備12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖11中未示出,可以結(jié)合終端設(shè)備12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、raid系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
處理單元16通過(guò)運(yùn)行存儲(chǔ)在系統(tǒng)存儲(chǔ)器28中的程序,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,例如實(shí)現(xiàn)本申請(qǐng)?zhí)峁┑淖詣?dòng)作曲方法。
需要說(shuō)明的是,在本申請(qǐng)的描述中,術(shù)語(yǔ)“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性。此外,在本申請(qǐng)的描述中,除非另有說(shuō)明,“多個(gè)”的含義是兩個(gè)或兩個(gè)以上。
流程圖中或在此以其他方式描述的任何過(guò)程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過(guò)程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本申請(qǐng)的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來(lái)執(zhí)行功能,這應(yīng)被本申請(qǐng)的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
應(yīng)當(dāng)理解,本申請(qǐng)的各部分可以用硬件、軟件、固件或它們的組合來(lái)實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來(lái)實(shí)現(xiàn)。例如,如果用硬件來(lái)實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來(lái)實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(programmablegatearray;以下簡(jiǎn)稱:pga),現(xiàn)場(chǎng)可編程門陣列(fieldprogrammablegatearray;以下簡(jiǎn)稱:fpga)等。
本申請(qǐng)還提供一種包含計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)介質(zhì),上述計(jì)算機(jī)可執(zhí)行指令在由計(jì)算機(jī)處理器執(zhí)行時(shí)用于執(zhí)行本申請(qǐng)?zhí)峁┑淖詣?dòng)作曲方法。
上述包含計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)介質(zhì)可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(readonlymemory;以下簡(jiǎn)稱:rom)、可擦式可編程只讀存儲(chǔ)器(erasableprogrammablereadonlymemory;以下簡(jiǎn)稱:eprom)或閃存、光纖、便攜式緊湊磁盤只讀存儲(chǔ)器(cd-rom)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括——但不限于——電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括——但不限于——無(wú)線、電線、光纜、rf等等,或者上述的任意合適的組合。
可以以一種或多種程序設(shè)計(jì)語(yǔ)言或其組合來(lái)編寫用于執(zhí)行本申請(qǐng)操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言—諸如java、smalltalk、c++,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言—諸如“c”語(yǔ)言或類似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類的網(wǎng)絡(luò)——包括局域網(wǎng)(localareanetwork;以下簡(jiǎn)稱:lan)或廣域網(wǎng)(wideareanetwork;以下簡(jiǎn)稱:wan)連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。
本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
此外,本申請(qǐng)各個(gè)實(shí)施例中的各功能模塊可以集成在一個(gè)處理模塊中,也可以是各個(gè)模塊單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上模塊集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。
上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
在本說(shuō)明書(shū)的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本申請(qǐng)的至少一個(gè)實(shí)施例或示例中。在本說(shuō)明書(shū)中,對(duì)上述術(shù)語(yǔ)的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
盡管上面已經(jīng)示出和描述了本申請(qǐng)的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本申請(qǐng)的限制,本領(lǐng)域的普通技術(shù)人員在本申請(qǐng)的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。