はじめに
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 の音声入出力設定方法を紹介しました.


コメント