Raspberry Pi 的基礎 - 從 USB 音效卡輸出品質更好的聲音

by 5月 26, 2015 2 意見        

前陣子實作了 Raspberry Pi 的應用 - iOS & OSX 的好朋友,AirPlay 無線喇叭,成功的讓 iPhone 連上 Raspberry Pi 來放音樂。

不過,我們用的是內建 3.5mm 接頭,播放的效果就只是在「有聲音」的階段,那是不是可以用外接 USB 音效卡的方式,讓音質有更好的提升呢?
最後更新:2017/05/25

事前準備

  • Raspberry Pi Model A / A+ / B / B+。
  • Raspbian 作業系統。
  • USB 音效卡或 USB DAC
  • 喇叭。

調整音效輸出介面


先確認 USB 音效卡是不是被偵測到了,可以看到這邊用的是 C-Media 晶片。
lsusb

這是因為系統已經安裝了 ALSA (Advanced Linux Sound Architecture) 的音效驅動程式 alsa-utils。

card 0 是內建的 BCM2835 晶片,device 0 是 3.5mm,device 1 是 HDMI,而 card 1 就是外接的 USB 音效卡。
aplay -l

Raspbian Jessie 及 Stretch
編輯 /usr/share/alsa/alsa.conf。
sudo vi /usr/share/alsa/alsa.conf

找到
defaults.ctl.card 0
defaults.pcm.card 0
把 0 改成 1。

Rsapbian Wheezy
編輯 ALSA 的設定檔。
sudo vi /etc/modprobe.d/alsa-base.conf

找到「options snd-usb-audio index=-2」,在最前面加上「#」將這行註解掉。

重新開機,讓 ALSA 的設定值生效。
sudo reboot

這樣子就可以把外接的 USB 音效卡改成預設的音效輸出介面 card 0 了。


調整音量


我們直接用工具程式來調整。
alsamixer

按「F1」會顯示所有按鍵的操作方法。

按「↑」或「↓」就可以調整音量的大小,調整完畢之後按「ESC」就會自動儲存設定值。


播放測試


在 /usr/share/sounds/alsa 目錄下有一些 Wave 檔可以用來播放。
aplay /usr/share/sounds/alsa/Front_Center.wav

在 /usr/share/scratch/Media/Sounds/ 目錄下,也還有很多 Wave 檔。
aplay /usr/share/scratch/Media/Sounds/Vocals/Singer1.wav
aplay /usr/share/scratch/Media/Sounds/Human/Laugh-female.wav
aplay /usr/share/scratch/Media/Sounds/Electronic/ComputerBeeps1.wav

或是用測試指令,它會依左聲道、右聲道的順序反覆播放,可以按「Ctrl+C」來停止。
speaker-test -c 2 -t wav


參考資料


更新紀錄

  • 2015/05/26 撰文。
  • 2017/05/25 更新,加入 Raspbian Jessie 的 ALSA 設定檔修改方法。

Heracles Jam,江湖人稱「海公公」

IT 技術家 - 創站部落客

一個常用 Windows、慣用 macOS、愛用 Linux 的 3C 阿宅
現職 MIS / 業界講師 / 資訊顧問 / 部落客

2 則留言 :

  1. 想請問如果用藍芽喇叭 還需要使用所謂的USB音效卡嗎?
    實做方面也是一樣嗎?

    回覆刪除
  2. 當然就不用了,藍牙走的是它自己的 APT-X、A2DP、AVRCP 之類的協定。

    回覆刪除