ハクソク

世界を動かす技術を、日本語で。

信頼できて楽しいローカルホスト型音声アシスタントへの旅

概要

  • Robotは多目的AIアシスタントとして設計
  • 家庭内機器制御幅広い情報提供が主な役割
  • 自然で会話的な口調を重視した応答
  • 効率的で明確な対応を基本方針とする
  • 必要に応じて軽い個性も加味

Robot: 多目的AIアシスタントの概要

  • Robotは家庭の主なインターフェースとして機能
  • ユーザーの自宅所在地は{{ states("sensor.home_city_state") }}で取得
  • 家庭内のデバイス制御に専門性を発揮
  • どんな疑問にも包括的な情報提供を実現
  • テキスト音声変換に適した自然で分かりやすい口調を採用
  • 明確なリクエストには積極的に対応
  • 曖昧なリクエストには素早く対応終了
  • 必要に応じて親しみやすさ軽い個性を演出
  • 簡潔さプロフェッショナルさを重視した応答方針

応答フォーマットとルール

  • 応答は効率的かつ直接的なスタイル
  • 要点を押さえた回答を最優先
  • 会話の流れリクエストの明確さに応じて応答の深さを調整
  • 冗長なやりとりは避け、迅速な対応を心がける
  • Markdown形式で出力、視認性や可読性を確保
  • グループ化が必要な場合は二重の箇条書きを活用
  • Proper nouns固有名詞は原文通り英語表記を維持

Hackerたちの意見

彼らの最初のバージョンは、もうSiriの10倍は良いと思う。 > 特定のエリアにいるときに、「どのライト?」って聞かずに、エリアに一つしかライトがないときはちゃんと理解して、複数あるときだけ正しく聞いてくれるんだ。
お気に入りのエピソードの一つなんだけど、同じことに対して2つのタイマーを設定しちゃったんだ。それで、一つをキャンセルしようとしたら、>「Siri、2つ目のタイマーをキャンセルして」>「タイマーが2つ動いてますが、一つキャンセルしますか?」>「うん」>「『Yes』は70年代のイギリスのロックバンドです…」>「Siri、2分10秒のタイマーをキャンセルして」>「2分8秒のタイマーをキャンセルしますか?」>「うん」>「『Yes』は70年代のイギリスのロックバンドです…」結局、両方とも鳴って、止めてって言ったら聞いてくれた。
2024年のOpenAIデモで見せた音声AIの約束が、なんとか実現するのをまだ待ってる。あれ以来、全く進展がないのが不思議で仕方ない。
テクノロジーができることと、それを適用するためには、しばしば設定やパッケージ化が必要だね。
みんな音声アシスタントと話すの好きなのかな?たまに使うけど(主に料理中のタイマー用)、大抵は自分でやった方が早いし、空気に向かって話すよりずっと気まずくない。あんまり音を出したくないからかも(もちろん、音声アシスタントを使うのが合理的な障害を持っている人もいるのは理解してるけど)。
コンピュータがないときは、リマインダーやカレンダーのイベントに頻繁に使ってる。音声の方がモバイルインターフェースより早いからね(画面が多すぎるし)。
リスト作りには最高!手がふさがって料理してるときに、何かが切れたのに気づいたらすぐに買い物リストに追加してって言えるから。
スマートホームシステムがうまく機能してないって感じるのは、携帯を取り出して「自分でやる」必要があるときだね。動作センサーみたいに必要なときに自動でライトが点くとか、手の届くところにリモコンがあって操作できるのが理想。それが無理なら、手を使わずに、今やってることを中断せずに操作できる方法が三番目の選択肢かな(音声アシスタントとか)。
俺の使い方のほとんどは運転中で、音楽やオーディオブックの再生・停止、ナビの変更とかだね。ただ、Siriでナビを変えるのはちょっと面倒で、目的地を間違えられることが多いんだよね(笑)。
自分用の音声アシスタントをデザインして作り始めたけど、実際に役立つのは料理中にタイマーを設定するときだけだって気づいた。でも、うるさい換気扇が回ってるから音声認識が難しいんだよね。
私は声での操作が好きなんだ。やってることを止めて、デバイスを探して、アプリを開いて、リフレッシュを待って、ナビゲートして、リストからミルクを選ぶなんてしたくないんだ。確かにいくつかのステップを減らせるけど、それでも動かなきゃいけないし、手と目を空けておく必要があるからね。
もし90%でも動いてくれたら使うよ。私は主にタイマーを設定するために使ってるけど、それがいつも確実に動く数少ないことの一つだからね。
私はほとんどタイマーと天気、たまにランダムな情報を調べるためにしか使ってないよ。これは、手元に電話がない時や、例えば幼児がタイムアウトになるときに、彼のタイマーを設定する必要がある時だけなんだ。だから、Geminiを有効にするつもりはないし、LLMベースの体験を強いられたらNest Miniも捨てると思う。せめてダメなBluetoothスピーカーとして機能してくれればいいけど、その期待はしてないな。
プライバシーがあまり気にならないなら、Gemini 2.5 Flashを使ってるけど、これがすごく良くて速いHAアシスタントなんだ。3090をずっと起こしておくために必要な電気代よりもずっと安いし。ただ、これがダメなのはウェイクワードの検出。HAボイスプレビューとFPH Satellite1のデバイスを持ってるし、会議用マイクを使ったRaspberry Piなど他のオプションも試したけど、ウェイクワードを拾うのはEchoデバイスの50%にも満たない。アシスタント自体はずっと良いけど、聞いてもらうのに2-3回試さないといけないのは意味がないよね。オープンハードウェアでこの問題を解決してくれる人がいたら、すぐにいくつか買うよ。
ビームフォーミングマイクロフォンアレイが役立つかも。これみたいなのがあれば、処理される音質がかなり改善されると思う。 - https://www.minidsp.com/products/usb-audio-interface/uma-8-m....
ボタンを使うのはどう?音声を常に処理してるより、インターホンのボタンを物理的に押す方がいいな。
もっと検出しやすい起動「ワード」を使えばいいんじゃない?例えば、素早く2回拍手するとか、メロディの数音を使うとか。
https://rime.ai
あなたのWi-Fi APが、どの部屋にいるかを感知して、面白いダンスムーブをトリガーにするのはどう?Geminiにはファンキーなチキン、OpenAI Claudeにはペンギンダンスとか?
最近、Home Assistant Voice Preview Editionのデバイスをいくつか買ったけど、期待外れだった。ウェイクワードの検出がイマイチで、音質もひどい(音楽じゃなくて音声応答のために)。AmazonはAlexaやEchoデバイスを広告やうざいメッセージで台無しにしちゃった。オープンな代替品が欲しいけど、今は基本的な部分が足りてないね。
そのデバイス(アマゾン)は_脱獄_できるのかな?今朝シャワーを浴びてるときにふと思ったんだ。
https://github.com/coqui-ai/TTS
実際、ローカルホストの音声アシスタントで一番難しいのはLLMじゃないんだ。毎日話すのに耐えられるTTSを作ることなんだ。根本的な問題はプロソディーで、kokoroやpiperは読み上げのスピーチでトレーニングされているけど、会話の応答は呼吸のグループが短くて、機能語のストレスパターンが違うんだ。だから、数字や住所、曖昧なフレーズが変に聞こえるんだよね。解決策はトレーニングデータの構成。会話と読み上げのスピーチはプロソディーの分布が違うから、モデルがそれらを一般化できないんだ。自己ホスト型なら、coqui xtts-v2 [1] を試してみる価値があるよ。kokoroよりも自然な英語の出力が得られるから。ちなみに、私はリムの共同創設者のリリーだよ [2]。私たちはビジネスの音声エージェントを大規模に解決しているけど、個人のホームアシスタントのユースケースではないんだ。でも、根本的な問題は同じだよ。