言ったとおりに:AI に書き換えられない音声入力
AI 強化の音声入力は、話した内容を書き換えます — 条件が落ち、意味が反転する。LLM による整形パイプラインが言い換えを起こす理由と、Keebye が言葉どおりにこだわる理由。
AI 強化の音声入力について、経験するまでは矛盾して聞こえる苦情があります。文字起こしは問題なかった — 台なしにしたのは、文字起こしの あと に起きたことだ、というものです。こちらはひとつのことを言い、ツールは磨かれた、自信に満ちた、少し 違う ものを届けます。条件が静かに落ちる。ヘッジが取り除かれる。自分なら絶対に言わない形に文が組み直される。そしてこのパターンの最悪版 — その場でツールをやめさせるやつ — では、意味が反転します。「テストが通るまでデプロイしないで」が、反対側から、しないで の抜けたデプロイの指示として出てきます。
気軽な音声入力なら、これは苛立ちで済みます。私が実際に音声入力を使っているやり方 — Claude Code にプロンプトを送る、Claude Code を声で動かすのワークフロー — にとっては、毒です。コーディングエージェントは言葉を仕様として受け取ります。音声入力ツールが言い換えたことなど知りません。その指示を安全にしていた条件が、口とターミナルの間でならされて消えたなら、エージェントは上機嫌でならされた版を実行します。プロンプトの本質は精度であり、AI の書き換え層は、結果を より 意図的に見せながら精度を取り除く機械です。
なぜ AI の音声入力ツールは、言ったことを書き換えるのか
カテゴリレベルの答えは、誰かが発話を歪めようとした、ということではありません。「この文字起こしをきれいにする」が本当に魅力的な機能であり、それを作る明白な方法が、生の文字起こしを言語モデルに通すことだ、というだけです。
生の発話は雑然としています。フィラー、言い直し、繰り返された単語、抜けた句読点。それを整えるよう言われた LLM は、美しい出力を出します。厄介なのは、言語モデルは、人間の校正者が「um」を消すような意味で 編集 しないことです。再生成するのです。出力は、モデルが入力の良い版だと考える新しいテキストであり、その「良い」のところから意図が漏れ出ます。有用さと流暢さに向けて訓練されたモデルには、意見があります。ヘッジはノイズに見え、条件は雑然として見え、ぎこちないが正確な言い回しは改善対象に見えます。たいていの場合、書き換えは無害です。けれども確率的で、しかも出力を見ても、どの文が文字起こしでどの文が作文なのかは分かりません。磨きは一様で、忠実さはそうではありません。
LLM による整形パイプラインの深い問題はそこです。静かに、そして自信を持って失敗する。聞き間違えた音声認識は、たいてい目に見えて間違ったものを出します。裏切る書き換え層は、目に見えて 正しい ものを出します。文法的で、もっともらしく、あなたの声をまとっている — だからこそ、反転した「デプロイしないで」は、止められずに送信されるのです。
デフォルトは、言葉どおり
Keebye の立場は単純です。音声認識モデルが聞き取ったものが、カーソルに着地する。デフォルトでは、文字起こしとターミナルの間に、あなたのより良い版を書く言語モデルは座っていません。デフォルトの整形段階は、短い決定的なルールのリストで、それだけです。
これは意図的な賭けで、バイブコーディングのユースケースから来ています。音声入力がコーディングエージェントの制御チャンネルであるとき、ツールの仕事は輸送であって著述ではありません。書き手はあなたで、読み手はエージェントで、音声入力の層は意見を持つべきではありません。そのワークフロー — プロンプトを打つ代わりにまるごと話す — は、AI プロンプトのための音声入力に整理してあります。
Keebye にも LLM による整形は あります — あとで触れます — けれどもそれは自分から有効にするもので、完全に自分のマシン上で動き、よくある形のドリフト、暴走した膨張、繰り返しを弾くためのガードの下で動作します。出力がそのチェックに落ちれば、Keebye はルールに戻ります。デフォルトはルールのままです。
では、整形は実際に何をするのか
言葉どおりであることは、生のままであることを意味しません。Keebye にはオプションの整形パスがあります — enhancement、デフォルトで有効、アプリごとに上書き可能 — けれどもモデルではなくルールベースで、やることの全リストは 1 段落に収まります。
英語のフィラー語(um, uh, erm, you know)を、単独で立っている場合に取り除きます。直後の単語の繰り返しをまとめます — 「the the」は「the」になります。空白をまとめます。先頭の文字を大文字にし、末尾が句読点で終わっていなければ終端のピリオドを足します。リストは以上です。ルールは決定的で、範囲は狭く、節の順序を意図的に入れ替えたり、否定を取り除いたり、同義語に置き換えたりはしません。
整形が走る前に、辞書の置換が適用されます。音声モデルが崩しがちな専門用語や固有名詞に対する、ユーザー定義の置き換えです。おかげで「pnpm」やモジュール名が、コードベースでの綴りどおりに届きます。
そして、ルールベースのパスですら介入しすぎだと感じるなら、enhancement をオフにしてください。Keebye は音声モデルの生の文字起こしをそのまま挿入します。フィラーも繰り返しも、全部込みで。文脈によっては — 誰かの発言を引用するとき、末尾のピリオドが邪魔になる入力欄に音声入力するとき — 生の文字起こしの方が良い選択で、アプリごとの上書きでそれを選べます。
自分から有効にする整形と、その周りの忠実性ガード
約束していた LLM の話です。より賢い整形を望む人のために、Keebye はオプションの磨き上げモード(polish_mode を local_llm に設定)を用意しています。llama.cpp 経由でオンデバイスに動く小さな Qwen3 モデルで、Metal で高速化され、どこにも何も送りません。その指示は磨き上げの狭い版です — 句読点と大文字化を直し、フィラーを取り除き、ユーザーの正確な語、言語、意味を保ち、コードとファイル名はそのまま残す。生成は決定的で(貪欲サンプリング、同じ入力 → 同じ出力)、上限が設けられています。モデルが 2 秒の期限を越えて止まったままなら、その出力は捨てられます。
けれども指示は願いであり、この記事が存在するのは、願いが保証ではないからです。だから LLM で磨かれた結果はすべて、カーソルに触れる前に忠実性ガードを通ります。出力は、元の文字起こしのトークンを少なくとも 50% 保っていなければなりません。膨張してもいけません — おおよそ元の長さの 2 倍(プラス 4 トークン)を超えたものは落ちます。暴走した繰り返しも検出されます。磨かれた結果がこれらのチェックのどれかに落ちれば、Keebye はそれを捨てて、代わりにルールベースの整形に戻します。
このガードは、モデルの出力がルールで整えた文字起こしを置き換える前に、深刻なトークンの喪失、暴走した膨張、繰り返しを捕まえます。これはヒューリスティックであって、意味論的な証明ではありません。短い書き換えや、変えられた否定は、しきい値を通ってしまう可能性があります。ぶれることが許されない条件があるなら、AI の磨き上げはオフにして、挿入されたテキストを送信前に確認してください。
正直な限界
言葉どおりは、言葉どおりです。とりとめなく話せば、とりとめのないまま着地します。自分から有効にする磨き上げでさえ、著述ではなく整形に向けて指示とガードがかけられているので、Keebye が、さまよう思考をきびきびした指示に変えることはありません。言いたいことを言うという規律は、こちら側に残ります。
ルールベースの整形は、意図的に頭が悪くしてあります。「um」は取り除きますが、文法を直すことも、だらだら続く文を組み直すことも、自分で自分に矛盾したことに気づくこともありません。それより賢いものは、この設計が避けるために存在している判断を、また持ち込むことになります。
そして忠実性が守るのは 書き換え からであって、聞き間違い からではありません。音声モデルが「cache」を「cash」と聞き間違えたなら、その誤りは忠実に保たれます — ガードは、何を言おうとしたかは知らず、何が文字起こしされたかしか知りません。言葉どおりの音声入力は、信頼の境界を STT モデルに移すのであって、境界をなくすわけではありません。(関連して、問題がモデルの文字起こしの言語そのものなら、それは別の失敗で、直し方も別です — 音声入力の言語を固定する。)
最後にカテゴリとしての枠組み。AI の磨き上げは詐欺ではありませんし、自分が話すよりなめらかに読める出力を本心から好むユーザーもたくさんいます。もしそうなら、他のツールはそこにうまく寄せていますし、私たちの比較はそれを正直に書いています — Keebye vs Wispr Flow と Keebye vs Superwhisper には、どちらにも「相手のツールの方が合う場面」の節が本当に入っています。
輸送であって、著述ではない
Keebye が差し出す取引は、意図的に狭いものです。話すと、軽く整えられた文字起こしがカーソルのある場所に着地する。その言葉が、文字どおりに動くエージェントへのプロンプトであるとき、狭いことは機能です。音声入力ツールが開発者にできる最も高くつくことは、タイプミスではありません。自分が一度も言っていない、流暢な一文です。
Keebye は macOS 向けに早期アクセス中です。下から無料トライアルを始めて、「テストが通るまでデプロイしないで」と音声入力し、その制約がそっくり整形を生き延びるか確かめてください。そのテストが、製品のすべてです。
ぶれることが許されない指示で試す
無料トライアルを始めて、重要な条件を含むプロンプト — とくに「〜しないで」を含むもの — を音声入力し、届いたものを確かめてください。
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.
続きを読む
並列エージェントにプロンプトを音声入力する、レーンごとに
コーディングエージェントを 2 つ 3 つ同時に走らせると、プロンプトそのものがボトルネックになります。いま見ているレーンを離れずに、並列レーンへ指示を届ける音声ワークフロー。
Claude Code を声で動かす:並列レーンのビルド
AI コーディングエージェントは、タイピングをボトルネックに変えました。macOS 上で、並列に走るエージェントのレーンにプロンプト、レビュー、軌道修正を音声入力するための実践的なワークフロー。
ターミナルでも生き残る音声入力
音声入力のペーストは、ターミナル、SSH、tmux、非 QWERTY レイアウトで静かに失敗します。クリップボード経由の挿入がそこで壊れる理由と、擬似タイピングモードが代わりに何をするか。