Raspberry Pi OS の音声入出力設定

はじめに

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

コメント

タイトルとURLをコピーしました