注釈
こんにちは。SunFounder Raspberry Pi & Arduino & ESP32 Facebook 愛好家コミュニティへようこそ! Raspberry Pi、Arduino、ESP32 について、仲間の愛好家と一緒にさらに深く探求しましょう。
参加する理由
専門的なサポート :コミュニティメンバーや公式チームの支援を受けて、購入後の問題や技術的な課題を解決できます。
学びと共有 :ヒントやチュートリアルを交換し、スキルを向上させましょう。
限定先行情報 :新製品の発表やプレビュー情報をいち早く入手できます。
特別割引 :最新製品を対象とした限定割引をお楽しみいただけます。
季節限定プロモーションとプレゼント企画 :プレゼントキャンペーンや祝日限定のプロモーションに参加できます。
👉 私たちと一緒に探求し、創造する準備はできましたか? [here] をクリックして、今すぐ参加しましょう!
2. Piper と OpenAI で TTS
前のレッスンでは、Raspberry Pi 上で使えるシンプルなオフライン TTS エンジンである Espeak と Pico2Wave を試しました。ここから大きくステップアップして、 より高い音声品質 と柔軟性を提供する 2 つの より高度な TTS オプション を試してみましょう:
Piper — 高速なニューラルネットワークベースの TTS エンジンで、Raspberry Pi 上で 完全にオフライン で動作します。
OpenAI TTS — 非常に自然で人間らしい音声 を提供するオンラインサービスで、表現力のある読み上げに最適です。
これらのエンジンにより、Fusion HAT+ の音声はよりリアルで生き生きとしたものになります。 🚀
1. Piper をテストする
Piper は オフラインのニューラル TTS エンジン で、モデルをインストールすればインターネット接続は不要です。複数の 言語 と 音声(ボイス) に対応しており、組み込み向けの音声合成として強力な選択肢です。
プログラムを実行する
cd ~/fusion-hat/examples sudo python3 tts_piper.py
初回実行時には、選択した 音声モデル が自動的にダウンロードされます。
その後、Fusion HAT+ から
Hello! I'm Piper TTS.と聞こえるはずです。別のモデル名で
set_model()を呼び出すことで、音声や言語を切り替えられます。
コード
from fusion_hat.tts import Piper
tts = Piper()
# List supported languages
print(tts.available_countrys())
# List models for English (en_us)
print(tts.available_models('en_us'))
# Set a voice model (auto-download if not already present)
tts.set_model("en_US-amy-low")
# Say something
tts.say("Hello! I'm Piper TTS.")
コードの説明:
available_countrys()— 対応している言語をすべて一覧表示します。available_models()— 指定した言語で利用可能なモデルを一覧表示します。set_model()— 音声モデルを設定します。モデルが未インストールの場合は、自動的にダウンロードされます。say()— テキストを音声に変換し、すぐに再生します。
💡 ヒント: 複数のモデルを試して、速度、明瞭さ、アクセントを比較してみましょう。軽量(高速)なモデルもあれば、より高音質なモデルもあります。
2. OpenAI TTS をテストする
API Key を取得して保存する
OpenAI Platform にアクセスしてログインします。API keys ページで Create new secret key をクリックしてください。
詳細(Owner、Name、Project、必要に応じて権限)を入力し、Create secret key をクリックします。
キーが作成されたらすぐにコピーしてください — 再表示できません。紛失した場合は、新しく作成し直す必要があります。
プロジェクトフォルダ(例:
/)に、secret.pyというファイルを作成します:cd ~/fusion-hat/examples sudo nano secret.py
次のようにファイルへキーを貼り付けます:
# secret.py # Store secrets here. Never commit this file to Git. OPENAI_API_KEY = "sk-xxx"
プログラムを実行する
cd ~/fusion-hat/examples
sudo python3 tts_openai.py
プログラムは OpenAI の TTS サービスへ接続し、Fusion HAT+ は 自然で表現力のある音声出力 で話します。
ボイススタイル を変更したり、 instructions を追加して、口調や表現(例:sad、dramatic、playful)を制御できます。
このため、OpenAI TTS は対話型ロボット、ストーリーテリング、教育用アシスタントに最適です。
コード
from fusion_hat.tts import OpenAI_TTS
from secret import OPENAI_API_KEY
# Export your OpenAI_API_KEY before running the script
# export OPENAI_API_KEY="sk-proj-xxxxxx"
tts = OpenAI_TTS(api_key=OPENAI_API_KEY)
# tts.set_model('tts-1')
tts.set_voice('alloy')
tts.set_model('gpt-4o-mini-tts')
msg = "Hello! I'm OpenAI TTS."
print(f"Say: {msg}")
tts.say(msg)
msg = "with instructions, I can say word sadly"
instructions = "say it sadly"
print(f"Say: {msg}, with instructions: '{instructions}'")
tts.say(msg, instructions=instructions)
msg = "or say something dramaticly."
instructions = "say it dramaticly"
print(f"Say: {msg}, with instructions: '{instructions}'")
tts.say(msg, instructions=instructions)
コードの説明:
OpenAI_TTS()— API key を使って OpenAI TTS エンジンを初期化します。set_model()— TTS モデルを選択します(例:gpt-4o-mini-tts)。set_voice()— 特定のボイスを選択します(例:alloy)。say(text)— テキストを音声に変換して再生します。say(text, instructions=...)— 表現トーンの指示 を追加し、話し方のスタイルを動的に制御できます。
例:
“say it sadly” → 柔らかく感情的なトーン
“say it dramatically” → 力強く表現豊かな話し方
“say it excitedly” → उत्स उत्स?(←誤)
トラブルシューティング
No module named 'secret'
これは
secret.pyが Python ファイルと同じフォルダにないことを意味します。secret.pyをスクリプトを実行するディレクトリへ移動してください。例:ls ~/ # Make sure you see both: secret.py and your .py file
OpenAI:Invalid API key / 401
キー全体(
sk-で始まる)を貼り付けていること、余分なスペースや改行がないことを確認してください。コードで正しくインポートしていることを確認してください:
from secret import OPENAI_API_KEY
Pi のネットワーク接続を確認してください(
ping api.openai.comを試します)。
OpenAI:Quota exceeded / billing error
OpenAI のダッシュボードで課金設定を追加するか、クォータを増やす必要がある場合があります。
アカウント/課金の問題を解決した後に再試行してください。
Piper:tts.say() は動くが音が出ない
音声モデルが実際に存在することを確認してください:
ls ~/.local/share/piper/voicesコード内のモデル名が完全一致していることを確認してください:
tts.set_model("en_US-amy-low")
Pi の音声出力デバイス/音量(
alsamixer)を確認し、スピーカーが接続され電源が入っていることを確認してください。
ALSA/サウンドデバイスのエラー(例:“Audio device busy” や “No such file or directory”)
音声を使用している他のプログラムを終了してください。
デバイスが使用中のままなら Pi を再起動してください。
HDMI 出力とヘッドホンジャック出力を切り替える場合は、Raspberry Pi OS の音声設定で正しいデバイスを選択してください。
Python 実行時に Permission denied が出る
環境によって必要な場合は
sudoを付けて試してください:sudo python3 tts_piper.py
TTS エンジンの比較
項目 |
Espeak |
Pico2Wave |
Piper |
OpenAI TTS |
|---|---|---|---|---|
動作環境 |
Raspberry Pi に内蔵(オフライン) |
Raspberry Pi に内蔵(オフライン) |
Raspberry Pi/PC(オフライン、モデルが必要) |
クラウド(オンライン、API key が必要) |
音声品質 |
ロボット的 |
Espeak より自然 |
自然(ニューラル TTS) |
非常に自然/人間らしい |
制御項目 |
速度、ピッチ、音量 |
制御は限定的 |
音声/モデルを選択可能 |
モデルとボイスを選択可能 |
言語 |
多数(品質はばらつきあり) |
限定的 |
多くのボイス/言語に対応 |
英語が最も強い(他言語は提供状況により異なる) |
遅延/速度 |
非常に高速 |
高速 |
Pi 4/5 では “low” モデルでリアルタイム動作 |
ネットワーク依存(通常は低遅延) |
セットアップ |
最小限 |
最小限 |
|
API key を作成し、クライアントをインストール |
最適な用途 |
簡単なテスト、基本的なプロンプト |
少し良いオフライン音声 |
より高品質なローカルプロジェクト |
最高品質、豊富なボイスオプション |