Raspberry Piにはヘッドホンジャックがついていて、ヘッドホンやスピーカーを接続できます。 GUIから音楽を流したり設定をするのは簡単なので説明不要かと思います。
今回はRaspberry Pi OS Lite版 (GUIなし)で、コマンドラインから音🎶を鳴らしてみましょう。 ヘッドホンジャックから鳴らすのが一番簡単でお手軽です。
ヘッドホンジャックに、ダイソーの300円スピーカーを接続してみました。このスピーカーは電源をUSBから取ります。
電源だけUSBから取って、音声はヘッドホンジャックから取る製品です。USBオーディオデバイスではありません🙅のでお間違いなきように。
音を鳴らす仕組み
LinuxにはALSAがあるさ!
Raspberry Pi OS Lite版の場合はデフォルトでALSAを使って音を鳴らすようになっています。 ALSAはサウンドデバイスを直接的に制御するのですが、同時に複数のアプリからサウンドデバイスを扱うことはできません。
複数のアプリから音を出す(音楽を再生しながら、別のアプリが時々通知音を鳴らすなど)ために、ふつうはPulseAudioを使います。 PulseAudioが間に入ることで、音声をミキシングしたりして、複数のアプリから音が鳴らせます。
ですが今回は単純に、PulseAudioを使わずにALSAのみで音を鳴らしてみます😅
音を鳴らしてみよう
音声出力先変更
デフォルトではHDMIになにも接続されていなければ、ヘッドホンジャックから音が出るようになっているはずです。
HDMIに何か繋いでいる場合で、ヘッドホンジャックから音声を出したい場合は、raspi-config
で出力先を変更できます。
$ sudo raspi-config
7 Advanced Options→A4 Audioと進むと、次のような画面になります。
Force 3.5mm jackを選択すると、HDMIの接続の有無にかかわらず、イヤホンジャックから音が出ます。
音声再生
イヤホンジャックにスピーカーを接続して、次のコマンドを実行してみましょう。 最初から入っているテスト用のwavファイルを使います。
$ aplay /usr/share/sounds/alsa/Front_Center.wav
このaplay
コマンドはALSA付属のコマンドで、WAVファイルの再生ができます。
「Front Center」という声が流れればOKです。出ない場合は、音量が小さいのかもしれません。
音量調整
音量調整はalsamixer
コマンドで行うのが簡単です。
上下キーで音量の調整ができます。F6で設定する出力先(ヘッドホンジャック、HDMIなど)の変更ができます。 Mボタンを押すと、ミュート/ミュート解除の切り替えができます。ESCで終了です。
MP3再生
MP3を再生するには、何らかの音楽再生ソフトをインストールしましょう。 コマンドラインで使えるものとしては、mpg123などが良いでしょう。
$ sudo apt install mpg123
これで、何か音楽ファイルをダウンロードして再生してみましょう。何でも良いです。
$ wget https://dl.espressif.com/dl/audio/gs-16b-2c-44100hz.mp3 $ mpg123 gs-16b-2c-44100hz.mp3
音楽が鳴れば成功です。
Pythonで音楽再生
やっぱりプログラムから音楽を再生したいところです。Pythonで試してみました。
WAVファイルの再生
いろいろな方法がありますが、simpleaudioライブラリを使うのが一番簡単そうです。
このライブラリはWAVファイルの再生ができます。ALSAがあれば再生でき、依存ライブラリが無いのでお手軽です。
$ sudo apt-get install -y python3-pip libasound2-dev $ pip3 install simpleaudio
次のファイルを作成し、play.py
として保存します。
import simpleaudio as sa wave_obj = sa.WaveObject.from_wave_file("/usr/share/sounds/alsa/Front_Center.wav") play_obj = wave_obj.play() play_obj.wait_done()
再生してみましょう。
$ python3 play.py
音が鳴れば成功です。
MP3ファイルの再生
Pydubというライブラリを使うと簡単に再生できます。ただし、FFmpegのインストールが必要です。
FFmpegをインストールしておけば、pydubでMP3やAACなどFFmpegが対応する音声ファイルが再生できます。 次のようにインストールします。
$ sudo apt install python3-pip ffmpeg $ sudo pip3 install pydab
次のファイルを作成し、play_mp3.py
として保存します。
from pydub import AudioSegment from pydub.playback import play sound = AudioSegment.from_mp3("gs-16b-2c-44100hz.mp3") play(sound)
再生してみましょう。
$ python3 play_mp3.py
音が鳴れば成功です。
これでPythonを使ってセンサーをトリガーにしたり、スケジュールで目覚まし時計を作ったり、いろんな音声アプリが作れますね!🥰
関連記事
Bluetoothスピーカーを鳴らす場合はこちら↓
I2S DACオーディオアンプに小型スピーカーユニットをつないでコンパクトに音を鳴らす場合はこちら↓
※こちらのロジクールのスピーカーも電源はUSB、音声は3.5mmイヤホンジャックから取るタイプです