注釈
こんにちは。SunFounder Raspberry Pi & Arduino & ESP32 Facebook 愛好家コミュニティへようこそ! Raspberry Pi、Arduino、ESP32 について、仲間の愛好家と一緒にさらに深く探求しましょう。
参加する理由
専門的なサポート :コミュニティメンバーや公式チームの支援を受けて、購入後の問題や技術的な課題を解決できます。
学びと共有 :ヒントやチュートリアルを交換し、スキルを向上させましょう。
限定先行情報 :新製品の発表やプレビュー情報をいち早く入手できます。
特別割引 :最新製品を対象とした限定割引をお楽しみいただけます。
季節限定プロモーションとプレゼント企画 :プレゼントキャンペーンや祝日限定のプロモーションに参加できます。
👉 私たちと一緒に探求し、創造する準備はできましたか? [here] をクリックして、今すぐ参加しましょう!
1. Espeak と Pico2Wave で TTS
このレッスンでは、Raspberry Pi に内蔵されている 2 つのテキスト読み上げ( TTS )エンジン — Espeak と Pico2Wave — を使って、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.」と聞こえるはずです。
コード内の調整パラメータを変更して、
amp、speed、gap、pitchが音にどのように影響するか試してみましょう。
コード
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-GBde-DEes-ESfr-FRit-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 |
|---|---|---|
音質 |
ロボット的、合成音声 |
より自然で人間らしい |
言語 |
デフォルトは英語 |
少なめだが主要なものに対応 |
調整可能 |
可(速度、ピッチなど) |
不可(言語のみ) |
パフォーマンス |
非常に高速、軽量 |
やや遅く、重め |