2025/03/06

Raspberry Pi 5に gTTS をインストールして音声出力する

何かをするとき、耳で音楽を聴きながらやっていませんか?

こんにちは、Akira(Type-EDGE)です。

最近、voicyにハマってしまいました。
今までは何か音楽を聴くとか、朗読サービスを受けていたとかないのですが、アレクサを買って以来、ちょっとしたことをやっている時には耳で何かを聞く習慣ができました。

その一つがvoicyです。
最新の情報を提供していて、「ながら」作業しながら知識を得れる良いサービスだと感じています。

今回は、Raspberry Pi 5で、Google AI Studioで出力した文章を耳で聞くようにする方法を紹介します。

どんな声で話しかけてくれるのか、ちょっとワクワクしちゃいますね!

それでは、行ってみましょうッ!

Raspberry Pi 5に gTTS をインストールして音声出力する

ところでgTTSとは?

gTTS (Google Text-to-Speech)は、Googleの音声合成エンジンを利用してテキストを音声に変換するPythonライブラリです。

多言語対応しており、日本語を含む様々な言語の音声を生成できる他、地域性(訛り)や声の速度を変えることができます。

gTTSのメリット

gTTSのメリットですが、わずか数行のコードでテキストをMP3ファイルに変換できます。さらに、gTTSはオフライン環境でも動作するため、インターネット接続が不安定な場所でも音声合成を利用できます。

負荷も大きくないので、今回のRaspberry Pi 5 でも十分に動いてくれました。

gTTSのデメリット

ちょっと棒読み感が強いので会話は期待しない方が良いです。声のトーンを変えることができないも残念なポイント。

無料かつオフライン環境で使えるのだから、仕方が無いと言えば仕方のないデメリットなのかもしれません。

gTTSの使い方

gTTSのインストール

まずは必要なライブラリを導入していきます。

pip install gTTS

mpg123のインストール

 CLIで音声を出力するのに必要なライブラリを導入します。

sudo apt install mpg123

Google AI Studioで生成したテキストを音声にする

gTTS と mpg123 を使用して、与えたテキストを音声ファイルにして、CLIで読み上げます。以下のコードだと、変数tにテキストを、変数lにテキストの言語(今回は日本語)を設定し、テキストを読み上げます。

from gtts import gTTS
from io import BytesIO
import subprocess

def txt2speak(t='サンプル', l='ja'):
    try:
        tts = gTTS(text=t, lang=l, tld='co.jp')
        fp = BytesIO()
        tts.write_to_fp(fp)
        fp.seek(0)
        subprocess.run(["mpg123", "-q", "-"], input=fp.read(), check=True)
    except AssertionError:
        print("mpg123 がインストールされていません。`sudo apt install mpg123` を実行してください。")
    except Exception as e:
        print(f"エラーが発生しました: {e}")

最後に

今回はgTTSを使った音声出力を行いました。

gTTSはスペックの低いRaspberry Pi 5でも短い時間で音声ファイルを作ることができました。

簡単かつオフラインで音声ファイルを作れるのは良いですが、棒読みなのがちょっと残念でした。

より人らしい話し方をできる方法を模索したいと感じました。 

今回の記事は如何でしたか?
もし今回の記事が良かったと思った方や評価したいと思った方は、コメントを残して頂けると嬉しいです。 

また、私はパソコン以外にも記事を書いていますので、そちらも読んでいただけると幸いです。

0 件のコメント:

コメントを投稿

PythonのWEBフレームワーク「Fastapi」開発環境の構築して、http経由で接続する

 こんにちは、Akira(Type-EDGE)です。  あなたはPythonを使っていますか? 私はRaspberry Pi 5とPythonを組み合わせて、Google AI Studioとつないだり、音声をテキストにしたりしています。 文字通り、Pythonで遊んでいる状態で...