【ラズパイ】Raspberry Piで音声出力~パイソン(python)で音声再生~

 ラズベリーパイで音声を出力する方法は、【① 3.5mmのステレオミニジャック】、【② USB接続】、【③ HDMI接続】があります。

 今回は、実際に行った①と②での音声出力をご紹介し、そのあと、pythonで音声を再生します。再生方法は、Linuxのオーディオ機能として最初から備わっている【aplay】を使用します。

ターミナルを使用した音声出力

① 3.5mmのステレオミニジャック
② USB接続

 今回、3.5mmステレオミニジャックでの接続としてヘッドホンを準備し、また、USB接続として、ヤマハのYVC300を準備しました。

 音声出力させるためには、出力先のカードとデバイスを指定する必要があります。まず、その番号を調べます。

 ターミナルに、$ aplay -lを入力すると、下記のようにハードウエアデバイスのリストが表示されます。

pi@raspberrypi:~/python $ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****

カード 0: b1 [bcm2835 HDMI 1], デバイス 0: bcm2835 HDMI 1 [bcm2835 HDMI 1]
  サブデバイス: 4/4
  サブデバイス #0: subdevice #0
  サブデバイス #1: subdevice #1
  サブデバイス #2: subdevice #2
  サブデバイス #3: subdevice #3

カード 1: Headphones [bcm2835 Headphones], デバイス 0: bcm2835 Headphones [bcm2835 Headphones]
  サブデバイス: 4/4
  サブデバイス #0: subdevice #0
  サブデバイス #1: subdevice #1
  サブデバイス #2: subdevice #2
  サブデバイス #3: subdevice #3

カード 2: YVC300 [Yamaha YVC-300], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
  • カード1にヘッドホンと表示されています。そしてデバイスは0。
  • カード2にヤマハのYVC300が表示されています。そしてデバイスは0。

カードとデバイスが分かったので、これで音声ファイルをテスト再生します。
ラズパイに最初から入っている、フロントセンサーという音声ファイルを再生させてみます。

$ aplay -Dhw:1,0 /usr/share/sounds/alsa/Front_Center.wav

Dhwの後ろの 1,0が、それぞれカードとデバイスを表しています。
カード1、デバイス0なので、ヘッドホンから音声が聞こえます。
カード2、デバイス0にすると、YVC300から音声が聞こえます。

もしも、警告: レートが不正確です (要求値 = 24000Hz, 使用値 = 48000Hz)というエラーが出た場合、

aplay -D plughw:2,0 /usr/share/sounds/alsa/Front_Center.wav

のようにplugを追加してください。

音声出力まとめ
【① 3.5mmのステレオミニジャック】 aplay -Dhw:1,0 test.wav
【② USB接続】 aplay -Dhw:2,0 test.wav
【③ HDMI接続】 aplay -Dhw:0,0 test.wav

 test.wavファイルは、適宜準備した音声ファイルです。

注意:aplayはMP3形式の音声は再生できません。wav形式の音声を準備して下さい。


python(パイソン)で音声出力

 まず、音声ファイルを準備します。今回は、test.wavというファイル名で準備しました。そのファイルを、pythonファイルと同じフォルダ内に入れます。

 そして、下記のように、pythonファイル内にコードを書いて実行するだけで音声再生ができます。

【① 3.5mmのステレオミニジャック】ヘッドホンから再生:
import subprocess
subprocess.call("aplay -D plughw:1,0 test.wav", shell=True)
【② USB接続】YVC300から再生:
import subprocess
subprocess.call("aplay -D plughw:2,0 test.wav", shell=True)

最新情報をチェックしよう!