2015年9月28日 星期一

DeaBeef play music via USB DAC without resample

最近換成Linux 系統(Ubuntu 14.04)

希望能像Windows上foobar2K一樣能繞過系統混音輸出聲音,完全由外部的音效裝置處理音訊。

音樂錄音時,通常母源轉成CD後是以16bit 44100Hz 儲存,這是因為當初CD儲存空間有限,而犧牲一定的音質細節來縮減檔案大小。當然現在儲存的技術進步,有一小部份高音質檔案以24 ~32bit 96KHz 192KHz 格式販賣,不過一首歌可能就需要100MB以上的空間儲存。

一般來說內建音效僅支援到8bit~24bit 48000K~96000K。但常規來說購買的CD 44100K,音效卡並不支援這個頻率,而是經過系統重新取樣(Resample)後升頻成 48000K才輸出。

而高階音效裝置,具有高階演算法來重新取成48000K或更高,因此聲音就能更貼近自然。當然也避免系統資源消耗與電腦本身內部零件互相干擾的問題。

總之,找方法提升電腦播放的音質
上網查了資料,


1) Pulseaudio with Resample
簡單來說,利用 src-sinc-best-quality 高階演算法重新取樣音訊再輸出到裝置上。
但是這無法避免系統干擾又增加系統資源,並非我想要的。不過實作上確實有效,DAC確實能顯示24bit 96K,當作學習吧~

a)終端機中確認 目前裝置取樣率
pacmd list-sinks | grep sample
#sample spec: s16le 2ch 48000Hz

b)在Pulseaudio全域設定檔 (/etc/pulse/daemon.conf)
增加以下設定
resample-method = src-sinc-medium-quality
default-sample-format = s24le
default-sample-rate = 96000

c)關閉並重啟pulseaudio服務
pulseaudio -k
pulseaudio --start

d)終端機中確認 裝置取樣率
$ pacmd list-sinks | grep sample
#sample spec: s24le 2ch 96000Hz

http://r3dux.org/2013/12/how-to-enable-high-quality-audio-in-linux/

2)ALSA 改變輸出取樣率
中文說明沒興趣了解,大致上應該與1)類似手法
http://a8robot.blogspot.tw/2013/10/linuxwindowslubuntualsa.html
DeaDeef_ALSA_ouput_withoutresample

3)Without-resample and output
http://a8robot.blogspot.tw/2015/05/linux.html

該文章提到linux下音樂播放軟體,DeaBeeF。
本身就具有略過系統處理,直接輸出給音效裝置的設定。


輸出裝置改為USB DAC 備註without any conversions


取消ALSA再取樣功能 (也許不需要)

1.EQ 個人不愛用EQ調整,移除
2.Resample 音效處理都交給DAC當然用不上,移除

設定完,DeaBeef分別以16bit 44.1KHz 與 24bit 96KHz的檔案播放,USB DAC 辨認正確。

最後聽感確實增加些許細節,至於音質好壞就因人而異拉,畢竟除了DAC還需要好耳機好喇叭,以及乾淨電流。

最近看上Sony MDR Z7平衡設計的耳罩,但目前的裝置都不支援平衡輸出,還是止步吧!
避免買新玩具無性生殖出其他玩伴XD

2 則留言:

  1. 聽說 src-sinc-* 的演算法已經快要被拋棄了?
    因為他們說 speex-fixed-10 有著不亞於 src-sinc-best-quality 的效果,又同時消耗較少的 CPU 資源,然後又多了個叫 soxr-vhq 的演算法

    回覆刪除
  2. 更正,他們是說 speex-float-10,至於 speex-fixed-10 怎樣就不清楚了

    回覆刪除