インターネットが落ちても動く音声入力アプリ
クラウドの音声入力はネットワークと運命を共にします。Keebye は音声認識を完全にオンデバイスで実行します — インターネット不要、音声は Mac の外に出ず、障害で壊れることもありません。
壊れたときにしか姿を見せない苦情があります。だから、自分の身に起きるまでは軽く見られがちです。クラウドの音声入力はネットワークに依存する、という話です。プロバイダに障害が起きれば、音声入力のキーは何もしなくなります。ホテルの Wi-Fi が切れれば、一文がスピナーの中に消えます。飛行機。トンネルの中の電車。ちょうど悪いタイミングで再ネゴシエーションする VPN。これは特定の製品の欠陥ではなく、往復に依存するということが意味するものです。
むごいのは、何が 失われるかです。メモアプリが落ちたら、テキストファイルを開けばいい。音声入力が落ちたら、入力手段そのものを失います。身体で覚えた道具を、文の途中で、たいていは手が別のことでふさがっている最中に。そもそも、それが音声入力していた理由なのに。
可用性の苦情の下には、プライバシーの問いが横たわっています。自分の音声はマシンの外に出るのか。クラウドで文字起こしする経路では、考えを声に出している録音 — クライアントの名前、未発表の機能、同僚に説明しているセキュリティの問題 — が、テキストになるために他人のインフラへ旅をします。その経路は、自分の制御の外にあるセッション、アカウント、サービスの可用性にも依存しうるものです。
私は、この答えを機能として言語化するより先に作りました。自分の要件が身も蓋もなかったからです。Wi-Fi を切った状態で動かなければならない。それが実際にどういう形になり、何を代価とするかを書きます。
なぜクラウドの音声入力はゼロまで落ちるのか
カテゴリレベルの仕組みを言葉にする価値があります。製品がどれだけ良くなっても、この苦情が完全には消えない理由を説明してくれるからです。
クラウドの音声入力のループには、少なくとも 4 つのリンクがあります。自分のマシンで音声を取り込み、サーバーへ送り、そこで推論を走らせ、テキストを送り返す。どのリンクも依存先です。自分のネットワーク、相手のネットワーク、相手の認証層、相手のキャパシティ、相手の稼働率。この連鎖はたいてい問題ありません。けれどもどれかひとつが切れれば、ループ全体が切れ、しかも ゼロ に切れます。「遅くなる」でも「精度が落ちる」でもなく、カーソルには何も届きません。劣化なら耐えられますが、音声入力は沈黙まで劣化します。
プロバイダはこれに対して本気で作り込めますが、自分の持ち物でないリンクは直せません。ホテルのルーター、飛行機、会社の VPN、自分と相手の間のバックボーン障害。複数のシステムに可用性が依存する道具は、そのうちどれかひとつが使えないときに落ちうるのです。
そもそもフォールバックすべきクラウドがないとどうなるか
Keebye のアーキテクチャは、この問いを取り除くことで答えます。音声認識は完全にオンデバイスで動きます — ONNX のモデル、ローカルの推論、自分の Mac のシリコンの上で。音声入力の経路にネットワーク通信はゼロです。「最小限にしています」でも「まとめて送っています」でもなく、ゼロ。テレメトリもありません。まったくありません。キーを押して話すとき、あなたの代わりにマシンを出ていくパケットはひとつもありません。
アーキテクチャ上の要点を強調しておきたいと思います。これが「オフラインモード」との違いだからです。オフラインモードはフォールバックです。通常の経路はクラウドへ向かい、クラウドに届かないときに、劣化したローカルの経路が引き継ぐ — アプリが間に合って気づけば、ローカルの経路が保守されていれば、文の途中での受け渡しがうまくいけば。Keebye にはそうした受け渡しがありません。受け渡す 元 になるクラウドの経路がないからです。ローカル推論はバックアップの計画ではなく、唯一の計画です。上流の障害がこれを壊せないのは、他の国での停電が机のランプを消せないのと同じ理由です。フォールバックによる耐性ではなく、構造による耐性です。
静かな方の苦情も、設定ページなしにここで答えが出ます。音声はマシンを出ません — 通信時に暗号化されるでもなく、匿名化されるでもなく、ただ 送られない。送る先が存在しないからです。音声入力の履歴をオンにした場合に保存されるのは、自分のディスク上のローカルな SQLite データベースに入るテキストだけです。(その履歴はそれ自体が使い勝手の物語で — 繰り返し出てくる「私の音声入力はどこへ行った?」という苦情です — 音声入力がただ消えてしまってはいけないで扱いました。)そしてアカウントとセッションの脆さは、アカウントごと消えます。音声入力の経路には期限切れになるクラウドのセッションがないので、自分と動くホットキーの間に再認証が立ちはだかることもありません。
インターネットが必要になる、唯一のとき
必要な正直さを、はっきり書きます。モデルは何らかの方法でマシンに乗らなければなりません。初回起動時に、Keebye は音声モデルをダウンロードします。英語エンジンでおよそ 700 MB、多言語エンジンを有効にすると約 1.3 GB です。これは本物のダウンロードで、エンジンごとに一度、インターネットが必要です。
そのあとはモデルがディスク上にあり、文字起こしはネットワークの有無にかかわらず、削除するか差し替えるまでローカルで走ります。ただし、その初回起動が飛行機の中だったなら、着陸するまではどうにもなりません。セットアップは旅の最中ではなく、出発前に済ませてください。大西洋の上で気づくより、私から聞いておいてほしいところです。
精度の問い、正直に答える
ダウンロードは小さな注意点です。ここからが大きい方で、オンデバイスのツールはここを飛ばしたがります。
最大級のクラウドモデルは、オンデバイスのモデルより精度が高いことがあります。 サーバーラックを埋めるモデルには、700 MB のファイルにはない容量があります。そうでないふりをするのは、読み手の知性に対して失礼でしょう。私が言えるのは — そして両方と暮らしてきて信じているのは — その差はかなり縮まったということ、そしてもっと重要なことに、失敗の仕方 が質的に違うということです。オンデバイスのモデルの最悪の日は、聞き間違えた単語を直すことです。クラウドのモデルの最悪の日は、出力ゼロです。その精度は可用性を掛け算した結果であり、電車の中でゼロになるのは可用性の項だからです。どちらの失敗を引き受けたいかは、その人の一日次第です。私の一日には、電車が多すぎます。
今日のところ macOS のみで、早期アクセスです。 Windows 版はなく、早期アクセスが意味する粗さがあります。環境が Windows 中心なら、正直な答えは、Keebye はまだ役に立てない、です。
すでに使っているツールと比べているなら、比較ページがこの議論の公平な版です。Keebye vs Superwhisper は、オンデバイスの文字起こし経路を持つ 2 つの製品を比べています。Keebye vs Wispr Flow は、ローカルかクラウドかという判断を扱っています。そして比べている相手が macOS 組み込みの音声入力なら、Mac のための音声入力が、組み込みの得意なところと Keebye が違うところを扱っています。
可用性は機能である
音声入力のカテゴリは何年も精度のパーセンテージで競ってきましたし、精度は大事です。けれども人にツールを乗り換えさせる苦情は、めったに「一度聞き間違えた」ではありません。「また動かなくなった、理由は分からない、直すのに何かにログインさせられた」です。可用性 — 退屈で、地味な可用性 — は、失われたときにだけ気づく機能です。
入力手段をキーボードと同じくらい信頼できるものにする方法は、キーボードと同じ依存リストを与えることです。目の前のマシン、それだけ。設計はそれで全部です。
Keebye は macOS 向けに早期アクセス中です。下から無料トライアルを始めて、インターネットがあるうちに初回のダウンロードを済ませ、それからトンネルに入る — あるいは Wi-Fi を切るだけでも — そして同じ文をもう一度音声入力してみてください。
ネットワークが切れても音声入力を続ける
無料トライアルを始めてモデルを一度ダウンロードし、Wi-Fi を切った状態で同じプロンプトを試してください。
Start free trialEarly access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.
続きを読む
声はどこへ行くのか:音声入力のプライバシーを正直に
音声入力の音声がどこへ流れうるのか、どんなプライバシーの問いを立てるべきか、そして Keebye が音声認識と整形を Mac の上に留める方法。
なぜ音声入力アプリは最初のひと言を食べてしまうのか
ホットキーを押して話し始めると、最初のひと言が切れている。コールドスタートによる頭切れがなぜ起きるのか — そして、温めたマイクと 500 ミリ秒のプリロールがそれをどう直すのか。
音声入力が、ただ消えてしまってはいけない
長い考えを音声入力したのに、挿入が失敗して、テキストがそのまま消える。音声入力アプリが言葉を失う理由と、Keebye が保持するローカルでテキストのみの履歴。