MPEG音訊編碼實驗報告

2021-08-03 07:17:54 字數 2808 閱讀 2065

下圖為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 該多相濾波...