概要 Raspberry Pi と OpenAI を通じて英会話しよう!という動機から 最初の一歩として USB スピーカーから指定したテキストを読み上げる様にしてみました。
環境 Marstudy Raspberry Pi 4 Model B Starter キット で プリインストールされた Raspbian OS を利用しています。
1 2 3 4 5 6 7 8 9 10 11 12 $ cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
usb スピーカー接続 サンワサプライ コンパクト PC スピーカー MS-P08UBK を利用します。
自分が購入した 2023-05-10 は ¥857 でした。
接続先の USB スピーカーのカード番号・デバイス番号を確認 1 2 3 4 5 6 7 8 9 10 11 12 $ aplay -l **** ハードウェアデバイス PLAYBACK のリスト **** カード 1: Headphones [bcm2835 Headphones], デバイス 0: bcm2835 Headphones [bcm2835 Headphones] サブデバイス: 8/8 サブデバイス #0: subdevice #0 サブデバイス #1: subdevice #1 サブデバイス #2: subdevice #2 サブデバイス #3: subdevice #3 サブデバイス #4: subdevice #4 サブデバイス #5: subdevice #5 サブデバイス #6: subdevice #6 サブデバイス #7: subdevice #7
音がスピーカーから聞こえるかテスト 1 2 3 4 // plughw:<カード>,<デバイス> $ speaker-test -D plughw:1,0 -t wav // Ctrl+c で中断し終了します
python スクリプトから再生してみる
1 $ curl https://www.soundjay.com/buttons/button-3.mp3 -o button.mp3
1 2 3 4 5 6 7 8 9 10 11 12 13 import pygamedef play_sound_file (file_path ): pygame.mixer.init() pygame.mixer.music.load(file_path) pygame.mixer.music.play() while pygame.mixer.music.get_busy() == True : continue if __name__ == "__main__" : play_sound_file('button.mp3' )
以下実行し mp3 が再生されることが確認できます。
テキストから音声ファイルを作成し読み上げる
1 2 $ pip3 install gTTS $ pip3 install pydub
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 from gtts import gTTSfrom pydub import AudioSegmentfrom pydub.playback import playimport sysdef speechja (stext ): tts = gTTS(stext, lang="ja" ) tts.save("/tmp/out.mp3" ) sound = AudioSegment.from_mp3("/tmp/out.mp3" ) play(sound) if __name__ == "__main__" : msg = "はい、お元気ですか?" speechja(msg)
以下実行しスピーカーから「はい、お元気ですか?」と再生されます。
以上 参考になれば幸いです。
次回はマイクから音声認識させる設定を執筆したいと思います。