注釈

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

参加する理由

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

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

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

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

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

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

1. Espeak と Pico2Wave で TTS

このレッスンでは、Raspberry Pi に内蔵されている 2 つのテキスト読み上げ( TTS )エンジン — EspeakPico2Wave — を使って、Fusion HAT+ に話させます。

この 2 つのエンジンはいずれもシンプルでオフライン動作しますが、音声の印象は大きく異なります:

  • Espeak :非常に軽量で高速ですが、声はロボットのように聞こえます。速度、ピッチ、音量を調整できます。

  • Pico2Wave :Espeak よりも滑らかで自然な音声を生成しますが、設定できるオプションは少なめです。

音質機能 の違いを実際に聞き比べられます。


1. Espeak をテストする

Espeak は Raspberry Pi OS に含まれる軽量な TTS エンジンです。音声はロボットっぽく聞こえますが、設定の自由度が高く、音量、ピッチ、速度などを調整できます。

プログラムを実行する

cd ~/fusion-hat/examples
sudo python3 tts_espeak.py
  • Fusion HAT+ から「Hello! I'm Espeak TTS.」と聞こえるはずです。

  • コード内の調整パラメータを変更して、 ampspeedgappitch が音にどのように影響するか試してみましょう。

コード

from fusion_hat.tts import Espeak

# Create Espeak TTS instance
tts = Espeak()
# Set amplitude 0-200, default 100
tts.set_amp(200)
# Set speed 80-260, default 150
tts.set_speed(150)
# Set gap 0-200, default 1
tts.set_gap(1)
# Set pitch 0-99, default 80
tts.set_pitch(80)

tts.say("Hello! I’m Espeak TTS.")

コードの説明:

  • tts.set_amp() — 音量を制御します( 0~200 )。

  • tts.set_speed() — 読み上げ速度を調整します( 80~260 )。

  • tts.set_gap() — 単語間の間隔を設定します( 0~200 )。

  • tts.set_pitch() — ピッチを設定します( 0~99 )。

  • tts.say() — テキストを音声に変換して再生します。

💡 ヒント: ピッチと速度を上げるとロボットが明るい声になり、下げると落ち着いた(真面目な)声になります。


2. Pico2Wave をテストする

Pico2Wave は Espeak と比べて、 より自然で人間らしい声 を生成します。使い方はとても簡単ですが柔軟性は低く、変更できるのは 言語 のみで、ピッチ、速度、音量は変更できません。そのため、複雑な設定なしでクリアで滑らかな音声が欲しい場合に Pico2Wave は最適です。

プログラムを実行する

cd ~/fusion-hat/examples
sudo python3 tts_pico2wave.py
  • Fusion HAT+ から「Hello! I'm Pico2Wave TTS.」と聞こえるはずです。

  • 言語を変更して(例:スペイン語は es-ES )、声がどのように変わるか聞いてみましょう。

コード

from fusion_hat.tts import Pico2Wave

# Create Pico2Wave TTS instance
tts = Pico2Wave()

# Set the language
tts.set_lang('en-US')  # en-US, en-GB, de-DE, es-ES, fr-FR, it-IT

# Quick hello (sanity check)
tts.say("Hello! I'm Pico2Wave TTS.")

コードの説明:

  • tts.set_lang() — 音声合成の出力言語を設定します。

    • ``en-US``(デフォルト)

    • en-GB

    • de-DE

    • es-ES

    • fr-FR

    • it-IT

  • tts.say() — テキストを音声に変換し、すぐに再生します。


トラブルシューティング

  • Espeak または Pico2Wave を実行しても音が出ない

    • スピーカー/ヘッドホンが接続されていること、音量がミュートになっていないことを確認してください。

    • ターミナルで簡単なテストを実行します:

      espeak "Hello world"
      pico2wave -w test.wav "Hello world" && aplay test.wav
      

    何も聞こえない場合、問題は Python コードではなくオーディオ出力側にあります。

  • Espeak の声が速すぎる/ロボットっぽすぎる

    • コード内のパラメータを調整してみてください:

      tts.set_speed(120)   # slower
      tts.set_pitch(60)    # different pitch
      
  • コード実行時に Permission denied が出る

    • sudo を付けて実行してみてください:

      sudo python3 test_tts_espeak.py
      

比較:Espeak vs Pico2Wave

機能

Espeak

Pico2Wave

音質

ロボット的、合成音声

より自然で人間らしい

言語

デフォルトは英語

少なめだが主要なものに対応

調整可能

可(速度、ピッチなど)

不可(言語のみ)

パフォーマンス

非常に高速、軽量

やや遅く、重め