小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

G.729與G.723語(yǔ)音編碼介紹及優(yōu)化

 MarkG 2011-02-14
語(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)制編碼。
   參數(shù)編碼則是對(duì)數(shù)字模型的參數(shù)進(jìn)行求值,目前常用的是無(wú)損聲管離散時(shí)間模型,該模型綜合了人聲的最重要三個(gè)因素:聲門(mén),激勵(lì)和輻射。這三個(gè)因素都可以用數(shù) 學(xué)函數(shù)表達(dá)。再加上在語(yǔ)音信號(hào)的非均勻性和相關(guān)性,非均勻性表現(xiàn)在小幅度信號(hào)出現(xiàn)的概率較大,相關(guān)性表現(xiàn)在相鄰的兩個(gè)樣本點(diǎn)相關(guān)和相隔基音周期之間的兩個(gè) 樣本點(diǎn)也相關(guān)。線性預(yù)測(cè)就時(shí)利用了相關(guān)性從原來(lái)的語(yǔ)音信號(hào)計(jì)算出現(xiàn)在的信號(hào)。而且人在正常的交談中有50%的時(shí)間是靜音,只在聽(tīng)對(duì)方講話,語(yǔ)音檢測(cè)VAD 就是用來(lái)判斷是否是靜音,而柔和噪聲再生CNG就是用來(lái)產(chǎn)生一個(gè)“好聽(tīng)”的靜音傳給對(duì)方。

  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)。
   G.723也是ITU制定的,不過(guò)它是雙速率語(yǔ)音編碼,它可以工作在5.3kbps和6.3kbps兩個(gè)方式上,相應(yīng)分別采用代數(shù)碼激勵(lì)線性預(yù)測(cè)(ACELP)和多脈沖最大似能量化(MP-MLQ)。

    在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)化,使用其飽和特性可以減掉很多判斷溢出的操作,
下面給出一個(gè)加法的例子
Word16 add(Word16 var1,Word16 var2)
{
 _asm{
  movd mm0,var1;
  movd mm1,var2;
  paddsw mm0,mm1;
  movd eax,mm0;
  emms;
 }
}
   源代碼中太多的函數(shù)調(diào)用,比如L_mac就調(diào)用了L_mult和L_add函數(shù),如果直接把L_mult和L_add代碼填入L_mac中則可以省去很多 函數(shù)調(diào)用浪費(fèi)的時(shí)間,ITU的代碼中為了詳細(xì)的描述算法有很多類(lèi)似循環(huán)沒(méi)有合并,將其合并也可以提高效率,并且有些在循環(huán)體內(nèi)的運(yùn)算也可以提到循環(huán)體外, 對(duì)于用For()控制的循環(huán)次數(shù)最好使用參數(shù),這樣編譯器可以將循環(huán)解開(kāi)。
    因?yàn)楸救四芰途τ邢蓿瑑H僅是在源代碼的層面上對(duì)G.729和G.723進(jìn)行優(yōu)化,不過(guò)也取得了相當(dāng)可觀的效果,優(yōu)化后的效率比優(yōu)化前提高了一倍,如果再做更深層次的算法優(yōu)化相信會(huì)有更高的提升。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多