前陣子實作了 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
參考資料
- tuts+ - Using a USB Audio Device With a Raspberry Pi
- 葉難 - Raspberry Pi測試音訊介面
- 天花板隨記 - Raspberry Pi 筆記(十一):音效設定與播放器
- eLinux.org - R-Pi Troubleshooting Sound
更新紀錄
- 2015/05/26 撰文。
- 2017/05/25 更新,加入 Raspbian Jessie 的 ALSA 設定檔修改方法。
想請問如果用藍芽喇叭 還需要使用所謂的USB音效卡嗎?
回覆刪除實做方面也是一樣嗎?
當然就不用了,藍牙走的是它自己的 APT-X、A2DP、AVRCP 之類的協定。
回覆刪除