Mac用の完全オフラインボイスチャットアプリ「SyncroVox」を作ってみました。
macOS 27 Golden Gateで新しいMac(M3以降の12GB以上メモリ)にはAFM 3 Core AdvancedというSparse MoEで20B相当のローカルLLMが内蔵されたというのが最初のきっかけでした。
FFTrans Neuで要約を作っていてMac Studio M2 MaxはAdvancedじゃない「AFM 3 Core」が入っていて、コンテキストサイズも4096(Advancedは8192)と小さくて、性能面ではまだまだMacBook Air M4 16GBに負けてないのになぁと思いつつ、実際の性能差はどのくらいだろうなと。
ちなみにGolden Gateには「fmコマンド」というコマンドラインツールが入っていて、最初にライセンス確認さえ済ませておけば
fm chat
でターミナルでチャットができます。
しかしそれでは正直、ただの賢くないLLMとの会話でしかないわけで、ローカルでもうちょっと面白いことはできないかなと。
FFTrans HUDでリアルタイム翻訳をやっていますが、以前から受付の自動化は考えていたので、ここはやっぱり互いに声でコミュニケーションできるのが良いだろうなとなったわけです。
SyncroVoxは技術面でいうとSileroVADを搭載していて、人が何か話すと音の切れ目を認識して音声認識します。
それをLLMに渡して帰ってきた回答を音声合成し、スピーカー(やイヤホン)から流す、という構成になっています。
ただ、そのままスピーカーから流すとLLM側が喋った言葉が音声認識されてループに入ってしまいます。
そこでLocalVQEを使ってマイクの音からLLMが話した音声のみを打ち消すことで、人の声だけを音声認識に渡すということをやっています。
また、いわゆるバージイン(割り込み発話)も可能としていて、LLMが長々と喋っている時も割り込んで「いや、そうじゃなくて…」と話すと、LLMのおしゃべりはその場で止まって、人の話すのを聞くターンに移ります。
肝心のAFM 3 Advancedは正直、期待していたより賢いとは言えず、首都や県庁所在地を間違えたりするレベルですが、ちょっとアホな子と会話している気分は味わえるはずです。
スペックを満たさないMacもAFM 3 Coreとは会話できますし、macOS 26 Tahoeでも表記は「Foundation Models」となりますがApple Intelligenceがオンになっていれば動作します。
どうしてももうちょい賢いLLMと話したい方にはLM Studio APIにも対応していますので、こっちで最新の12Bとかそれ以上のクラスのLLMをロードすれば多少はマシな会話内容になります。
ただ、これはこれで反応が遅いという問題もあり、特にReasoning対応モデルだとそのままではすぐに長考に入ってしまいがちです。
これに関しては、LM Studio側のMy Models(APIではない)の右サイドバーにあるInferenceの下のほうにあるプロンプトテンプレートの「テンプレート(Jinja)」の先頭に以下の行を追加しておくことで回避できるようです。
#あくまでも自己責任でご対応ください。
{%- set enable_thinking = false %}
次のバージョン以降ではSyncroVox側でも対処できればしたいとは思っています。
現状は機能としては最小限で、どちらかというとダブルトークキャンセルの面白さを感じてもらえればと思ってリリースした形です。
StoreアプリにしてApple Private Cloudでさらに賢く…という手もありますけど、それだと結局オフラインにはならないですし、日本語以外への対応などはやりつつ、将来的には受付対応などのニーズに使える方向でオフラインにこだわってみようかなと思っているところです。
なお現状はベータ版ですので、無料でお使いいただけます。
もちろん一切外部にデータが出ることはないですし、公証もしてあるので安全にお試しいただけます。




コメント