注釈

こんにちは。SunFounder Raspberry Pi & Arduino & ESP32 Facebook 愛好家コミュニティへようこそ! Raspberry Pi、Arduino、ESP32 について、仲間の愛好家と一緒にさらに深く探求しましょう。

参加する理由

  • 専門的なサポート :コミュニティメンバーや公式チームの支援を受けて、購入後の問題や技術的な課題を解決できます。

  • 学びと共有 :ヒントやチュートリアルを交換し、スキルを向上させましょう。

  • 限定先行情報 :新製品の発表やプレビュー情報をいち早く入手できます。

  • 特別割引 :最新製品を対象とした限定割引をお楽しみいただけます。

  • 季節限定プロモーションとプレゼント企画 :プレゼントキャンペーンや祝日限定のプロモーションに参加できます。

👉 私たちと一緒に探求し、創造する準備はできましたか? [here] をクリックして、今すぐ参加しましょう!

2. Piper と OpenAI で TTS

前のレッスンでは、Raspberry Pi 上で使えるシンプルなオフライン TTS エンジンである EspeakPico2Wave を試しました。ここから大きくステップアップして、 より高い音声品質 と柔軟性を提供する 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 を取得して保存する

  1. OpenAI Platform にアクセスしてログインします。API keys ページで Create new secret key をクリックしてください。

    ../_images/llm_openai_create.png
  2. 詳細(Owner、Name、Project、必要に応じて権限)を入力し、Create secret key をクリックします。

    ../_images/llm_openai_create_confirm.png
  3. キーが作成されたらすぐにコピーしてください — 再表示できません。紛失した場合は、新しく作成し直す必要があります。

    ../_images/llm_openai_copy.png
  4. プロジェクトフォルダ(例: / )に、 secret.py というファイルを作成します:

    cd ~/fusion-hat/examples
    sudo nano secret.py
    
  5. 次のようにファイルへキーを貼り付けます:

    # 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 vs Pico2Wave vs Piper vs OpenAI TTS

項目

Espeak

Pico2Wave

Piper

OpenAI TTS

動作環境

Raspberry Pi に内蔵(オフライン)

Raspberry Pi に内蔵(オフライン)

Raspberry Pi/PC(オフライン、モデルが必要)

クラウド(オンライン、API key が必要)

音声品質

ロボット的

Espeak より自然

自然(ニューラル TTS)

非常に自然/人間らしい

制御項目

速度、ピッチ、音量

制御は限定的

音声/モデルを選択可能

モデルとボイスを選択可能

言語

多数(品質はばらつきあり)

限定的

多くのボイス/言語に対応

英語が最も強い(他言語は提供状況により異なる)

遅延/速度

非常に高速

高速

Pi 4/5 では “low” モデルでリアルタイム動作

ネットワーク依存(通常は低遅延)

セットアップ

最小限

最小限

.onnx + .onnx.json モデルをダウンロード

API key を作成し、クライアントをインストール

最適な用途

簡単なテスト、基本的なプロンプト

少し良いオフライン音声

より高品質なローカルプロジェクト

最高品質、豊富なボイスオプション