g729的長時後置濾波,最後還有一些細節處理
會再次公升抽樣,用乙個129的樣點對激勵進行公升抽樣,並與search_del的公升抽樣進行比較,哪個相關**取哪個
/* filtering with long filter */
compute_ltp_l(ptr_sig_cadr, ltpdel, phase, ptr_sig_pst0,
&num2_gltp, &den2_gltp, &sh_num2, &sh_den2);//lsc 相同的延遲,用129個樣點的插值濾波器重新計算
接來是計算短時後置濾波器的衝激響應的自相關係數rh(1),
/* controls short term pst filter gain and compute parcor0 */
calc_st_filt(apond2, apond1, &parcor0, sig_ltp_ptr);//lsc 放大訊號,並計算 r,並將sig_ltp_ptr進行放大
完成短時後置濾波
/* 1/a(gamma1) filtering, mem_stp is updated */
syn_filt(apond1, sig_ltp_ptr, sig_ltp_ptr, l_subfr, mem_stp, 1);//lsc 再次濾波(分母),還原了訊號,這樣就完成了短時後置濾波
做傾斜補償濾波
/* tilt filtering */
filt_mu(sig_ltp, sig_out, parcor0);//lsc 傾斜補償濾波
傾斜補償濾波處理,依據基本與g723的相似,但細節略有不同
g723對頻譜能量的判斷是根據感知加權後的語音頻號相關性做出來的
g729則不同,是根據 "反感知加權濾波"(姑且這麼稱呼吧) 的衝激響應相關性做出來的
所以g729的 傾斜補償濾波的調節機制正好與 g723的相反
先回顧一下g723的調節機制 感知加權的語音頻號 自相關 r(1)/r(0) 當r(1)/r(0) 接近於1的時候,說明高頻的分量可能較低,對應的傾斜補償濾波器是乙個高通濾波器,反之,如果接近於-1,則是乙個低通濾波器
但g729是基本衝激響應的相關性的即 rh(1)/rh(0) 即接近於1的時候,說明的是高頻分量較高,對應的傾斜補償是乙個"低通濾波器"(從傾斜補償濾波器的構造,可以看出頻譜的幅度總是大於1的,或者說是乙個低頻高大器更恰當)
反之,rh(1)/rh(0)接近於-1時,則說明高頻分量低,就要放大高頻
原因 判斷的依據是 "反感知加權濾波器" 的衝激響應,它與解碼的語音頻號的頻譜分布恰恰是相反的,所以才會有以上的結論
觀察itu文件的4.2.3節,式(86) 求它在單位圓上的頻譜幅度,自然就知道它是乙個頻譜放大器
最後,根據訊號的差異,做乙個增益處理
/* gain control */
scale_st(signal_ptr, sig_out, &gain_prec);
//lsc 重構後的訊號,與做了後置濾波處理的訊號 算出乙個比列值,然後依次放大sig_out的每個取樣
//分別對 sig_in sig_out進行求和,然後按比例混合迭代,求增益
至此g729編譯碼分析完畢
g729原始碼分析 11 後置濾波處理 二
g729的長時後置濾波,最後還有一些細節處理 會再次公升抽樣,用乙個129的樣點對激勵進行公升抽樣,並與search del的公升抽樣進行比較,哪個相關 取哪個 filtering with long filter compute ltp l ptr sig cadr,ltpdel,phase,pt...
g729原始碼分析 9 g729 解碼
現在來分析g729的解碼.從g729的測試 看出來,解碼的過程被清晰地分成了兩個部分.第一部分,就解碼出lpc 係數與激勵,合成語音.第二部分,進行感加權,傾斜補償 這些與g723的處理是極其類似的,少了靜音壓縮,這樣就少了一大塊要分析的 了 先來看第一部分,也就是合成語音的部分 decod ld8...
g729原始碼分析 7 增益量化
現在來分析g729的增益量化,這裡包含兩個增益,乙個是自適應碼本的增益gp,乙個是固定碼本的增益gc 由於自適應碼本與固定碼本已經被搜尋出來了,就可以根據這兩級碼本,與反量化的az係數進行卷積,得到解碼的語音頻號 包含未知變數gc與gp 利用這個解碼的語音頻號與目標語音頻號方差最小為準則,在增益碼本...