mp3 檔案壓縮:到底錯失了什麼
![文章 文章](./styles/skyblue/imageset/icon_post_target.gif)
前一陣子發現可以把 音樂檔案放到自己常用的分析軟體中做一樣的分析
而且在聽 mp3, FLAC 的時候,總是疑神疑鬼,不知道聲音被搞成什麼德性
所以乾脆把音樂檔案放到軟體裡面,看音樂訊號的統計性質有沒有什麼差別
說穿了,就是視覺化的轉換,如果不確定聽起來怎樣,訊號看起來的差別也可以得到一些訊息
用的軟體 Matlab R2008a, Wavelet Toolbox
統計方法: Power Spectrum, Wavelet (morlet)
目標音樂檔案:Akiko Suwanai 的 Poeme 專輯第一首歌
不過因為做 Spectrum 的話,如果整首歌全做,不但訊號量太大,而且因為聲音訊號不是保持同樣頻率
所以做 spectrum 不太符合 periodic 的假設特性,因此我只讀其中兩秒 50-52 sec,來做分析
這次比較的是同一個音樂檔案,但是四種格式
*. WAV (很抱歉懶得找 CD 再轉一次,所以用 FLAC 轉成 WAV 代替,這個 FLAC 就是我自己從CD壓的)
這個代表參考訊號
以下三組是比較訊號
*. mp3 65 kbps (用 lame 3.98 beta6,從 FLAC 轉成mp3 再轉成 wav,以方便 Matlab 吃檔)
*. mp3 190 kbps (用 lame 3.98 beta6,從 FLAC 轉成mp3 再轉成 wav,以方便 Matlab 吃檔)
*. FLAC: 既然要比較 FLAC 而我這一次又沒有找原本的 WAV 檔案,所以我把 FLAC 轉成 WAV 再轉成 FLAC 反覆4次,最後存成 WAV 格式
首先看 power spectrum,這個方法簡單來說就是把訊號的 variance 分佈到三角函數的頻率上面,可以看到不同的訊號平均來說,再哪一個頻率上面擺幅/能量最大 (假設基本訊號是正弦波)。
比較 WAV 和 FLAC
原本的訊號可以看到(藍色代表wav 檔案/參考訊號,紅色代表 flac 檔案),兩者幾乎一樣,看不出來有什麼差別,再 600- 1100 Hz 中間有明顯的峰值。
這是 PSD (Power Spectral Density Function), 橫軸是 對數尺度 (log scale) 的頻率,縱軸是 對數尺度 (log scale) 的能量密度
![圖檔](http://farm4.static.flickr.com/3444/3383972556_94bfe1b19a.jpg)
另一種畫法,Variance Preserving Spectrum
這種畫法基本上跟 PSD 差不多,不過 PSD 會有放大低頻訊號的感覺,這種 Variance Preserving Spectral 縱軸是線性尺度能量,而且積分代表頻率內的 variance。
![圖檔](http://farm4.static.flickr.com/3552/3383222885_31d914e331.jpg)
可以比較清楚看到峰值
而比較 190 kbps MP3 和 wav 檔案
基本上差別不太大,峰值的位置都差不多一樣,最低頻和最高頻的頻譜有點差別,不過都在人耳或器材的響應頻率之外,所以應該沒什麼差。BTW, 為了測試我的器材和耳朵的頻率範圍,我也用 sin 訊號產生了 wav 音訊檔,果然 20Hz 和 20 kHz 我都聽不到,50Hz 和 10 kHz 就都可以聽到了 (器材是NB 耳機輸出搭配 AKG K14P)。
![圖檔](http://farm4.static.flickr.com/3475/3383158181_f3415d72b6.jpg)
![圖檔](http://farm4.static.flickr.com/3578/3383222833_54792438b7.jpg)
而比較 65 kbps MP3 和 wav 檔案
可以說是天差地遠,峰值的位置都差很多,雜訊也整個冒出來,聽起來會很糊!? 假的訊號峰值還比原來的訊號強。
![圖檔](http://farm4.static.flickr.com/3173/3383158219_c02e508e77.jpg)
![圖檔](http://farm4.static.flickr.com/3261/3383222867_b4b431f021.jpg)
而且在聽 mp3, FLAC 的時候,總是疑神疑鬼,不知道聲音被搞成什麼德性
所以乾脆把音樂檔案放到軟體裡面,看音樂訊號的統計性質有沒有什麼差別
說穿了,就是視覺化的轉換,如果不確定聽起來怎樣,訊號看起來的差別也可以得到一些訊息
用的軟體 Matlab R2008a, Wavelet Toolbox
統計方法: Power Spectrum, Wavelet (morlet)
目標音樂檔案:Akiko Suwanai 的 Poeme 專輯第一首歌
不過因為做 Spectrum 的話,如果整首歌全做,不但訊號量太大,而且因為聲音訊號不是保持同樣頻率
所以做 spectrum 不太符合 periodic 的假設特性,因此我只讀其中兩秒 50-52 sec,來做分析
這次比較的是同一個音樂檔案,但是四種格式
*. WAV (很抱歉懶得找 CD 再轉一次,所以用 FLAC 轉成 WAV 代替,這個 FLAC 就是我自己從CD壓的)
這個代表參考訊號
以下三組是比較訊號
*. mp3 65 kbps (用 lame 3.98 beta6,從 FLAC 轉成mp3 再轉成 wav,以方便 Matlab 吃檔)
*. mp3 190 kbps (用 lame 3.98 beta6,從 FLAC 轉成mp3 再轉成 wav,以方便 Matlab 吃檔)
*. FLAC: 既然要比較 FLAC 而我這一次又沒有找原本的 WAV 檔案,所以我把 FLAC 轉成 WAV 再轉成 FLAC 反覆4次,最後存成 WAV 格式
首先看 power spectrum,這個方法簡單來說就是把訊號的 variance 分佈到三角函數的頻率上面,可以看到不同的訊號平均來說,再哪一個頻率上面擺幅/能量最大 (假設基本訊號是正弦波)。
比較 WAV 和 FLAC
原本的訊號可以看到(藍色代表wav 檔案/參考訊號,紅色代表 flac 檔案),兩者幾乎一樣,看不出來有什麼差別,再 600- 1100 Hz 中間有明顯的峰值。
這是 PSD (Power Spectral Density Function), 橫軸是 對數尺度 (log scale) 的頻率,縱軸是 對數尺度 (log scale) 的能量密度
![圖檔](http://farm4.static.flickr.com/3444/3383972556_94bfe1b19a.jpg)
另一種畫法,Variance Preserving Spectrum
這種畫法基本上跟 PSD 差不多,不過 PSD 會有放大低頻訊號的感覺,這種 Variance Preserving Spectral 縱軸是線性尺度能量,而且積分代表頻率內的 variance。
![圖檔](http://farm4.static.flickr.com/3552/3383222885_31d914e331.jpg)
可以比較清楚看到峰值
而比較 190 kbps MP3 和 wav 檔案
基本上差別不太大,峰值的位置都差不多一樣,最低頻和最高頻的頻譜有點差別,不過都在人耳或器材的響應頻率之外,所以應該沒什麼差。BTW, 為了測試我的器材和耳朵的頻率範圍,我也用 sin 訊號產生了 wav 音訊檔,果然 20Hz 和 20 kHz 我都聽不到,50Hz 和 10 kHz 就都可以聽到了 (器材是NB 耳機輸出搭配 AKG K14P)。
![圖檔](http://farm4.static.flickr.com/3475/3383158181_f3415d72b6.jpg)
![圖檔](http://farm4.static.flickr.com/3578/3383222833_54792438b7.jpg)
而比較 65 kbps MP3 和 wav 檔案
可以說是天差地遠,峰值的位置都差很多,雜訊也整個冒出來,聽起來會很糊!? 假的訊號峰值還比原來的訊號強。
![圖檔](http://farm4.static.flickr.com/3173/3383158219_c02e508e77.jpg)
![圖檔](http://farm4.static.flickr.com/3261/3383222867_b4b431f021.jpg)