專利名稱::一種音頻文件生成方法、裝置及數(shù)碼播放器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于信息
技術(shù)領(lǐng)域:
,尤其涉及一種音頻文件的生成方法、裝置及帶有影音伴唱功能的數(shù)碼播;故器。技術(shù)背景目前,影音伴唱(卡拉OK)已成為用戶娛樂休閑的重要活動(dòng)之一,出現(xiàn)了各種影音伴唱機(jī)以及帶影音伴唱功能的家用電器。影音伴唱電聲技術(shù)及產(chǎn)品都已經(jīng)比較成熟,但是大多為滿足家庭或娛樂場(chǎng)所固定使用而設(shè)計(jì)的,體積比較龐大,而且價(jià)格相對(duì)較貴,因此出現(xiàn)了能夠?qū)崿F(xiàn)影音伴唱功能的數(shù)碼播放器,其體積小巧,便于攜帶?,F(xiàn)有技術(shù)通過將原唱音頻數(shù)據(jù)中的聲音數(shù)據(jù)消除,將消除了聲音數(shù)據(jù)的音頻數(shù)據(jù)與用戶輸入的聲音數(shù)據(jù)進(jìn)行混疊,實(shí)現(xiàn)數(shù)碼播放器的影音伴唱功能。采用這種方式實(shí)現(xiàn)影音伴唱時(shí),由于消除原唱音頻數(shù)據(jù)中的聲音數(shù)據(jù)時(shí),受技術(shù)所限,無法將聲音數(shù)據(jù)徹底消除,從而影響伴唱效果?,F(xiàn)有技術(shù)還通過將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)分別作為不同的聲道,即下載可分離的音頻數(shù)據(jù)源,需要進(jìn)行影音伴唱時(shí),屏蔽原唱音頻數(shù)據(jù)播放聲道,即可實(shí)現(xiàn)影音伴唱效果。其不足之處在于,只能輸出單聲道,播放具有立體聲的原唱音頻數(shù)據(jù)時(shí),效果較差。
發(fā)明內(nèi)容本發(fā)明實(shí)施例的目的在于提供一種在數(shù)碼播放器上實(shí)現(xiàn)影音伴唱的方法,旨在解決現(xiàn)有技術(shù)在實(shí)現(xiàn)數(shù)碼播放器的影音伴唱時(shí),通過將原唱音頻數(shù)據(jù)中的聲音消除或者屏蔽時(shí),聲音消除或者屏蔽的效果較差,而造成的數(shù)碼播^:器的影音伴唱效果較差的問題。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種音頻文件的生成方法,所述方法包括下述步驟從原唱音頻數(shù)據(jù)中讀取預(yù)設(shè)的原唱音頻塊大小的原唱塊音頻數(shù)據(jù),并將所述原唱塊音頻lt據(jù)寫入音頻文件;從伴音音頻數(shù)據(jù)中讀取預(yù)設(shè)的伴音音頻塊大小的伴音塊音頻數(shù)據(jù),并將所述伴音塊音頻數(shù)據(jù)寫入音頻文件,所述原唱塊音頻數(shù)據(jù)的播放時(shí)間與所述伴音塊音頻數(shù)據(jù)的播放時(shí)間相同;循環(huán)執(zhí)行上述步驟,直至所述原唱音頻凄t據(jù)和所述伴音音頻數(shù)據(jù)均寫入所述音頻文件。本發(fā)明實(shí)施例的另一目的在于提供一種音頻文件的生成裝置,所述裝置包括原唱音頻數(shù)據(jù)讀取模塊,用于從原唱音頻數(shù)據(jù)中讀取預(yù)設(shè)的原唱音頻塊大小的原唱塊音頻數(shù)據(jù);原唱音頻數(shù)據(jù)寫入模塊,用于將所述原唱塊音頻數(shù)據(jù)寫入音頻文件;伴音音頻數(shù)據(jù)讀取模塊,用于從伴音音頻數(shù)據(jù)中讀取預(yù)設(shè)的伴音音頻塊大小的伴音塊音頻數(shù)據(jù),所述原唱塊音頻數(shù)據(jù)的播放時(shí)間與所述伴音塊音頻數(shù)據(jù)的播放時(shí)間相同;伴音音頻數(shù)據(jù)寫入模塊,用于將所述伴音塊音頻數(shù)據(jù)寫入音頻文件;音頻數(shù)據(jù)讀取寫入控制模塊,用于控制所述原唱音頻數(shù)據(jù)讀取模塊、原唱音頻數(shù)據(jù)寫入模塊、伴音音頻數(shù)據(jù)讀取模塊以及伴音音頻數(shù)據(jù)寫入模塊,循環(huán)工作,使寫入所述音頻文件中的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)交替存儲(chǔ)。實(shí)施例的另一目的在于提供一種在數(shù)碼播放器上實(shí)現(xiàn)影音伴唱的方法,所述方法包括下述步驟將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)合成包含交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的音頻文件;接收伴唱播放請(qǐng)求,讀取所述音頻文件中的伴音塊音頻數(shù)據(jù);釆集用戶輸入的聲音數(shù)據(jù);將所述伴音塊音頻數(shù)據(jù)與所述聲音數(shù)據(jù)合成音頻數(shù)據(jù);播放所述合成后的音頻數(shù)據(jù)。實(shí)施例的另一目的在于提供一種數(shù)碼播放器,所述數(shù)碼播放器包括音頻文件存儲(chǔ)器,用于存儲(chǔ)包含交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的音頻文件,所述原唱塊音頻數(shù)據(jù)的播;故時(shí)間與所述伴音音頻數(shù)據(jù)的播放時(shí)間相同;微控制器,用于接收播放模式切換指令,檢測(cè)當(dāng)前的播放模式,并根據(jù)當(dāng)前播放模式輸出原唱控制指令或者伴唱控制指令;聲音采集單元,用于采集用戶輸入的聲音數(shù)據(jù);音頻處理單元,用于根據(jù)所述原唱控制指令從所述音頻文件存儲(chǔ)器中讀取所述音頻文件,并輸出所述音頻文件中的原唱塊音頻教:據(jù),或者才艮據(jù)所述伴唱控制指令從所述音頻文件存儲(chǔ)器中讀取所述音頻文件,并將所述音頻文件中的伴音音頻數(shù)據(jù)和所述聲音采集單元采集的聲音數(shù)據(jù)合成伴唱音頻數(shù)據(jù)并輸出;音頻數(shù)據(jù)播放單元,用于播;故所述音頻it據(jù)。在本發(fā)明實(shí)施例中,通過將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)合成一個(gè)包含交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的音頻文件,當(dāng)數(shù)碼播放器處于原唱播放模式時(shí),讀取音頻文件中的原唱塊音頻數(shù)據(jù)進(jìn)行播放,當(dāng)數(shù)碼播放器處于伴唱播放模式時(shí),讀取音頻文件中的伴音塊音頻數(shù)據(jù),將其與釆集的聲音數(shù)據(jù)合成伴唱音頻數(shù)據(jù)并播放,從而實(shí)現(xiàn)較佳的數(shù)碼播放器的影音伴唱功能,同時(shí)實(shí)現(xiàn)數(shù)碼播放器原唱和伴唱之間的隨時(shí)切換。圖1是本發(fā)明實(shí)施例提供音頻文件的生成方法的實(shí)現(xiàn)流程圖;圖2是本發(fā)明實(shí)施例提供的在數(shù)碼播放器上實(shí)現(xiàn)伴唱的方法的流程圖3是本發(fā)明實(shí)施例提供的原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)的格式轉(zhuǎn)換的實(shí)現(xiàn)流程圖;圖4是本發(fā)明實(shí)施例提供的數(shù)碼播放器原唱和伴唱之間的切換的實(shí)現(xiàn)流程圖;圖5是本發(fā)明實(shí)施例提供音頻文件的生成裝置的結(jié)構(gòu)示意圖;圖6是本發(fā)明實(shí)施例提供的帶有影音伴唱功能的數(shù)碼播放器的結(jié)構(gòu)圖。具體實(shí)施方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。在本發(fā)明實(shí)施例中,通過將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)解碼后合成包含數(shù)據(jù)交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊音頻的音頻文件;當(dāng)接收到伴唱播放模式請(qǐng)求時(shí),根據(jù)當(dāng)前播放的原唱塊音頻數(shù)據(jù),讀取與該原唱塊音頻數(shù)據(jù)對(duì)應(yīng)的伴音塊音頻數(shù)據(jù),并將其與釆集的聲音數(shù)據(jù)合成伴唱音頻數(shù)據(jù),并播放,從而實(shí)現(xiàn)數(shù)碼播放器的影音伴唱功能。在本發(fā)明實(shí)施例中,為了實(shí)現(xiàn)原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)的同步,即當(dāng)從原唱切換到伴唱時(shí),保證切換后的伴音音頻數(shù)據(jù)的播放位置與切換前的原唱音頻數(shù)據(jù)的播放位置相對(duì)應(yīng),在將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)合成包含原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)交替的音頻文件時(shí),必須保證每一個(gè)原唱塊音頻數(shù)據(jù)解碼后的播放時(shí)間等于其對(duì)應(yīng)的伴音塊音頻數(shù)據(jù)解碼后的播放時(shí)間。在本發(fā)明實(shí)施例中,將包含交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的音頻文件稱為AKS文件。因此在本發(fā)明實(shí)施例中,在合成AKS文件前,預(yù)先設(shè)定AKS文件每個(gè)原唱塊音頻數(shù)據(jù)的播放時(shí)間,預(yù)設(shè)了每個(gè)原唱塊音頻數(shù)據(jù)的播放時(shí)間,則該播放時(shí)間等于與每個(gè)原唱塊音頻數(shù)據(jù)對(duì)應(yīng)的伴音塊音頻數(shù)據(jù)的播放時(shí)間,在本發(fā)明實(shí)施例中,將原唱塊音頻數(shù)據(jù)的插-;故時(shí)間和伴音塊音頻數(shù)據(jù)的播放時(shí)間統(tǒng)稱為塊播放時(shí)間。可以設(shè)定每個(gè)音頻數(shù)據(jù)塊的播;故時(shí)間相同,也可以不同。一般將音頻數(shù)據(jù)塊的播放時(shí)間設(shè)置為0.2~0.3秒,具有較佳的同步播放效果。在本發(fā)明實(shí)施例中,以設(shè)定每個(gè)音頻數(shù)據(jù)塊的播放時(shí)間為0.2秒為例。在生成AKS文件前,首先設(shè)置AKS的文件頭,AKS的文件頭包含但不限于文件頭同步字、文件大小、版本號(hào)、編碼格式、音頻播放總時(shí)間、文件同步字、文件總長(zhǎng)度、音頻屬性同步字、音頻屬性長(zhǎng)度以及音頻屬性,其中音頻屬性包括但不限于音頻采樣率、聲道數(shù)、量化比特?cái)?shù)、原唱音頻比特率、原唱音頻幀長(zhǎng)、原唱音頻幀樣本數(shù)、原唱音頻塊大小、伴音音頻比特率、伴音音頻幀長(zhǎng)、伴音音頻幀樣本數(shù)、伴音音頻塊大小等變量字段,同時(shí)該AKS文件頭中包含的字段可以根據(jù)實(shí)際播放需要,自行增減。各字段的說明如下表所示<table>tableseeoriginaldocumentpage9</column></row><table>伴音音頻幀長(zhǎng)32伴音音頻幀樣本數(shù)32伴音音頻塊大小32其中,文件頭同步字位于AKS文件的起始位置,為了達(dá)到較佳的原唱音頻和伴音音頻的同步效果,在本發(fā)明實(shí)施例中,設(shè)置原唱音頻比特率和伴音音頻比特率均為固定比特率(ConstantsBitRate,CBR)。圖1示出了本發(fā)明實(shí)施例提供的包含交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的音頻文件的生成流程,為了保證生成的包含原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的音頻文件,在播放時(shí),達(dá)到原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)的同步,首先設(shè)定每個(gè)原唱塊音頻數(shù)據(jù)解碼后的播;改時(shí)間與其相應(yīng)伴音塊音頻數(shù)據(jù)解碼后的播放時(shí)間相同,同時(shí),在生成該音頻文件前,設(shè)定每個(gè)原唱塊音頻數(shù)據(jù)解碼后的播放時(shí)間。在設(shè)定每個(gè)原唱塊音頻數(shù)據(jù)解碼后的播放時(shí)間時(shí),每個(gè)原唱塊音頻數(shù)據(jù)解碼后的播放時(shí)間可以相同,也可以不相同。詳述如下.'在步驟S101中,解碼原唱音頻數(shù)據(jù),并從原唱音頻數(shù)據(jù)中讀取預(yù)i殳的原唱塊大小的原唱音頻數(shù)據(jù)。當(dāng)原唱音頻數(shù)據(jù)的比特率為固定比特率時(shí),原唱塊大小=該塊播放時(shí)間x原唱音頻比特率。該塊播放時(shí)間即為預(yù)先^:定的每個(gè)原唱塊音頻數(shù)據(jù)解碼后的播放時(shí)間。為了保證該原唱塊大小的原唱音頻數(shù)據(jù)包含整數(shù)個(gè)幀,取該計(jì)算結(jié)果的整數(shù),即原唱塊大小=INT(該塊播放時(shí)間x原唱音頻比特率)。如當(dāng)音頻采樣率fs=44.1khz,原唱音頻比特率bitrate—原唱=128kbps時(shí),原唱塊大小=INT(128kbpsx0.2/8)=3k。為了保證每個(gè)原唱塊音頻數(shù)據(jù)包含整數(shù)個(gè)幀,也可以采用下述原唱塊大小計(jì)算公式原唱塊大小-原唱音頻幀長(zhǎng)x(音頻采樣率x該塊播放時(shí)間/原唱音頻幀樣本數(shù))。其中原唱音頻幀長(zhǎng)、音頻釆樣率以及原唱音頻幀樣本數(shù)是預(yù)先設(shè)定在AKS文件頭的對(duì)應(yīng)字段中的,其值是讀取的原唱音頻數(shù)據(jù)流的原唱音頻幀長(zhǎng)、音頻采樣率以及原唱音頻幀樣本數(shù)的值。當(dāng)原唱音頻數(shù)據(jù)的比特率為變比特率(VBR)時(shí),由于比特率是變化的,從而原唱音頻的幀長(zhǎng)也是變化的,此時(shí),通過為原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)設(shè)定相同的播放時(shí)間,從而得到原唱音頻塊大小和伴音音頻塊大小,達(dá)到原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的同步,顯然是不合適的。此時(shí),可以通過為原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)設(shè)定相同的播放時(shí)間,來4尋到原唱音頻塊包含的幀數(shù)和伴音音頻塊包含的幀數(shù),從而達(dá)到原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的同步。其中原唱塊包含幀數(shù)-INT(原唱塊音頻數(shù)據(jù)插-;故時(shí)間/一幀原唱音頻播放時(shí)間),其中一幀原唱音頻播放時(shí)間=原唱音頻幀樣本凄丈/音頻采樣率,從而原唱塊包含幀數(shù)-INT(原唱塊音頻數(shù)據(jù)播放時(shí)間x音頻采樣率/原唱音頻幀樣本數(shù))。即當(dāng)原唱音頻數(shù)據(jù)的比特率為VBR時(shí),在步-驟S101中,從原唱音頻數(shù)據(jù)中讀取原唱塊包含幀數(shù)的原唱音頻數(shù)據(jù)。將計(jì)算出的原唱塊大小寫入AKS文件頭的原唱音頻塊大小字段。當(dāng)預(yù)設(shè)的每個(gè)原唱塊的播放時(shí)間不同時(shí),則根據(jù)原唱塊大小的計(jì)算公式計(jì)算出的原唱塊大小也不同,此時(shí),在AKS文件頭中可以采用列表等形式對(duì)計(jì)算出的每個(gè)原唱塊大小分別進(jìn)行保存。從原唱音頻數(shù)據(jù)流中讀取AKS文件頭中才艮據(jù)該塊播放時(shí)間和原唱音頻比特率計(jì)算出的原唱塊大小進(jìn)行讀取。在步驟S102中,將讀取的原唱塊音頻數(shù)據(jù)寫入AKS文件。在步驟S103中,解碼伴音音頻數(shù)據(jù),并從伴音音頻數(shù)據(jù)中讀取預(yù)設(shè)的伴音塊大小的伴音音頻數(shù)據(jù)。當(dāng)原唱音頻數(shù)據(jù)的比特率為固定比特率時(shí),伴音塊大小-該塊播放時(shí)間x伴音音頻比特率。該塊播放時(shí)間即為預(yù)先設(shè)定的每個(gè)原唱塊音頻數(shù)據(jù)解碼后的播放時(shí)間。為了保證該原唱塊大小的原唱音頻數(shù)據(jù)包含整數(shù)個(gè)幀,取該計(jì)算結(jié)果的整數(shù),即原唱塊大小=INT(該塊播放時(shí)間x原唱音頻比特率)。如當(dāng)音頻采樣率fs=44.1khz,伴音音頻比特率bitratej半音-64kbps時(shí),伴音塊大小=INT(64kbpsx0.2/8)=1.5k。為了保證每個(gè)伴音塊音頻數(shù)據(jù)包含整數(shù)個(gè)幀,也可以采用下述伴音塊大小計(jì)算公式伴音塊大小伴音音頻幀長(zhǎng)x(音頻采樣率x該塊播放時(shí)間/伴音音頻幀樣本數(shù))。其中伴音音頻幀長(zhǎng)、音頻釆樣率以及伴音音頻幀樣本數(shù)是預(yù)先設(shè)定在AKS文件頭的對(duì)應(yīng)字段中的,其值是讀取的伴音音頻ll據(jù)流的伴音音頻幀長(zhǎng)、音頻采樣率以及伴音音頻幀樣本數(shù)的值。同理當(dāng)伴音塊音頻數(shù)據(jù)的比特率為VBR時(shí),可以通過設(shè)定的伴音塊音頻數(shù)據(jù)的播放時(shí)間,得到伴音音頻塊包含的幀數(shù),從而達(dá)到原唱塊音頻數(shù)據(jù)和其相應(yīng)的伴音塊音頻數(shù)據(jù)的同步。其中伴音塊包含幀數(shù)-INT(伴音塊音頻數(shù)據(jù)播放時(shí)間x音頻采樣率/伴音音頻幀樣本數(shù))。即當(dāng)伴音音頻數(shù)據(jù)的比特率為VBR時(shí),在步驟S101中,從伴音音頻數(shù)據(jù)中讀取伴音塊包含幀^:的伴音音頻數(shù)據(jù)。將計(jì)算出的伴音塊大小寫入AKS文件頭的伴音音頻塊大小字段,當(dāng)預(yù)設(shè)的每個(gè)原唱塊的播放時(shí)間不同時(shí),則根據(jù)原唱塊大小的計(jì)算公式計(jì)算出的原唱塊大小也不同,此時(shí),在AKS文件頭中可以采用列表等形式對(duì)計(jì)算出的每個(gè)伴音塊大小分別進(jìn)行保存。從原唱音頻數(shù)據(jù)流中讀取AKS文件頭中才艮據(jù)該塊播放時(shí)間和原唱音頻比特率計(jì)算出的原唱塊大小進(jìn)行讀取。在步驟S104中,將讀取的伴音塊音頻數(shù)據(jù)寫入AKS文件。在步驟S105中,判斷原唱音頻數(shù)據(jù)是否讀取完畢,如果是,則執(zhí)行步驟S106,否則,執(zhí)行步驟SIOI。在步驟S106中,判斷伴音音頻數(shù)據(jù)是否讀取完畢,如果是,則執(zhí)行步驟S107,否則,執(zhí)行步驟S103。在步驟S107中,通過上述原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)交替寫入AKS文件后,更新AKS文件頭中相應(yīng)字段的值。如文件大小、音頻插-;故總時(shí)間、音頻總長(zhǎng)度等字段值。采用上述步驟將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)合成一個(gè)包含交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的AKS文件后,原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的交替存儲(chǔ)的形式可以如下Data(原唱block—1,伴音block一l,原唱block—2,伴音block—2,原唱block—n,伴音block—n}。在此AKS文件中包含兩個(gè)聲道的數(shù)據(jù)。在本發(fā)明實(shí)施例中,讀取伴音音頻數(shù)據(jù)中的伴音塊音頻凄史據(jù)并寫入AKS文件和讀取原唱音頻數(shù)據(jù)的原唱塊音頻數(shù)據(jù)并寫入AKS文件的順序不受限制,可以任意。圖2示出了本發(fā)明實(shí)施例提供的在數(shù)碼播放器上實(shí)現(xiàn)影音伴唱的方法的流程,詳述如下在步驟S201中,將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)合成一個(gè)包含交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊的音頻數(shù)據(jù)的AKS文件。由于將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)合成AKS文件時(shí),該原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)為固定比特率時(shí),可以達(dá)到較佳的播放效果。因此,在將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)合成AKS文件之前,將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)的格式轉(zhuǎn)換為符合AKS的格式。在合成AKS文件前,采用音頻解碼器對(duì)原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)進(jìn)行解碼,在解碼前,需要對(duì)音頻解碼器進(jìn)行初始化。其中原唱音頻數(shù)據(jù)和伴唱音頻數(shù)據(jù)可以通過PC機(jī)從網(wǎng)絡(luò)上下載或者通過其他方式存儲(chǔ)至數(shù)碼播放器中。原唱音頻數(shù)據(jù)和伴唱音頻數(shù)據(jù)的格式可以是MP3格式(MovingPictureExpertsGroupAudioLayerIII)、音頻4某體(WindowsMediaAudio,WMA)格式、OGG格式或者高級(jí)音頻編碼(AdvancedAudioCoding,AAC)格式等任何一種音頻格式。合成AKS文件的過程如圖l所示,在此不再贅述。為了4吏合成后的AKS文件能夠?qū)崿F(xiàn)較好的原唱和伴唱的同步播放效果,在合成AKS文件之前,預(yù)設(shè)AKS文件的文件頭中的字賴(直,其中AKS文件頭中的字,殳包4舌文件頭同步字、文件大小、版本號(hào)、文件編碼格式、音頻播放總時(shí)間、文件同步字、文件總長(zhǎng)度、音頻屬性同步字、音頻屬性長(zhǎng)度以及音頻屬性,其中音頻屬性包括但不限于音頻采樣率、聲道數(shù)、量化比特?cái)?shù)、原唱音頻比特率、原唱音頻幀長(zhǎng)、原唱音頻幀樣本數(shù)、原唱音頻塊大小、伴音音頻比特率、伴音音頻幀長(zhǎng)、伴音音頻幀樣本數(shù)、伴音音頻塊大小等變量字段。根據(jù)播放需要,可以設(shè)置上述字段中的一個(gè)或者多個(gè)。在步驟S202中,接收用戶的影音伴唱請(qǐng)求,將該AKS文件中的伴音塊音頻數(shù)據(jù)與數(shù)碼播放器釆集的聲音數(shù)據(jù)合成音頻數(shù)據(jù)并播放。在本發(fā)明實(shí)施例中,為了實(shí)現(xiàn)在原唱和伴唱之間隨時(shí)進(jìn)4亍切換,在數(shù)碼播放器的外殼上設(shè)置有播放模式選擇按鈕,用戶可以通過該播》文^t式選擇按鈕在原唱和伴唱之間進(jìn)行切換。當(dāng)數(shù)碼播放器的微控制器檢測(cè)到當(dāng)前數(shù)碼播放器處于原唱^番放模式,即微控制器接收到用戶的原唱播放請(qǐng)求時(shí),音頻解碼器根據(jù)當(dāng)前時(shí)間點(diǎn)計(jì)算AKS文件中與該時(shí)間點(diǎn)對(duì)應(yīng)的原唱塊音頻數(shù)據(jù)的播放位置,從該位置開始讀取AKS文件中的音頻數(shù)據(jù),在讀取AKS文件中的音頻數(shù)據(jù)時(shí),跳過AKS文件中伴音塊音頻數(shù)據(jù),并對(duì)讀取的原唱塊的音頻數(shù)據(jù)進(jìn)行解碼,由播》丈器進(jìn)行播放;當(dāng)數(shù)碼播放器的微控制器檢測(cè)到當(dāng)前數(shù)碼播放器處于伴唱播放模式,即微控制器接收到用戶的影音伴唱請(qǐng)求時(shí),音頻解碼器根據(jù)當(dāng)前時(shí)間點(diǎn)計(jì)算AKS文件中與該時(shí)間點(diǎn)對(duì)應(yīng)的伴音塊音頻數(shù)據(jù)的播放位置,從該4立置開始讀取AKS文件中的音頻數(shù)據(jù)流。在讀取AKS文件中的音頻數(shù)據(jù)時(shí),跳過AKS文件中原唱塊音頻數(shù)據(jù),并對(duì)讀取的音頻數(shù)據(jù)進(jìn)行解碼,將解碼后的音頻數(shù)據(jù)與數(shù)碼播放器采集的聲音數(shù)據(jù)合成音頻數(shù)據(jù),由播放器進(jìn)行播放。其中聲音數(shù)據(jù)可以通過麥克風(fēng)或者其他聲音采集裝置采集。將伴音塊的音頻數(shù)據(jù)與數(shù)碼播放器釆集的聲音數(shù)據(jù)合成音頻數(shù)據(jù)的方式可以采用現(xiàn)有技術(shù)的任何一種合成技術(shù),也可以通過對(duì)伴音數(shù)據(jù)和聲音數(shù)據(jù)采用雙向加4又的方式,其具體過程如下假設(shè)伴音為B,用戶輸入的聲音為U,最終的輸出為O,假設(shè)伴音的加權(quán)值為w(w<l),那么用戶輸入的聲音的加權(quán)值為l-w,這樣l呆i正了二者在加權(quán)相加的時(shí)候不會(huì)溢出,則0=w*B+(l-w)*U實(shí)際使用時(shí),提供ll個(gè)檔次供選擇,即W的取值范圍為[O,l]之間間隔O.l的值。用戶通過外置的播放模式選擇按鈕輸入播放模式切換指令時(shí),輸入了兩個(gè)方面的信息一是是否需要切換到伴音;二是切換到伴音后,根據(jù)上述提供的ll個(gè)檔次選擇調(diào)整的效果。在本發(fā)明實(shí)施例中,當(dāng)原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)的比特率均為固定比特率,或者當(dāng)原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)的聲道數(shù)、采樣率以及量化比特?cái)?shù)均相同時(shí),則可以使生成的AKS文件中的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)達(dá)到更佳的同步效果,因此,在本發(fā)明實(shí)施例中,在將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)生成包含交替存儲(chǔ)了原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的AKS文件前,對(duì)不符合上述要求的原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)進(jìn)行轉(zhuǎn)換,4吏原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)符合上述要求。圖3示出了本發(fā)明實(shí)施例提供的原唱音頻數(shù)據(jù)和伴音音頻#史據(jù)的轉(zhuǎn)換的實(shí)現(xiàn)流程,詳述如下在步驟S301中,音頻解碼器對(duì)原唱音頻數(shù)據(jù)進(jìn)行解碼,解碼后的原唱音頻數(shù)據(jù)成為不經(jīng)壓縮的脈沖編碼調(diào)制(PulseCodeModulation,PCM)數(shù)據(jù);在步驟S302中,判斷該原唱音頻數(shù)據(jù)是否符合上述要求,如果不符合,執(zhí)行步驟S303,否則執(zhí)行步驟S304,在本發(fā)明實(shí)施例中,判斷原唱音頻數(shù)據(jù)是否符合上述要求,主要判斷該原唱音頻數(shù)據(jù)的比特率是否為固定比特率,或者判斷該原唱音頻數(shù)據(jù)的聲道數(shù)是否為雙聲道數(shù);在步驟S303中,將該原唱音頻數(shù)據(jù)轉(zhuǎn)換成符合上述要求的原唱音頻數(shù)據(jù)。即將該原唱音頻數(shù)據(jù)的比特率設(shè)為固定比特率,聲道數(shù)設(shè)為雙聲道等;在步驟S304中,音頻解碼器對(duì)伴音音頻數(shù)據(jù)進(jìn)行解碼;在步驟S305中,判斷該伴音音頻數(shù)據(jù)是否符合上述要求,如果不符合,執(zhí)行步驟S306,否則結(jié)束。在判斷該伴音音頻數(shù)據(jù)是否符合上述要求時(shí),判斷該伴音音頻數(shù)據(jù)的比特率是否為固定比特率,該伴音音頻數(shù)據(jù)的釆樣率、聲道數(shù)以及量化比特率是否與原唱音頻數(shù)據(jù)一致。在本發(fā)明實(shí)施例中,也可以先對(duì)伴音音頻數(shù)據(jù)進(jìn)行解碼和判斷;在步驟S306中,將該伴音音頻數(shù)據(jù)轉(zhuǎn)換成符合上述要求的伴音音頻數(shù)據(jù),即將該伴音音頻數(shù)據(jù)的比特率調(diào)整為固定比特率,該伴音音頻數(shù)據(jù)的采樣率、聲道數(shù)以及量化比特率調(diào)整為與原唱音頻數(shù)據(jù)的采樣率、聲道數(shù)以及量化比特率一致。圖4示出了本發(fā)明實(shí)施例提供的實(shí)現(xiàn)數(shù)碼播放器原唱和伴唱之間的切換的流程,以數(shù)碼播放器的原始播放模式為原唱播放模式為例,詳述如下在步驟S401中,讀取AKS文件的文件頭信息,并對(duì)音頻解碼器進(jìn)行初始化,同時(shí)設(shè)置數(shù)碼播放器的播放模式為原唱播放模式;在步驟S402中,接收用戶的播放模式切換指令,判斷數(shù)碼播放器當(dāng)前的播放模式是否為原唱播放模式,如果是,執(zhí)行步驟S403,否則,執(zhí)行步驟S404;在步驟S403中,讀取AKS文件中的原唱塊的音頻數(shù)據(jù)并對(duì)其進(jìn)行解碼后,執(zhí)行步驟S406;在步驟S404中,讀取AKS文件中的伴音塊的音頻數(shù)據(jù)并對(duì)其進(jìn)行解碼;在步驟S405中,采集用戶通過麥克風(fēng)或者其他聲音采集器件輸入的用戶的聲音數(shù)據(jù),在本發(fā)明實(shí)施例中,步驟S404和步驟S405可以同時(shí)進(jìn)行,也可以按順序進(jìn)行,其順序可以任意;在步驟S406中,將釆集的聲音數(shù)據(jù)與解碼后的伴音塊的音頻數(shù)據(jù)合成音頻數(shù)據(jù);在步驟S407中,播放合成后的音頻數(shù)據(jù)或者原唱塊的音頻數(shù)據(jù)。圖5示出了本發(fā)明實(shí)施例提供的音頻文件生成裝置的結(jié)構(gòu),為了更好的說明本發(fā)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。首先對(duì)該音頻文件生成裝置進(jìn)行初始化,初始化操作包括設(shè)置AKS文件頭中包含的字段,,以及各字段的值。為了達(dá)到較佳的原唱和伴音同步效果,設(shè)置AKS文件頭中包含下述字段,文件頭同步字、文件大小、版本號(hào)、編碼格式、音頻播放總時(shí)間、文件同步字、文件總長(zhǎng)度、音頻屬性同步字、音頻屬性長(zhǎng)度以及音頻屬性,其中音頻屬性包括但不限于音頻采樣率、聲道凄史、量化比特?cái)?shù)、原唱音頻比特率、原唱音頻幀長(zhǎng)、原唱音頻幀樣本數(shù)、原唱音頻塊大小或者原唱塊包含幀數(shù)、伴音音頻比特率、伴音音頻幀長(zhǎng)、伴音音頻幀樣本數(shù)、伴音音頻塊大小或者伴音塊包含幀數(shù)等變量字段。AKS文件頭中包含的字段根據(jù)播放需要,可以將上述字段任意組合。為了保證生成的包含原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的音頻文件,在播放時(shí),達(dá)到原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)的同步,首先設(shè)定每個(gè)原唱塊音頻數(shù)據(jù)解碼后的播放時(shí)間與其相應(yīng)伴音塊音頻數(shù)據(jù)解碼后的播放時(shí)間相同,同時(shí),在生成該音頻文件前,設(shè)定每個(gè)原唱塊音頻數(shù)據(jù)解碼后的播放'時(shí)間。在設(shè)定每個(gè)原唱塊音頻數(shù)據(jù)解碼后的播放時(shí)間時(shí),每個(gè)原唱塊音頻數(shù)據(jù)解碼后的播放時(shí)間可以相同,也可以不相同。當(dāng)原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)的比特率為固定比特率時(shí),原唱音頻塊大小是根據(jù)預(yù)設(shè)的原唱塊音頻數(shù)據(jù)播放時(shí)間和原唱音頻比特率計(jì)算的,伴音音頻塊大小是根據(jù)預(yù)設(shè)的伴音塊音頻數(shù)據(jù)播放時(shí)間和伴音音頻比特率計(jì)算的,原唱塊音頻塊大小和伴音塊音頻大小的計(jì)算/>式分別如下原唱音頻塊大小=原唱塊音頻播放時(shí)間x原唱音頻比特率;伴音音頻塊大小-伴音塊音頻播放時(shí)間x伴音音頻比特率。為了保證每個(gè)原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)包含整數(shù)個(gè)幀,取計(jì)算結(jié)果的整數(shù),即此時(shí)原唱音頻塊大小和伴音音頻塊大小的計(jì)算/>式分別為原唱音頻塊大小=INT(原唱塊音頻播^t時(shí)間x原唱音頻比特率);伴音音頻塊大小-INT(伴音塊音頻播-;故時(shí)間x伴音音頻比特率)。為了使每個(gè)原唱塊和伴音塊包含整數(shù)個(gè)幀,也可以采用下述原唱音頻塊大小和伴音塊音頻大小的計(jì)算公式原唱塊大小=原唱音頻幀長(zhǎng),x(音頻采樣率x該塊播放時(shí)間/原唱音頻幀樣本數(shù));伴音塊大小=伴音音頻幀長(zhǎng)x(音頻采樣率x該塊播;故時(shí)間/伴音音頻幀樣本數(shù))。當(dāng)為每個(gè)原唱塊音頻數(shù)據(jù)預(yù)設(shè)的播;改時(shí)間不同時(shí),每個(gè)與原唱塊音頻數(shù)據(jù)對(duì)應(yīng)的伴音塊音頻數(shù)據(jù)的播放時(shí)間也不同。此時(shí),可以根據(jù)上述計(jì)算公式,一一計(jì)算不同的預(yù)設(shè)塊播;改時(shí)間下,各原唱塊和對(duì)應(yīng)伴音塊的大小。從而在進(jìn)行初始化時(shí),將計(jì)算出的原唱塊大小和伴音塊大小寫入AKS文件頭的對(duì)應(yīng)字段中。當(dāng)各個(gè)原唱塊大小不相同時(shí),各個(gè)伴音塊大小也不相同,在本發(fā)明實(shí)施例中,在AKS文件頭中,原唱塊音頻大小字段和伴音塊音頻大小都采用列表的形式對(duì)各個(gè)不同原唱塊大小和伴音塊大小進(jìn)行存儲(chǔ)。初始化完成后,音頻數(shù)據(jù)讀取寫入控制模塊51向原唱音頻數(shù)據(jù)讀取模塊52發(fā)送原唱塊音頻數(shù)據(jù)讀取指令,并將原唱音頻數(shù)據(jù)讀取模塊52讀取的原唱塊音頻數(shù)據(jù)送至原唱音頻數(shù)據(jù)寫入模塊54。接著音頻數(shù)據(jù)讀取寫入控制模塊51向伴音音頻數(shù)據(jù)讀取模塊53發(fā)送伴音塊音頻數(shù)據(jù)讀取指令,并將伴音音頻數(shù)據(jù)讀取模塊53讀取的伴音塊音頻數(shù)據(jù)送至伴音音頻數(shù)據(jù)寫入模塊55。音頻數(shù)據(jù)讀取寫入控制才莫塊51也可以先向伴音音頻數(shù)據(jù)讀取沖莫塊53發(fā)送音頻數(shù)據(jù)讀取指令,在向原唱音頻數(shù)據(jù)讀取模塊52發(fā)送原唱塊音頻數(shù)據(jù)讀取指令。音頻數(shù)據(jù)讀取寫入控制模塊51通過對(duì)原唱音頻數(shù)據(jù)讀取模塊52、原唱音頻數(shù)據(jù)寫入模塊54、伴音音頻數(shù)據(jù)讀取模塊53以及伴音音頻數(shù)據(jù)寫入模塊55之間的交互操作,從而使寫入AKS文件中的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)實(shí)現(xiàn)交替存儲(chǔ)。原唱音頻數(shù)據(jù)讀取模塊52接收到音頻數(shù)據(jù)讀取指令后,根據(jù)AKS文件頭中原唱塊音頻大小,從原唱音頻數(shù)據(jù)中讀^^原唱塊音頻大小的原唱塊音頻數(shù)據(jù),并將讀取的原唱塊音頻數(shù)據(jù)送至音頻數(shù)據(jù)讀取寫入控制模塊51。原唱音頻數(shù)據(jù)寫入模塊54將音頻數(shù)據(jù)讀取寫入控制模塊51傳輸?shù)脑獕K音頻數(shù)據(jù)寫入AKS文件中。伴音音頻數(shù)據(jù)讀^^莫塊524妄收到音頻數(shù)據(jù)讀耳又指令后,一艮據(jù)AKS文件頭中伴音塊音頻大小,從伴音音頻數(shù)據(jù)中讀取伴音塊音頻大小的伴音塊音頻數(shù)據(jù),并將讀取的伴音塊音頻數(shù)據(jù)送至音頻數(shù)據(jù)讀取寫入控制模塊51。伴音音頻數(shù)據(jù)寫入模塊54將音頻數(shù)據(jù)讀取寫入控制模塊51傳輸?shù)陌橐魤K音頻數(shù)據(jù)寫入AKS文件中。音頻數(shù)據(jù)讀取寫入控制才莫塊51檢測(cè)到原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)都讀取完畢后,向音頻文件頭更新模塊56發(fā)送更新指令,音頻文件頭更新模塊56根據(jù)該更新指令更新AKS文件頭中各字段的值。其中需要更新的字段為在生成AKS文件的過程中,發(fā)生變化的字段,如文件大小、音頻同步字、音頻總長(zhǎng)度等。圖6示出了本發(fā)明實(shí)施例提供的帶有影音伴唱功能的數(shù)碼播放器的結(jié)構(gòu),為了更好的說明本發(fā)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。音頻文件存儲(chǔ)器61中存儲(chǔ)有根據(jù)上述AKS文件生成方法生成的AKS文件。微控制器62接收用戶發(fā)送的播放模式切換指令,檢測(cè)數(shù)碼播放器當(dāng)前的播放模式,并根據(jù)數(shù)碼播放器當(dāng)前的播放模式向音頻處理單元63發(fā)送原唱控制指令或者伴唱控制指令。為了使數(shù)碼播放器能夠在原唱播放纟莫式和伴唱播放才莫式之間僅切換,在數(shù)碼播放器中設(shè)置播放模式切換按4走。當(dāng)用戶通過播放模式切換按鍵發(fā)送播放模式切換指令時(shí),微控制器62檢測(cè)數(shù)碼播放器當(dāng)前的播放模式。當(dāng)數(shù)碼播放器當(dāng)前的播放模式為原唱播放模式時(shí),微控制器62向音頻處理單元63發(fā)送原唱控制指令;當(dāng)數(shù)碼播放器當(dāng)前的播放模式為伴唱播放模式時(shí),微控制器62向音頻處理單元63發(fā)送伴唱控制指令。音頻處理單元63接收到原唱控制指令后,根據(jù)切換時(shí)AKS文件中伴音塊音頻數(shù)據(jù)的播放位置計(jì)算AKS文件中與該伴音塊音頻數(shù)據(jù)的播放位置對(duì)應(yīng)的原唱塊音頻數(shù)據(jù)的播放位置,讀取該位置后的AKS文件,音頻解碼單元631對(duì)讀取的AKS文件進(jìn)行解碼,從解碼后的音頻數(shù)據(jù)中提取原唱塊音頻數(shù)據(jù),而過濾掉伴音塊音頻數(shù)據(jù),將提取的原唱塊音頻數(shù)據(jù)輸出至音頻數(shù)據(jù)播放單元65。音頻處理單元63接收到伴唱控制指令后,根據(jù)切換時(shí)AKS文件中原唱塊音頻數(shù)據(jù)的播放位置計(jì)算AKS文件中與該原唱塊音頻數(shù)據(jù)的播放位置對(duì)應(yīng)的伴音塊音頻數(shù)據(jù)的播放位置,讀取該位置后的AKS文件,音頻解碼單元631對(duì)讀取的AKS文件進(jìn)行解碼,從解碼后的音頻數(shù)據(jù)中提取伴音塊音頻數(shù)據(jù),而過濾掉原唱塊音頻數(shù)據(jù),將提取的伴音塊音頻數(shù)據(jù)輸出至音頻數(shù)據(jù)合成單元632。同時(shí)聲音采集單元64釆集用戶通過麥克風(fēng)等聲音輸入裝置輸入的聲音數(shù)據(jù),對(duì)該聲音數(shù)據(jù)進(jìn)行模數(shù)轉(zhuǎn)換等處理后,輸出至音頻數(shù)據(jù)合成單元632。音頻數(shù)據(jù)合成單元632將音頻解碼單元631輸出的接收的伴音塊音頻數(shù)據(jù)和聲音采集單元輸出的聲音數(shù)據(jù)進(jìn)行疊加,以合成伴唱音頻數(shù)據(jù),將合成后的伴唱音頻數(shù)據(jù)輸出至音頻數(shù)據(jù)播放單元65。音頻數(shù)據(jù)合成單元632在進(jìn)行合成時(shí),可以采用現(xiàn)有技術(shù)的任何一種合成技術(shù),如雙向加權(quán)的方式等。音頻數(shù)據(jù)播放單元65播放接收的原唱塊音頻數(shù)據(jù)或者合成后的伴唱音頻數(shù)據(jù)。在本發(fā)明實(shí)施例中,通過將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)合成包含交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的音頻文件,當(dāng)接收到用戶的伴唱播》文請(qǐng)求時(shí),讀取合成后的音頻文件中伴音塊音頻數(shù)據(jù),并將該伴唱塊音頻數(shù)據(jù)與釆集的聲音數(shù)據(jù)合成伴唱音頻數(shù)據(jù),并播放。由于在伴唱過程中,不需要對(duì)原唱音頻數(shù)據(jù)進(jìn)行如消聲或者屏蔽等處理,從而不影響音頻數(shù)據(jù)播放質(zhì)量,具有較好的影音伴唱效果。同時(shí)由于在合成后的音頻文件中包含原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù),從而可以實(shí)現(xiàn)原唱播放模式和伴唱播放模式之間的切換。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的寸呆護(hù)范圍之內(nèi)。權(quán)利要求1、一種音頻文件的生成方法,其特征在于,所述方法包括下述步驟從原唱音頻數(shù)據(jù)中讀取預(yù)設(shè)的原唱音頻塊大小的原唱塊音頻數(shù)據(jù),并將所述原唱塊音頻數(shù)據(jù)寫入音頻文件;從伴音音頻數(shù)據(jù)中讀取預(yù)設(shè)的伴音音頻塊大小的伴音塊音頻數(shù)據(jù),并將所述伴音塊音頻數(shù)據(jù)寫入音頻文件,所述原唱塊音頻數(shù)據(jù)的播放時(shí)間與所述伴音塊音頻數(shù)據(jù)的播放時(shí)間相同;循環(huán)執(zhí)行上述步驟,直至所述原唱音頻數(shù)據(jù)和所述伴音音頻數(shù)據(jù)均寫入所述音頻文件。2、如權(quán)利要求1所述的音頻文件的生成方法,其特征在于,所述原唱音頻數(shù)據(jù)的比特率和所述伴音音頻數(shù)據(jù)的比特率均為固定比特率。3、如權(quán)利要求1所述的音頻文件的生成方法,其特征在于,所述方法還包括下述步驟'.當(dāng)所述原唱音頻數(shù)據(jù)和所述伴音音頻數(shù)據(jù)均讀取并寫入完畢時(shí),更新所述音頻文件的文件頭。4、一種音頻文件的生成裝置,其特征在于,所述裝置包括原唱音頻數(shù)據(jù)讀取模塊,用于從原唱音頻數(shù)據(jù)中讀取預(yù)設(shè)的原唱音頻塊大小的原唱塊音頻數(shù)據(jù);原唱音頻數(shù)據(jù)寫入模塊,用于將所述原唱塊音頻數(shù)據(jù)寫入音頻文件;伴音音頻數(shù)據(jù)讀取模塊,用于從伴音音頻數(shù)據(jù)中讀取預(yù)設(shè)的伴音音頻塊大小的伴音塊音頻數(shù)據(jù),所述原唱塊音頻數(shù)據(jù)的播放時(shí)間與所述伴音塊音頻數(shù)據(jù)的播放時(shí)間相同;伴音音頻數(shù)據(jù)寫入模塊,用于將所述伴音塊音頻數(shù)據(jù)寫入音頻文件;音頻數(shù)據(jù)讀取寫入控制模塊,用于控制所述原唱音頻數(shù)據(jù)讀取模塊、原唱音頻數(shù)據(jù)寫入模塊、伴音音頻數(shù)據(jù)讀取模塊以及伴音音頻數(shù)據(jù)寫入模塊,循環(huán)工作,使寫入所述音頻文件中的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)交替存儲(chǔ)。5、如權(quán)利要求4所述的音頻文件的生成裝置,其特征在于,所述原唱音頻數(shù)據(jù)的比特率和所述伴音音頻數(shù)據(jù)的比特率均為固定比特率。6、如權(quán)利要求4所述的音頻文件的生成方法,其特征在于,所述裝置還包括音頻文件頭更新;溪塊,用于更新所述音頻文件的文件頭。7、一種在數(shù)碼播放器上實(shí)現(xiàn)影音伴唱的方法,其特征在于,所述方法包括下述步驟將原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)合成包含交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊音頻凄t據(jù)的音頻文件;接收伴唱播放請(qǐng)求,讀取所述音頻文件中的伴音塊音頻數(shù)據(jù);采集用戶輸入的聲音數(shù)據(jù);將所述伴音塊音頻數(shù)據(jù)與所述聲音數(shù)據(jù)合成音頻數(shù)據(jù);播放所述合成后的音頻數(shù)據(jù)。8、如權(quán)利要求7所述的方法,其特征在于,所述接收伴唱播放請(qǐng)求,讀取所述音頻文件中的伴音塊音頻數(shù)據(jù)的步驟具體為接收播放模式切換指令,檢測(cè)當(dāng)前的播放模式;如果當(dāng)前的播放模式為原唱播放模式,從所述音頻文件中與接收到所述播放模式切換指令對(duì)應(yīng)的位置開始,讀取原唱塊音頻數(shù)據(jù)流,并播放;如果當(dāng)前的播放模式為伴唱播放模式,從所述音頻文件中與接收到所述播放模式切換指令對(duì)應(yīng)的位置開始,讀取伴音塊音頻數(shù)據(jù)流,并輸出。9、如權(quán)利要求7或者8所述的方法,其特征在于,所述原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)的比特率均為固定比特率。10、一種數(shù)碼播放器,其特征在于,所述數(shù)碼播放器包括-.音頻文件存儲(chǔ)器,用于存儲(chǔ)包含交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的音頻文件,所述原唱塊音頻數(shù)據(jù)的播放時(shí)間與所述伴音音頻數(shù)據(jù)的播放時(shí)間相同;微控制器,用于接收播放模式切換指令,檢測(cè)當(dāng)前的播放模式,并根據(jù)當(dāng)前播放模式輸出原唱控制指令或者伴唱控制指令;聲音采集單元,用于采集用戶輸入的聲音數(shù)據(jù);音頻處理單元,用于根據(jù)所述原唱控制指令從所述音頻文件存儲(chǔ)器中讀取所述音頻文件,并輸出所述音頻文件中的原唱塊音頻數(shù)據(jù),或者根據(jù)所述伴唱控制指令從所述音頻文件存儲(chǔ)器中讀取所述音頻文件,并將所述音頻文件中的伴音音頻數(shù)據(jù)和所述聲音釆集單元釆集的聲音數(shù)據(jù)合成伴唱音頻數(shù)據(jù)并輸出;音頻數(shù)據(jù)播放單元,用于播放所述音頻數(shù)據(jù)。11、如權(quán)利要求IO所述的數(shù)碼播放器,其特征在于,所述音頻處理單元包括音頻解碼單元,用于對(duì)從所述音頻文件存儲(chǔ)器讀取的音頻文件進(jìn)行解碼,并根據(jù)所述原唱控制指令輸出所述音頻文件中的原唱塊音頻數(shù)據(jù),或者根據(jù)所述伴唱控制指令輸出所述音頻文件中的伴音塊音頻數(shù)據(jù);音頻數(shù)據(jù)合成單元,用于將所述音頻解碼單元輸出的伴音塊音頻數(shù)據(jù)與所述聲音采集單元輸出的聲音數(shù)據(jù)合成伴唱音頻數(shù)據(jù)并輸出。全文摘要本發(fā)明適用于信息
技術(shù)領(lǐng)域:
,提供了一種音頻文件的生成方法、裝置及數(shù)碼播放器,該方法包括下述步驟從原唱音頻數(shù)據(jù)中讀取預(yù)設(shè)的原唱音頻塊大小的原唱塊音頻數(shù)據(jù),并將原唱塊音頻數(shù)據(jù)寫入音頻文件;從伴音音頻數(shù)據(jù)中讀取預(yù)設(shè)的伴音音頻塊大小的伴音塊音頻數(shù)據(jù),并將伴音塊音頻數(shù)據(jù)寫入音頻文件,原唱塊音頻數(shù)據(jù)的播放時(shí)間與伴音塊音頻數(shù)據(jù)的播放時(shí)間相同;循環(huán)執(zhí)行上述步驟,直至原唱音頻數(shù)據(jù)和伴音音頻數(shù)據(jù)均寫入音頻文件。在本發(fā)明實(shí)施例中,通過生成一種包含交替存儲(chǔ)的原唱塊音頻數(shù)據(jù)和伴音塊音頻數(shù)據(jù)的音頻文件,來實(shí)現(xiàn)數(shù)碼播放器的影音伴唱功能,不會(huì)影響音頻文件的質(zhì)量,從而具有較佳的影音伴唱效果。文檔編號(hào)G10H7/00GK101131816SQ20071018104公開日2008年2月27日申請(qǐng)日期2007年9月30日優(yōu)先權(quán)日2007年9月30日發(fā)明者李匡匡申請(qǐng)人:炬力集成電路設(shè)計(jì)有限公司