FaceBookに投稿を始めている。 Amazon Alexa もRasPiで実現!
工夫点を忘れないようメモしておく。 <ZeroInstallでも> Google Homeに後れを取るまいと、ここまで頑張った。 ・RasberryPiZeroでも実行 ・マイクのMute⇒voiceで発話 ・ボタンを押して・・・のとき「HeyGugo」も可能 ・英語に切り替えて ・set to Japanese ・~は西暦何年? ・今日は何曜日ですか ・私は何曜日に生まれたの ・パリの時刻は ・イスタンブールはどこの首都ですか ・NHKでは何を放送している ・その番組詳細を知りたい ・フジテレビの午後10時の番組を調査して ・その午後11時の番組を調査したい ・その次は何か ・京浜東北線は順調ですか ・その状況は進んでいますか ・愚痴聞いてタンバリン ・般若心経を聴かせて ・YouTubeでトランプさんの孫のPPAPが見たい ・YouTubeでトランプさんの孫のPPAPをキャストしたい ・もう一度 ・もう一度同じもの
<テクニック上の工夫> 1)ボタン押下とHotwordの並行両立のために def on_button_press(): global buttonFlag, events if buttonFlag==False and events: buttonFlag = True events.offer(Event(EventType.ON_NO_RESPONSE,{'button':'ON'})) buttonFlag = True ボタン押下をイベント捕獲し、assistantのイベントQueへ追加 さらにチャタリング対策(二重イベント排除)のフラグ制御 2)ミュート解除による発話許可 bashによるマイク音量変化検出(--use_muteのときのみ) nanaF=0 arecord -d 1 -t raw - >nul arecord -d $1 -t raw - | od -v -A n -t x1 | tr -Cd '[0123456789abcdef\EOF]' | while read -N 2 i do MOJI=${i} if [ "$MOJI" = "7f" -o "$MOJI" = "80" ]; then (( nanaF-- )) else (( nanaF++ )) fi if [ $nanaF -gt 20 ]; then echo $nanaF exit 0 fi if [ $nanaF -lt -2000 ]; then exit 0 fi done stdoutへの文字出力で発話開始を判断 ただし、この検出の間、マイクを完全解放するために、 assistant.conversation_stream._source.close() 検出後復活: audio_source._audio_stream = sd.RawStream( samplerate=audio_sample_rate, dtype='int16', channels=1, blocksize=int(audio_block_size/2) ) 3)打ち切りのための発話検出 HotwordかボタンでQueに追加されたイベントを調べてLoopする events.qsize()で確認後、events.get(False)で消費しておく 4)ARMv6での実行のためのStream対策 assistの頭で、ファイルを確保 if arch_v6: try: (fd, tts_wav) = tempfile.mkstemp(suffix='.wav', dir=TMP_DIR) except IOError: logger.exception('Using fallback directory for TTS output') (fd, tts_wav) = tempfile.mkstemp(suffix='.wav') os.close(fd) fd = open(tts_wav, 'wb') 途中のオーディオデータをファイルに出力 if len(resp.audio_out.audio_data) > 0: if arch_v6:fd.write(resp.audio_out.audio_data) 最後に、オーディオデータをAplayで発声 if arch_v6: fd.close() with open(tts_wav, 'rb') as wav: frames = wav.read() if len(frames)>0: cmd = "aplay -q -t raw -c 1 -f s16 -r 16000" os.unlink(tts_wav) 5)assistantの完全停止のために subprocess.Popen(["killall","python"]) sys.exit(0) 6)番外 Hey Google をガイドするアナウンスが、自分自身をwakeしてしまうので、 hotAssist.set_mic_mute(True) # self hotword suppless subprocess.call(["aplay","hey.wav"],stderr=subprocess.DEVNULL) hotAssist.set_mic_mute(False) なお、omxplayer の途中停止は、python3 からは次のように投入。 player.stdin.write('q'.encode('utf-8'))
Chromecastへのキャストで、YouTubeのURLを正しく伝える試行錯誤が大変だった。 (&をスルーで伝えるために) cmdl = “curl -G –data-urlencode url='”+html+”‘ http://“+ipad+”:5000/play/” ↓ mc.play_media(mp4_url.strip(“‘”), ‘video/mp4’)
sudo -H pip install –upgrade youtube-dl
メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です
コメント ※
名前 ※
メール ※
サイト
Δ
生成AIの芸術力/技術力コーナー。
ChatGPTはコチラ。
ルービックキューブ解法(6版) 2×2~8×8 お告げナビ V6 アプリ・インストール (V6.3) 2×2/3×3/4×4/・・・/8×8 New!
全員一覧 メンバー依頼
故馬場顧問ブログリンク切れ 在京白堊会・掲示板 白堊友の会(SNS) 白堊歌会の部屋 盛岡一高応援ブログ 盛岡一高硬式野球部 岩手ふるさとの広報誌(県央編) 岩手県道路情報提供 岩手山Live映像
工夫点を忘れないようメモしておく。
<ZeroInstallでも>
Google Homeに後れを取るまいと、ここまで頑張った。
・RasberryPiZeroでも実行
・マイクのMute⇒voiceで発話
・ボタンを押して・・・のとき「HeyGugo」も可能
・英語に切り替えて
・set to Japanese
・~は西暦何年?
・今日は何曜日ですか
・私は何曜日に生まれたの
・パリの時刻は
・イスタンブールはどこの首都ですか
・NHKでは何を放送している
・その番組詳細を知りたい
・フジテレビの午後10時の番組を調査して
・その午後11時の番組を調査したい
・その次は何か
・京浜東北線は順調ですか
・その状況は進んでいますか
・愚痴聞いてタンバリン
・般若心経を聴かせて
・YouTubeでトランプさんの孫のPPAPが見たい
・YouTubeでトランプさんの孫のPPAPをキャストしたい
・もう一度
・もう一度同じもの
Chromecastへのキャストで、YouTubeのURLを正しく伝える試行錯誤が大変だった。
(&をスルーで伝えるために)
cmdl = “curl -G –data-urlencode url='”+html+”‘ http://“+ipad+”:5000/play/”
↓
mc.play_media(mp4_url.strip(“‘”), ‘video/mp4’)
sudo -H pip install –upgrade youtube-dl