原文(日本語に翻訳)
音声モードが有効な状態で非常に高速にタイピングした際に、音声ディクテーションがスペースを消失させたり、誤って録音を開始してしまう問題を修正
原文(英語)
Fixed voice dictation swallowing spaces and spuriously starting a recording during very fast typing when voice mode is enabled
概要
Claude Codeの音声入力(ディクテーション)機能には、Spaceキーを押し続けると録音を開始する「ホールドモード(hold-to-record)」があります。このモードはターミナルが送る高速なキーリピートイベントを検出して「押し続け」を判定する仕組みのため、ユーザーが非常に速くタイピングしている場合に、そのキーリピート的な入力パターンと誤認識されることがありました。その結果、(1) 入力したはずのスペースが消えてしまう、(2) タイピング中に意図せず音声録音が開始されてしまう、という2つの不具合が発生していました。v2.1.196でこの干渉が修正され、高速タイピング中は誤作動しなくなりました。
基本的な使い方
音声入力モードは /voice コマンドで有効化します。デフォルトでは Space キーを押し続けることで録音を開始する「ホールドモード」が使われます。
# Claude Code を起動
claude
# 音声入力を有効化(ホールドモード)
/voice
# => Voice mode enabled (hold). Hold space to record.
# タイピングと音声入力を同じプロンプト内で混在させて使える
> refactor the auth middleware to ▮
# Spaceを押し続けて発話: "use the new token validation helper"
> refactor the auth middleware to use the new token validation helper▮ホールドモードは、ターミナルから送られる連続したキーリピートイベントを検知して「キーが押し続けられている」と判断し、検知までの短いウォームアップ時間を経てから録音を開始します。ウォームアップ中に入力された最初の数文字は一旦プロンプトに入力された後、録音が有効になったタイミングで自動的に取り除かれる仕様です。
実践例
タイピングと音声入力を切り替えながら作業する
通常のコーディング指示はキーボードで入力し、長い説明や込み入った要件だけを音声で補う使い方です。
修正前の挙動:
1. /voice でホールドモードを有効化
2. 通常の速度を超える猛スピードでタイピング(高速な単語入力やペースト相当の操作)
3. ❌ キーリピート的な入力パターンとして誤検出され、
入力中のスペースが消えてしまう、または録音が勝手に始まってしまう
4. 入力していた文章が壊れる、もしくは意図せず音声入力モードに切り替わる
修正後の挙動:
1. /voice でホールドモードを有効化
2. 同じように高速でタイピング
3. ✅ キーリピート検出と通常入力が正しく区別され、
スペースの欠落も誤録音の開始も発生しないスニペット展開やショートカット連打を使うワークフロー
エディタの自動補完確定やスニペット展開、IME確定後の連続スペース入力など、瞬間的に複数のキーイベントが連続するケースでも影響を受けていました。
# 例: コメントやコミットメッセージの下書きで単語区切りのスペースを連続入力
git commit -m "fix: handle edge case in retry logic and update tests"
# 修正前: 高速入力時にスペースが一部消失し
# "fix: handle edge casein retry logicand update tests" のような欠落が発生し得た
# 修正後: 通常のタイピング速度を問わずスペースは正しく保持される長文プロンプトをペースト相当の速度で入力する場面
ターミナルやツールの自動入力・スクリプト経由でテキストを高速投入するようなワークフローでも、音声モードがオンのままだと意図しない録音開始のリスクがありました。
1. /voice でホールドモードを有効化したまま作業を継続
2. 自動化ツールやマクロから高速にテキストが入力される
3. ✅ 修正後: 高速入力が誤って録音トリガーとして扱われず、
音声モードがオンでも安心してキーボード主体の作業に戻れる注意点
- この修正はホールドモード(
/voice hold、デフォルト)における高速タイピング時の誤検出に関するものです。録音の開始/停止を1回のタップで切り替える「タップモード(/voice tap)」はキーリピート検出を使わないため、そもそもこの種の干渉は発生しません。 - ホールドモードのキーリピート検出に依存したくない場合は、
/voice tapでタップモードに切り替えるか、meta+kのような修飾キーの組み合わせにvoice:pushToTalkを再割り当てすることで、ウォームアップなしに録音を開始できます。 - ターミナル側でOSレベルのキーリピートが無効化されていると、ホールドモードの「押し続け」自体が検出されないことがあります。その場合もタップモードへの切り替えが推奨されます。
- 音声入力はClaude.aiアカウントでの認証が必要な機能で、APIキー直接利用やAmazon Bedrock、Google Vertex AI、Microsoft Foundry経由では利用できません。また、Claude Code on the webやSSHなどのリモート環境でも利用できません。