注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebookへようこそ! Raspberry Pi、Arduino、ESP32について、愛好家仲間とより深く探求しましょう。

参加する理由

  • 専門家によるサポート: コミュニティとチームの助けを借りて、アフターセールスの問題や技術的な課題を解決します。

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

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

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

  • お祭りプロモーションとプレゼント: プレゼントキャンペーンやホリデープロモーションに参加しましょう。

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

1. EspeakとPico2WaveによるTTS

このレッスンでは、Raspberry Piに組み込まれた2つのテキスト読み上げ(TTS)エンジン — EspeakPico2Wave — を使用して、Pironman 5 Pro MAX に話しかけさせます。

これら2つのエンジンはどちらもシンプルでオフライン動作しますが、音質は大きく異なります:

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

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

音声品質機能 の違いを実際に確認してみましょう。


1. Espeakのテスト

EspeakはRaspberry Pi OSに含まれている軽量なTTSエンジンです。 音声はロボット的ですが、音量、ピッチ、速度などを調整できる高度な設定が可能です。

プログラムの実行

cd ~/sunfounder-voice-assistant/examples
sudo python3 tts_espeak.py
  • Pironman 5 Pro MAX が「Hello! I’m Espeak TTS.」と話すのが聞こえます。

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

コード

from sunfounder_voice_assistant.tts import Espeak

# Espeak TTSインスタンスを作成
tts = Espeak()
# 振幅 0-200、デフォルト100
tts.set_amp(200)
# 速度 80-260、デフォルト150
tts.set_speed(150)
# 単語間の間隔 0-200、デフォルト1
tts.set_gap(1)
# ピッチ 0-99、デフォルト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 ~/sunfounder-voice-assistant/examples
sudo python3 tts_pico2wave.py
  • Pironman 5 Pro MAX が「Hello! I'm Pico2Wave TTS.」と話すのが聞こえます。

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

コード

from sunfounder_voice_assistant.tts import Pico2Wave

# Pico2Wave TTSインスタンスを作成
tts = Pico2Wave()

# 言語を設定
tts.set_lang('en-US')  # en-US, en-GB, de-DE, es-ES, fr-FR, it-IT

# 簡単な挨拶(動作確認)
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)   # より遅く
      tts.set_pitch(60)    # 異なるピッチ
      
  • コード実行時に Permission denied と表示される

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

      sudo python3 test_tts_espeak.py
      

比較:Espeak vs Pico2Wave

機能

Espeak

Pico2Wave

音声品質

ロボット的、合成音声

より自然、人間らしい

言語

デフォルトは英語

少なめだが、一般的な言語

調整可能性

可能(速度、ピッチなど)

不可(言語のみ)

パフォーマンス

非常に高速、軽量

やや低速、やや重い