Raspberry Pi で自然な声の音声読み上げ
しゃべる Raspberry Pi があると、趣味の工作が家族みんなの道具になります。来客にあいさつするドアベル、毎朝の天気予報、水やりを頼む植物センサー、子ども向けのクイズ箱。Pi でおなじみの espeak-ng や pico2wave は手軽に入りますが、声はロボットのようです。
無料の SuperClonica エンジンなら、Pi に31言語の自然なニューラル音声を持たせられます。このガイドでは、事前に音声化したファイルから Pi 上でのエンジン実行まで3つの方法と、どの工作にどれが向くかを正直に紹介します。
Pi を話させる3つの方法
決まったフレーズをいくつか話すだけなら、事前に作ったファイルで十分です。
- 事前に作ったファイル:PCでフレーズを音声化して Pi にコピーし、aplay で再生。いちばん速く確実な方法です。
- ネットワーク上のサーバー:PCや家庭用サーバーで Docker イメージを動かし、Pi がテキストを送って返事を再生。新しい文をいつでも話せます。
- Pi 上のエンジン:64ビット版のシステムを入れた Pi 4 や Pi 5 なら Python パッケージを入れられます。遅くはなりますが、1枚のボードで完全オフライン。
- 声は31言語を話します。中国語にはまだ対応していません。
声を無料で聞く
どの声のページでも、Pi に言わせたいフレーズを30〜100文字で入力し、言語を選んで生成ボタンを押します。数秒で工作の声を確かめられ、ファイルもダウンロードできます。アカウントは不要です。
ネットワーク上のサーバーに頼む
サーバーは家庭内ネットワークか VPN の内側に置き、キーなしでインターネットに公開しないでください。
- Docker の入ったPCや家庭用サーバーでサーバーを起動:docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu。イメージは x86-64 プロセッサー向けなので、Pi 自体では動きません。
- Pi から問い合わせて返事を再生:curl -s -X POST http://192.168.1.20:8000/synthesize -H "Content-Type: application/json" -d '{"text": "植物に水をあげてください。", "voice": "F1", "lang": "ja"}' -o /tmp/say.wav && aplay /tmp/say.wav
- サーバーに SUPERCLONICA_API_KEY を設定し、リクエストに -H "Authorization: Bearer あなたのキー" を加えます。
- 短いフレーズなら、ふつうのデスクトップCPUで1秒を大きく下回ります。これにネットワークの時間が加わります。
Pi 上でエンジンを動かす
64ビット版の Raspberry Pi OS では、システムの Python が pip でのインストールを拒むので、まず仮想環境を作ります:python3 -m venv ~/tts、続いて ~/tts/bin/pip install superclonica-cpu。そのあと音声化して再生:~/tts/bin/superclonica --text "おはようございます。朝ごはんの時間です。" --voice F1 --lang ja --output hello.wav && aplay hello.wav。初回はモデル(約385 MB)がダウンロードされます。エンジンが使うライブラリはすべて Pi の64ビット ARM 向けに用意されていますが、Pi での速度はまだ計測していません。デスクトップの数倍は時間がかかると考え、くり返すフレーズは一度だけ作ってファイルで持っておきましょう。
話す工作のアイデア
cron で毎朝の天気や予定を読み上げたり、人感センサーで入ってきた人にあいさつしたり、ボタンで子どもにランダムなジョークを話したりできます。販売したり公開したりする工作には、権利を持っている声を使いましょう。モデルの標準ボイス10種(M1〜M5、F1〜F5)か、同意を得た話者の録音から SuperClonica のスタジオで学習させた自分の声です。カタログのキャラクターの声はファンが作ったもので、個人の工作向けです。