下圖為mpeg音訊編碼layerii流程圖:
通過子帶分析濾波器組使訊號具有高的時間解析度,確保在短暫衝擊訊號情況下,編碼的聲音頻號具有足夠高的質量。
將pcm樣本變換到32個子帶的頻域訊號:如果輸入的取樣頻率為48khz ,那麼子帶的頻率寬度為48/ (2*32 )=0.75hz
該多相濾波器組為如下圖:
計算訊號中不可聽覺感知的部分。
時頻分析的矛盾:
1、通過子帶分析濾波器組使訊號具有高的時間解析度,確保在短暫衝擊訊號情況下,編碼的聲音頻號具有足夠高的質量
2、又可以使訊號通過fft運算具有高的頻率解析度,因為掩蔽閾值是從功率譜密度推出來的。
在低頻子帶中,為了保護音調和共振峰的結構,就要求用較小的量化階、較多的量化級數,即分配較多的位數來表示樣本值。而話音中的摩擦音和類似雜訊的聲音,通常出現在高頻子帶中,對它分配較少的位數。
將樣本變換到頻域->確定聲壓級別->考慮安靜時閾值->將音訊訊號分解成「樂音(tones)」 和「非樂音/雜訊」部分:因為兩種訊號的掩蔽能力不同->音調和非音調掩蔽成分的消除->單個掩蔽閾值的計算->全域性掩蔽閾值的計算->每個子帶的掩蔽閾值->計算每個子帶訊號掩蔽比(signal-to-maskratio, smr)
使整幀和每個子帶的總雜訊—掩蔽比最小。
演算法:迴圈,直到沒有位元可用:
1、對每個子帶計算掩蔽-雜訊比mnr,mnr = snr –smr (db)
2、對最低mnr的子帶分配位元,使獲益最大的子帶的量化級別增加一級
3、重新計算分配了更多位元子帶的mnr
理解程式設計的整體框架
理解感知音訊編碼的設計思想
兩條線
時-頻分析的矛盾!
理解心理聲學模型的實現過程
臨界頻帶的概念
掩蔽值計算的思路
理解位元速率分配的實現思路
輸出音訊的取樣率和目標位元速率
選擇某個資料幀,輸出
該幀所分配的位元數
該幀的比例因子
該幀的位元分配結果
#ifdef newencode
sf_transmission_pattern (scalar, scfsi, &frame);
main_bit_allocation_new (smr, scfsi, bit_alloc, &adb, &frame, &glopts);
//main_bit_allocation (smr, scfsi, bit_alloc, &adb, &frame, &glopts);
if (error_protection)
crc_calc (&frame, bit_alloc, scfsi, &crc);
write_header (&frame, &bs);
//encode_info (&frame, &bs);
if (error_protection)
putbits (&bs, crc, 16);
write_bit_alloc (bit_alloc, &frame, &bs);
//encode_bit_alloc (bit_alloc, &frame, &bs);
write_scalefactors(bit_alloc, scfsi, scalar, &frame, &bs);
//encode_scale (bit_alloc, scfsi, scalar, &frame, &bs);
subband_quantization_new (scalar, *sb_sample, j_scale, *j_sample, bit_alloc,
*subband, &frame);
//subband_quantization (scalar, *sb_sample, j_scale, *j_sample, bit_alloc,
// *subband, &frame);
write_samples_new(*subband, bit_alloc, &frame, &bs);
//sample_encoding (*subband, bit_alloc, &frame, &bs);
#else
/*add by yangyulan*/
if(framenum==200)
{ int k,t,i;
fprintf(result,"取樣率=%.1f khz\n",s_freq[header.version][header.sampling_frequency]);
fprintf(result,"目標位元速率=%d kbps\n", bitrate[header.version][header.bitrate_index]);
fprintf(result,"第%d幀\n",framenum);
fprintf(result,"可用位元數=%d\n",adb);
fprintf(result,"比例因子:\n");
實驗報告6 MPEG音訊編碼
主要利用了心理聲學模型 一 多相濾波器組 二 量化和編碼 對各個子帶每12個樣點進行一次比例因子計算。先定出12個樣點中絕對值的最大值。查比例因子表中比這個最大值大的最小值作為比例因子。用6位元表示。第2層的一幀對應36個子帶樣值,是第1層的三倍,原則上要傳三個比例因子。為了降低比例因子的傳輸碼率,...
MPEG音訊編碼
一.實驗原理 1.多項濾波器組 用來分割子帶,將pcm樣本變換到32個子帶的頻域訊號 2.量化編碼 1 比例因子的選取及編碼 對各個子帶每12個樣點進行一次比例因子計算。先定出12個樣點中絕對值的最大值。查比例因子表中比這個最大值大的最小值作為比例因子。用6位元表示。第2層的一幀對應36個子帶樣值,...
資料壓縮 實驗六 MPEG音訊編碼實驗
下圖為mpeg音訊編碼layerii流程圖 32個子帶濾波器組 通過子帶分析濾波器組使訊號具有高的時間解析度,確保在短暫衝擊訊號情況下,編碼的聲音頻號具有足夠高的質量。將pcm樣本變換到32個子帶的頻域訊號 如果輸入的取樣頻率為48khz 那麼子帶的頻率寬度為48 2 32 0.75hz 該多相濾波...