ラズベリーパイで音声を出力する方法は、【① 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ファイル内にコードを書いて実行するだけで音声再生ができます。
import subprocess
subprocess.call("aplay -D plughw:1,0 test.wav", shell=True)
import subprocess
subprocess.call("aplay -D plughw:2,0 test.wav", shell=True)