注釈
こんにちは!SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Raspberry Pi、Arduino、ESP32に関心のある仲間たちと一緒に、さらに深く学んでいきましょう。
なぜ参加するのか?
専門家のサポート: 購入後の問題や技術的な課題を、コミュニティやチームのサポートを通じて解決できます。
学びと共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。
限定プレビュー: 新製品の発表に早期アクセスし、先行して情報を得られます。
特別割引: 最新の製品に対して、限定の割引を楽しむことができます。
祝祭プロモーションとプレゼント: プレゼント企画や祝祭プロモーションに参加できます。
👉 私たちと一緒に探求し、創造する準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!
3. 音声効果
この例では、PiCrawler(正確にはRobot HAT)の音声効果を使用します。音声効果は、 音楽 、 サウンド 、 テキスト読み上げ の3つの部分で構成されています。
i2sampのインストール
これらの機能を使用する前に、まずスピーカーを有効にして、音を出せるようにする必要があります。
i2samp.sh を実行して、このスクリプトを使ってi2sアンプを使用するために必要なすべての設定を行います。
cd ~/picrawler/
sudo bash i2samp.sh
いくつかの確認メッセージが表示されるので、すべてのプロンプトに Y で答えてください。Raspberry Piの設定が変更された後、これらの変更が有効になるためには、コンピュータを再起動する必要があります。
再起動後、再度 i2samp.sh スクリプトを実行して、アンプをテストします。スピーカーから音が正常に再生されれば、設定は完了です。
コードの実行
cd ~/picrawler/examples
sudo python3 3_sound_effect.py
プログラムが開始されると、ターミナルに操作メニューが表示されます。
キーを押すと、対応する機能がすぐに実行されます。
q:バックグラウンド音楽の再生 / 停止を切り替えます。1:複数の効果音を順番に再生します(ブロッキングモード)。2:同じ効果音をスレッドを使用して再生します(ノンブロッキング)。t:テキスト読み上げ(TTS)機能を使って「Hello」と発話します。
プログラムは継続して実行され、キー入力を待機します。
Ctrl+C を押すとプログラムが停止します。 終了前に、再生中のバックグラウンド音楽は自動的に停止します。
コード
from time import sleep
import readchar
from robot_hat import Music, TTS
music = Music()
tts = TTS()
manual = '''
Press a key to trigger actions (no Enter needed):
q: Play/Stop background music
1: Play sound effect (blocking)
2: Play sound effect (threading)
t: Text to speak
Ctrl^C: quit
'''
def main():
print(manual)
flag_bgm = False
music.music_set_volume(20)
tts.lang("en-US")
try:
while True:
# Real-time key input (no Enter required)
key = readchar.readkey().lower()
if key == "q":
flag_bgm = not flag_bgm
if flag_bgm:
music.music_play('./musics/sports-Ahjay_Stelino.mp3')
else:
music.music_stop()
elif key == "1":
music.sound_play('./sounds/talk1.wav')
sleep(0.05)
music.sound_play('./sounds/talk3.wav')
sleep(0.05)
music.sound_play('./sounds/sign.wav')
sleep(0.5)
elif key == "2":
music.sound_play_threading('./sounds/talk1.wav')
sleep(0.05)
music.sound_play_threading('./sounds/talk3.wav')
sleep(0.05)
music.sound_play_threading('./sounds/sign.wav')
sleep(0.5)
elif key == "t":
tts.say("Hello")
except KeyboardInterrupt:
print("\nquit")
finally:
# Stop music before exit to reduce error messages
try:
music.music_stop()
except Exception:
pass
if __name__ == "__main__":
main()
仕組みは?
背景音楽に関連する機能は以下の通りです:
music = Music(): オブジェクトを宣言します。music.music_set_volume(20): 音量を設定します。範囲は0~100です。music.music_play(./musics/sports-Ahjay_Stelino.mp3): 音楽ファイルを再生します。ここでは、./musicsパスにある sports-Ahjay_Stelino.mp3 ファイルを再生します。music.music_stop(): 背景音楽の再生を停止します。
注釈
異なる音楽や効果音を musics または sounds フォルダに追加できます。追加方法は:ref:filezilla を参照してください。
サウンドエフェクトに関連する機能は以下の通りです:
music = Music()music.sound_play('./sounds/talk1.wav'): サウンドエフェクトファイルを再生します。ここでは、./musicsパスにある talk1.wav ファイルを再生します。music.sound_play_threading('./sounds/talk1.wav'): サウンドエフェクトファイルを新しいスレッドで再生し、メインスレッドを停止しません。
テキスト読み上げに関連する機能は以下の通りです:
tts = TTS()tts.say(words): テキストを音声に変換して読み上げます。tts.lang("en-US"): 言語を設定します。
注釈
言語は、 lang("") パラメータで次のような文字列を設定することで指定できます。
zh-CN |
中国語(普通話) |
en-US |
英語(アメリカ) |
en-GB |
英語(イギリス) |
de-DE |
ドイツ語(Deutsch) |
es-ES |
スペイン語(España) |
fr-FR |
フランス語(フランス) |
it-IT |
イタリア語(Italia) |