0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry PiでMP3を再生したい!playsoundでエラーが出た時の解決方法

Posted at

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再生のための環境が整っていないこともあるので、事前に必要なライブラリをインストールしておくと安心です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?