aplayだとwavしか再生できない
Google TTSで生成したmp3形式の音声ファイルをデフォルトでファイルを再生できるaplayを使って再生しようとしたら、なんと雑音しか聞こえませんでした。
調べたところaplayではwavファイルしか再生できないもよう、かといってGoogle TTSでもwavは作成できなさそうなので、一旦mp3のまま再生することにしました。
なるべく余分なものはインストールしたくなかったので今回はpygameではなく、pysoundを使って再生することにしました。
とはいったもののRaspberry PiでMP3ファイルをPythonから再生しようとしてplaysound
を使ったらエラーが出た…!ということで忘備録として解決方法を記録しときます。
playsoundのインストール
playsound
を仮想環境(myenvなど)にインストールします。
pip install playsound
インストールしたところ以下が表示されてしまいました。
playsound is relying on another python subprosecc. please use pip install pygobject to un more efficiently
このメッセージはどうやら、playsoundモジュールが別のPythonプロセスに依存してMP3を再生しているため、効率が落ちる可能性があると伝えています。より効率的に再生するために、pygobjectというライブラリをインストールするよう提案してくれているみたいです。
そこでpygobjectも同じ要領でpip installしてみる。。
とりあえず無事に完了したので、対話モードで以下のコードをテストしてみる。
import playsound
playsound.playsound('output.mp3')
ところが、これを実行したらエラーが出ました!
発生したエラー
実行すると、こんなエラーメッセージが出ました。
いろいろ書かれてるけど、どうやらこれらしい。
ValueError: Namespace Gst not available
これは、playsoundが依存している「GStreamer」というライブラリがRaspberry Piにインストールされていないことが原因で発生します。要するに、「GStreamerがないから音声を再生できないよ」ということですね。
解決方法:GStreamerをインストールしよう
Raspberry PiにGStreamerをインストールすることで、この問題を解決できます。以下のコマンドを使って必要なパッケージをインストールします。
sudo apt-get update
sudo apt-get install -y python3-gi gir1.2-gstreamer-1.0 gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good
これでGStreamerがインストールされ、同じ要領でテストしてみると、無事にplaysoundがMP3を再生できるようになりました!
まとめ
Raspberry PiでPythonからMP3を再生するためには、playsoundと一緒にGStreamerをインストールする必要があることがわかりました。
Raspberry Piは便利なデバイスですが、デフォルトでMP3再生のための環境が整っていないこともあるので、事前に必要なライブラリをインストールしておくと安心です。