はじめに
Raspberry Pi の音声入出力周りを調べてたので,超簡単に備忘を書いておく.
ALSA (Advanced Linux Sound Architecture)
AlsaProject
Raspi では音声入出力に ALSA という仕組みを使っている.ALSA の中身は結構複雑そうなので割愛.PulseAudio との関係も割愛.
今回の環境は次の通り.
$ cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
音声出力設定
スピーカー (PLAYBACK) デバイスを確認する.これは USB マイクだけを接続している状態.HDMI ケーブルが挿してあると HDMI も表示される.
$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones] Subdevices: 8/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 card 1: Device [C-Media USB Audio Device], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
raspi-config
から音声出力先を変更する.System Options > Audio
から Headphones
を選択すると do_audio
関数が次のように ~/.asoundrc
ファイルを生成もしくは上書きする.$AUDIO_OUT
には aplay
で確認したカード番号が入る.
$ cat -n /usr/bin/raspi-config ... 1968 cat << EOF > $ASPATH 1969 pcm.!default { 1970 type asym 1971 playback.pcm { 1972 type plug 1973 slave.pcm "output" 1974 } 1975 capture.pcm { 1976 type plug 1977 slave.pcm "input" 1978 } 1979 } 1980 1981 pcm.output { 1982 type hw 1983 card $AUDIO_OUT 1984 } 1985 1986 ctl.!default { 1987 type hw 1988 card $AUDIO_OUT 1989 } 1990 EOF 1991 fi 1992 fi 1993 fi 1994 } ...
設定するとこの状態.これで音が鳴るはず.
$ cat ~/.asoundrc pcm.!default { type asym playback.pcm { type plug slave.pcm "output" } capture.pcm { type plug slave.pcm "input" } } pcm.output { type hw card 0 } ctl.!default { type hw card 0 }
音声入力設定
マイク (CAPTURE) デバイスを確認する.音声出力設定時と同様に USB マイクだけ挿している状態.
$ arecord -l **** List of CAPTURE Hardware Devices **** card 1: Device [C-Media USB Audio Device], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
入力デバイスを ~/.asoundrc
に記載する.pcm.input
部分を追記して arecord
で確認したカード番号を指定する.
$ cat ~/.asoundrc pcm.!default { type asym playback.pcm { type plug slave.pcm "output" } capture.pcm { type plug slave.pcm "input" } } pcm.output { type hw card 0 } ctl.!default { type hw card 0 } pcm.input { type hw card 1 }
raspi-config
で出力先の設定を行うと設定ファイルから入力設定が消えるので注意.
入出力の動作確認と調整
マイクから音声を録音してみる.
$ arecord -f cd test1.wav
スピーカーで音声を再生してみる.
$ aplay test1.wav
ゲインを調整する.
$ alsamixer
おわりに
Raspi の音声入出力設定方法を紹介しました.
コメント