|
語(yǔ)音編碼分成波形編碼、參數(shù)編碼和混合編碼.波形編碼就是語(yǔ)音信號(hào)形成的波形進(jìn)行處理和加工,參數(shù)編碼是以語(yǔ)音信號(hào)產(chǎn)生的數(shù)字模型為基礎(chǔ),求出其模型參
數(shù),然后按照這些參數(shù)還原數(shù)字模型,合成語(yǔ)音?;旌暇幋a是綜合了波形編碼和參數(shù)編碼的長(zhǎng)處,在4-16kbps的速率上進(jìn)行高質(zhì)量的語(yǔ)音合成。例如多脈沖
激勵(lì)線性預(yù)測(cè)編碼(MPLPC),碼本激勵(lì)線性預(yù)測(cè)編碼(CELP)都是混合編碼。
人耳的聽(tīng)覺(jué)范圍在20-20KHZ,根本抽樣定律要保證聲音不失真,就必須用44KHZ左右采樣頻率,但是人說(shuō)話的范圍在300-3400HZ,所以就用8KHZ主要對(duì)人聲采樣。 波形編碼前,首先對(duì)模擬語(yǔ)音信號(hào)進(jìn)行采樣,然后對(duì)采樣結(jié)果進(jìn)行幅度量化,再進(jìn)行二進(jìn)制編碼。 G.729與G.723是ITU制定的適用于IP電話語(yǔ)音編碼,因?yàn)槠涓哔|(zhì)量,低碼率而得到廣泛應(yīng)用,下面分別做介紹: G.729是ITU制定通過(guò)的8kbps的語(yǔ)音編碼協(xié)議,換算成字節(jié)才1k,它采用共軛結(jié)構(gòu)的算術(shù)碼激勵(lì)線性預(yù)測(cè)(CS-ACELP)。 在ITU上注冊(cè)一個(gè)賬號(hào)便可以下載現(xiàn)實(shí)的C源代碼和描述文檔,在VC 6下編譯并運(yùn)行,卻發(fā)現(xiàn)編碼效率太低,編碼時(shí)間基本上是優(yōu)化后5-6倍。ITU的源代碼中采用的是最基本的運(yùn)算,而且沒(méi)有做過(guò)任何優(yōu)化,所以效率極度低 下。在優(yōu)化之前先推薦一款調(diào)試軟件DevPartner Studio Professional,它能進(jìn)行錯(cuò)誤分析和性能分析,功能強(qiáng)大,操作簡(jiǎn)單。
通過(guò)DevPartner對(duì)源代碼進(jìn)行分析發(fā)現(xiàn)無(wú)論是G.729還是G.723大部分運(yùn)算都集中在basic_op.c的函數(shù)中,basic_op.c里
面都是些基本運(yùn)算,L_mac(),L_mult(),L_add()和sature()又占用basic_op.c中的絕大部分運(yùn)算。所以優(yōu)化也應(yīng)該集
中在這幾個(gè)函數(shù)中。在basic_op.c有個(gè)溢出標(biāo)志位overflow,很多基本函數(shù)多對(duì)其判斷浪費(fèi)了很多時(shí)間,其實(shí)可以直接去掉,使用時(shí)直接判斷結(jié)
果時(shí)候?yàn)樽畲笾导纯芍朗欠褚绯觯瑢?duì)basic_op.c的函數(shù)采用MMX指令優(yōu)化,使用其飽和特性可以減掉很多判斷溢出的操作, |
|
|