框架圖:
計算訊號中不可聽覺感知的部分(計算雜訊遮蔽效應)
mpeg-1定義了兩種模型。
心理聲學模型1:
計算複雜度低,但對假設使用者聽不到的部分壓縮太嚴重
心理聲學模型2:
1.將樣本變換到頻域
32個等分的子帶訊號並不能精確地反映人耳的聽覺特性。 引入fft補償頻率解析度不足的問題。
模型1:採用512 (layer i) 或1024 (layers ii and
iii)樣本視窗
2.確定聲壓級別
3.考慮安靜時閾值
4.將音訊訊號分解成「樂音」和「非樂音/雜訊」部分(因為兩種訊號的掩蔽能力不同)
5.音調和非音調掩蔽成分的消除
6.單個掩蔽閾值的計算
7.全域性掩蔽閾值的計算
8.每個子帶的掩蔽閾值
9.計算每個子帶訊號掩蔽比,並將smr傳遞給編碼單元
根據心理聲學模型的計算結果,為每個子帶訊號分配位元數
layer i 編碼:位元速率分配
位元分配過程:
演算法:使整幀和每個子帶的總雜訊—掩蔽比最小
產生mpeg-1相容的位元流。
幀結構:
縮放因子:每個子帶的3個組盡可能共用縮放因子
量化:
layer ii:
裝幀:
輸出音訊的取樣率和目標位元速率
在m2aecn.c檔案中的print_config()函式中有取樣率和目標位元速率的輸出
fprintf (
stderr
,"input file : '%s' %.1f khz\n"
,(strcmp (inpath,
"-")
? inpath :
"stdin"),
s_freq[header-
>version]
[header-
>sampling_frequency]);
//輸出檔案路徑和音訊取樣率
fprintf (
stderr
,"output file: '%s'\n"
,(strcmp (outpath,
"-")
? outpath :
"stdout"))
;//輸出檔案路徑
fprintf (
stderr
,"%d kbps "
, bitrate[header-
>version]
[header-
>bitrate_index]);
//音訊取樣率
根據提示在命令列視窗輸入檔案名字,得到輸出結果:
可知,音訊取樣率為44.1khz,目標位元速率為192kbps。
輸出到txt檔案中:
fprintf
(output,
"音訊取樣率:%.1fkhz \r\n"
, s_freq[header.version]
[header.sampling_frequency]);
fprintf
(output,
"目標位元速率:%dkbps \r\n"
, bitrate[header.version]
[header.bitrate_index]
);
輸出某個資料幀的資訊在迴圈前開啟輸出資訊的檔案
file* output =
fopen
("output.txt"
,"wb");
while
(get_audio (musicin, buffer, num_samples, nch,
&header)
>
0)
if
(framenum==2)
//輸出比例因子
if(framenum ==2)
fprintf
(output,
"\r\n");}}}
//位元分配結果
if(framenum ==2)
}}
輸出的txt檔案:
資料壓縮 MPEG音訊編碼
一.實驗原理 2.mpeg 1音訊編碼器框架圖 多相濾波器組 polyphasefilter bank 將pcm 樣本變換到 32個子帶的頻域訊號 如果輸入的取樣頻率為 48khz 那麼子帶的頻率寬度為 48 2 32 0.75hz 心理聲學模型 psychoacousticmodel 計算訊號中不...
資料壓縮實驗六 MPEG音訊編碼
mpeg 1 audio layerii編碼器原理 對各個子帶每12個樣點進行一次比例因子計算。先定出12個 樣點中絕對值的最大值。查比例因子表中比這個最大值大的 最小值作為比例因子。用6位元表示。第2層的一幀對應36個子帶樣值,是第1層的三倍,原 則上要傳三個比例因子。為了降低比例因子的傳輸碼率,...
資料壓縮 實驗六 MPEG音訊編碼實驗
下圖為mpeg音訊編碼layerii流程圖 32個子帶濾波器組 通過子帶分析濾波器組使訊號具有高的時間解析度,確保在短暫衝擊訊號情況下,編碼的聲音頻號具有足夠高的質量。將pcm樣本變換到32個子帶的頻域訊號 如果輸入的取樣頻率為48khz 那麼子帶的頻率寬度為48 2 32 0.75hz 該多相濾波...