取樣頻率轉換精確度測試 1(SRC TEST 1)

討論MP3、WAV、MIDI、WMA甚至其他數位音訊的播放、製作、轉換等。

版主: DearHoney

TMNEXT
神人
文章: 271
註冊時間: 2002-01-02 08:00
來自: 人畜同樂促進會

文章 TMNEXT »

一般都是 48/32KHz 轉 44KHz
剛好看到有人有需要 44KHz --> 48KHz
所以就先做了 44KHz 轉 48KHz 的測試
FFT 分析軟體是 SpectraLab V4.32.13
(V4.32.16 很怪異,算出來的 THD+N 竟然還會比 THD 還小,
我覺得完全不可信。V4.32.17 我這邊裝不上去,所以只好用
n 年前的 4.32.13 版。我想準確度上應該沒什麼問題)
FFT size 是 32768
頻率解析度是 1.346Hz

測試對象軟體如下
1. ssrc-1.29
2. Cool Edit Pro V2.00(2095.0)
3. Cool Edit Pro V1.2a
4. GoldWave V4.26
5. samplitude producer 2496 V6.03
6. Sonic Foundry Sound Forge V5.0f(Build 259)
7. Windows System Codec 98
8. Windows System Codec XP
9. Total Recorder V3.3
10.Steinberg WaveLab V4.0c(Build 95)

差距很小的圖,把圖抓下來用 ACDSee 反覆切換著看會比較清楚

原始 1KHz Sine Wave THD 0.00080% THD+N 0.0027% SNR 91.277dB
圖檔
ssrc 2-pass THD 0.00090% THD+N 0.0101% 79.939dB
圖檔
速度很快,結果也很好

Cool Edit Pro 2.0 品質 預設值 150 THD 0.00085% THD+N 0.0106% SNR 79.468dB
圖檔
很奇怪,左右兩聲道算出來的結果會不一樣
(上圖只有貼右聲道,左聲道的數據沒列。一般兩聲道算出來應該都一樣)
分析結果發現,Cool Edit Pro 2.0 會在單純 SRC 的時候也加上 dithering :-.-:
以致於 Cool Edit Pro 2.0 的總諧波失真很低(比 1.2a 版還低),
但是總諧波失真 + Noise 的結果卻較 1.2a 版高,SNR 訊噪比也較差的現象。
(總諧波失真 THD,搜尋訊號中音量最大的頻率 Peak,
然後計算此一頻率的諧波總和的音量,兩者的比。
THD+N,除了諧波成分之外,再加上訊號中其他的 Noise,兩者的比。
一般整體表現看 THD+N 就好了,會列 THD 的數據只是說明這個現象)
計算速度較 1.2a 版慢一點。

Cool Edit Pro 1.2a 品質 預設值 150 THD 0.00088% THD+N 0.101% SNR 79.949dB
圖檔
GoldWave THD 0.00084% THD+N 0.0766% SNR 62.314dB
圖檔
samplitude 2496 品質 Ultra high THD 0.00087% THD+N 0.0104% SNR 79.624dB
圖檔
Sound Forge 品質 最高 THD 0.00335% THD+N 0.0109% SNR 79.269dB
圖檔
Windows System Codec 98(XP 的結果完全一樣)THD 0.09644% THD+N 4.1386% SNR 27.663dB
圖檔
喔,破紀錄的爛 :P

Total Recorder THD 0.00084% THD+N 0.0788% SNR 62.069dB
圖檔
WaveLab THD 0.00173% THD+N 0.0698% SNR 63.124dB
圖檔
待續...
TMNEXT
神人
文章: 271
註冊時間: 2002-01-02 08:00
來自: 人畜同樂促進會

文章 TMNEXT »

也許有人會覺得奇怪,THD+N 的 Noise 在哪裡,圖上都看不出來,如 Cool Edit Pro 2.0 增加的 Noise 圖上都看不太到,只有看到明顯的諧波失真。
因為很多 Noise 都在 -120dB 以下,所以在圖上看不到,圖上的範圍只取到 120dB。只取這樣是為了方便比較,範圍太大沒有底部的比較基準會不太好判斷分別。
THD 會造成音色變化。
上面的 THD 測試數據沒有使用加權(如 A Weighting)。
測試訊號的頻率有針對 FFT size 做最佳化,說明可以參照這裡
http://www.io.com/~kazushi/audiocard/fft.html

追加 SB Live! 的硬體 SRC THD 0.00234% THD+N 0.0123% SNR 78.200dB
圖檔
為了比較好的聲音品質,避免音效卡硬體 SRC 的摧殘,可以用軟體先把所有的聲波檔轉成 48KHz 之後再播放,但是你選擇用來轉換 48KHz 的軟體,千萬不要比 SB Live! 的硬體轉換還爛啊 :-.-:

追加 Windows XP 的 KMixer 的軟體 SRC THD 0.04527% THD+N 0.2968% SNR 50.551dB
圖檔
嗯,微軟嚴重誇大不實.... :D
經過測試發現,除非你將 DirectSound 的硬體加速完全關掉,否則在 Winamp 裡選 waveOut 或 DirectSound Output,都會跳過 KMixer,直接使用 Live! 的硬體 SRC。這是 Live! 的 WDM Driver,其他音效卡如何設計就不清楚了。

圖上極低頻部分(3Hz 附近)的雜訊是 DC Offset,請予以忽略。

待續...
<!-- Edit Notice Start -->

<font size=-1>[ 這篇文章在 2002-04-23 01:11 被 TMNEXT 編輯過 ]</font><!-- Edit Notice End -->
初學者
文章: 37
註冊時間: 2002-02-07 08:00
來自: 香港特別行政區

文章 »

<!-- BBCode Quote Start --><FONT COLOR=GREEN>

嗯,微軟嚴重誇大不實.... :D
經過測試發現,除非你將 DirectSound 的硬體加速完全關掉,否則在 Winamp 裡選 waveOut 或 DirectSound Output,都會跳過 KMixer,直接使用 Live! 的硬體 SRC。這是 Live! 的 WDM Driver,其他音效卡如何設計就不清楚了。

圖上極低頻部分(3Hz 附近)的雜訊是 DC Offset,請予以忽略。

待續...

</FONT><!-- BBCode Quote End -->

有個問題想問一下啊...我吧DirectSound的硬硬體加速完全關掉後
為什麼我在Wimamp選DirectSound Output時會有很大雜音呢?
用WaveOut是不會的啊!
可以解答一下嗎? ?_?
我是用SB Live 5.1的
<!-- Edit Notice Start -->

<font size=-1>[ 這篇文章在 2002-04-23 01:54 被 吉 編輯過 ]</font><!-- Edit Notice End -->
TMNEXT
神人
文章: 271
註冊時間: 2002-01-02 08:00
來自: 人畜同樂促進會

文章 TMNEXT »

<!-- BBCode Quote Start --><FONT COLOR=GREEN>

有個問題想問一下啊...我吧DirectSound的硬硬體加速完全關掉後
為什麼我在Wimamp選DirectSound Output時會有很大雜音呢?
用WaveOut是不會的啊!
可以解答一下嗎? ?_?
我是用SB Live 5.1的

</FONT><!-- BBCode Quote End -->
因為當你把硬體加速完全關掉,又使用 DirectSound Output 時,
會使用 KMixer 的軟體 SRC 轉換,而這個軟體轉換如上圖所見
<font size="6">很爛!! :P </font>

所以你會聽到一堆雜音。

有四種情況
硬體加速關閉
waveOut --> 會使用硬體 SRC
DirectSound Output --> KMixer

硬體加速開啟
waveOut --> 硬體 SRC
DirectSound Output --> 硬體 SRC,但是有 fading 的效果,還沒研究

四種情況相位皆為反相。
以上是 Live! 的情形。
TMNEXT
神人
文章: 271
註冊時間: 2002-01-02 08:00
來自: 人畜同樂促進會

文章 TMNEXT »

原始 44KHz implus Wave 注意 最右邊是 22KHz
圖檔
ssrc 2-pass 48KHz 注意 最右邊是 24KHz
圖檔
有做 post/anti-aliasing filter,將不該有的 22KHz 以上的部分濾掉

Cool Edit Pro 2.0
圖檔
Cool Edit Pro 1.2a
圖檔
GoldWave
圖檔
沒有 filtering

samplitude 2496
圖檔
Sound Forge
圖檔
Windows System Codec 98(XP 的結果完全一樣)
圖檔
沒有 filtering

Total Recorder
圖檔
[b12]
WaveLab
圖檔
JY
神人
文章: 827
註冊時間: 2001-12-06 08:00
來自: RF雜訊事記
聯繫:

文章 JY »

TMNEXT....
真是對不起您... 之前的測試失敗後到現在還是沒有進展...
不知道您有沒有看到我發給您的簡訊...
其中的問題不知能否解決?
TMNEXT
神人
文章: 271
註冊時間: 2002-01-02 08:00
來自: 人畜同樂促進會

文章 TMNEXT »

<!-- BBCode Quote Start --><FONT COLOR=GREEN>
TMNEXT....
真是對不起您... 之前的測試失敗後到現在還是沒有進展...
不知道您有沒有看到我發給您的簡訊...
其中的問題不知能否解決?
</FONT><!-- BBCode Quote End -->
有,我有回您的簡訊,您沒有收到嗎?
貼在下面好了:

=============
JY 兄:

嗯,好奇怪,我沒有用過您說的那張卡,不知道這是什麼情形。
不能錄 32bit 是正常的,因為 Driver 不支援(也沒有必要支援,因為沒有 32bit 的 ADC),您只要以 16bit 錄音就可以了。
左右聲道不平衡,好奇怪的設計 ^^;
您的系統上播那個 24bit -100dB 的 Wave 檔沒問題吧?(一定要用 Winamp 播,目前其他程式都不行)
就一邊播然後用 Cool Edit 選 Wave in 錄起來就可以了。
音量控制那邊錄音來源請只選 Wave(或是寫中文 聲波、聲音 或是 stereo out ...etc)。

因為播放的 -100dB 的聲波檔超過 錄音的 16bit 所能夠儲存的範圍(16bit 只能儲存到 -96dB,0dB 是最大),所以通常來說,您錄到的會是靜音,完全沒有任何訊號的 16bit Wave 檔。
但是現在 Winamp 藉由送出一種特殊的 Wave 格式、檔案結構 的 串流 給系統,所以系統會接受原來的 24bit 資料,然後經過一個稱為 KMixer 的軟體混音器(檔案名稱為 kmixer.sys)處理,藉由增加一點雜訊,把原始 -100dB 的資料塞進僅僅 16bit 的 Wave 檔裡(這個動作叫做 dithering,可以參考 LukeLo 大大寫的那篇漫談數位音訊)。
因為經過這樣的處理,所以您錄下來的 16bit Wave 就不再會是靜音,而有原來 -100dB 的訊號和增加的雜訊。
實驗的目的就是想請您錄下這個增加的雜訊的 Wave 檔給我,我分析這些雜訊的" 樣式 " 是不是同一個,並且分析這些 dithering 的優劣好壞。

大概就是這樣 ^^;
至於錄音,我不曉得您那張卡的情況,如果還是怪怪的,又找不出原因,我想那就算了沒關係,以後有機會我再做實驗好了,還是謝謝您的幫忙 ^_^
JY
神人
文章: 827
註冊時間: 2001-12-06 08:00
來自: RF雜訊事記
聯繫:

文章 JY »

剛剛看到了.... 真是麻煩了....
我會在試試看的...
掛在DH這裡太久沒Refresh網頁...
私人訊息進來了都不知道....^^||
TMNEXT
神人
文章: 271
註冊時間: 2002-01-02 08:00
來自: 人畜同樂促進會

文章 TMNEXT »

<!-- BBCode Quote Start --><FONT COLOR=GREEN>
剛剛看到了.... 真是麻煩了....
我會在試試看的...
掛在DH這裡太久沒Refresh網頁...
私人訊息進來了都不知道....^^||
</FONT><!-- BBCode Quote End -->
不會,那就麻煩您了,加油 ^_^
TMNEXT
神人
文章: 271
註冊時間: 2002-01-02 08:00
來自: 人畜同樂促進會

文章 TMNEXT »

呼~~ 我一定是太閒了....

關於 Cool Edit Pro 2.0 轉換一定會加上 Dithering 一事,我繼續研究後發現,原來不是 Syntrillium Software 白爛,是我白爛,忘了把 Options --> Settings --> Data --> Dither Transform Results(increases dynamic range) 預設的打勾取消,所以才造成有 Dithering 的結果。
(1.2a 版的設定是我很久以前就改好的,太久沒用,根本忘了有這個選項)

生成一個 44KHz 數位靜音的 Wave 檔

頻譜上當然沒有任何訊號

經過 Cool Edit Pro 2.0 SRC 轉換成 48KHz(沒改之前)

可以看到 Dithering 的雜訊

將打勾取消後的頻譜

正常

但是 Cool Edit Pro 2.0 版將 Dither 取消以後,會轉換出很奇怪的東西
1KHz Sine Wave THD 0.00254% THD+N 0.0105% SNR 79.535dB
結果變得很差,和上面未取消前的圖比較,可以發現諧波失真的頻率峰值明顯變得更高了(把圖抓下來切換著看),而 Noise 減少,THD+N 變得稍稍好一點。

再者,如果把開啟檔案時轉換成 32bit 的選項打勾,在 32bit 的情況下進行 SRC 轉換,輸出成 16bit,而且還是不使用 Dither,則結果會變成
THD 0.00088% THD+N 0.101% SNR 79.950
和 1.2a 版的數據非常接近

1.2a 版如果如法炮製的話(以 32bit 開啟),出來的數據是
THD 0.00084% THD+N 0.101% SNR 79.946dB

不過我實在搞不懂為什麼會有這些差異 :-.-:
(有沒有先轉成 32bit 有差嗎?Cool Edit 內部所有轉換和效果器不是本來就以 32bit 浮點數在運算?)

還有就是有些差異很小的數據,我相信人耳應該聽不出來,不用太在意,總之 Cool Edit Pro 和 ssrc 的轉換品質都很不錯 :)
[b08]
回覆文章