原文(日本語訳)
マイクまたはオーディオレコーダーが失敗した際に、音声入力(Voice Dictation)が無制限にリトライを繰り返していた問題を修正しました。キャプチャの失敗が連続した場合、音声入力は自動的に一時停止するようになりました。
原文(英語)
Fixed voice dictation retrying in an unbounded loop when the microphone or audio recorder fails — repeated capture failures now pause voice input
概要
これはバグ修正です。マイクへのアクセスに失敗する、あるいはOS側のオーディオレコーダー(Linuxの arecord や SoX など)が起動できない環境で /voice を有効にすると、Claude Codeが録音セッションの開始を際限なくリトライし続けてしまう問題がありました。今回の修正により、キャプチャの起動失敗が一定回数連続した時点で音声入力が自動的に一時停止し、リトライを止めるようになりました。ヘッドレスサーバーやリモートシェル、権限が拒否された環境などで無駄なリトライが発生しなくなり、CPUやログの浪費、体感的なハングを防げます。
基本的な使い方
Claude CodeのCLIで音声入力(Voice Dictation)を使うには、まず /voice コマンドで機能を有効にします。
> /voice
Voice mode enabled (hold). Hold space to record. Dictation language: en (/config to change).デフォルトは「ホールドモード」で、Space キーを押している間だけ録音され、離すと文字起こし結果がプロンプトに挿入されます。
> refactor the auth middleware to ▮
# Spaceを押しながら「use the new token validation helper」と発話
> refactor the auth middleware to use the new token validation helper▮タップ一発で開始・送信まで行う「タップモード」に切り替えることもできます。
> /voice tap実践例
ヘッドレスサーバーやCIコンテナで誤って有効化してしまった場合
マイクが物理的に存在しないヘッドレスサーバーやDockerコンテナ内で /voice を有効にしてしまうケースを想定します。修正前は、キャプチャ開始に失敗するたびに即座に再試行が走り続け、ログにエラーが延々と出力されたりターミナルの応答が悪化したりする可能性がありました。修正後は、数回連続で起動に失敗した時点でリトライが止まり、次のようなメッセージが表示されます。
Voice input is failing repeatedly and has been pausedこのメッセージが出たら、そのホストにオーディオ入力デバイスがないことを示しているため、マイク付きの環境で作業するか、音声入力を使わずにテキスト入力で作業を続行します。
SSHセッションやリモート環境でマイク権限が拒否されている場合
SSH経由の作業や、マイク権限がまだ許可されていない端末で音声入力を試みた場合も同様です。以前は権限拒否やデバイスオープン失敗のたびに内部で再試行が繰り返される可能性がありましたが、修正後は数回の失敗で自動的に音声入力が一時停止します。原因(マイク権限が未許可、リモート環境で音声パススルーがない、など)を解消した上で、再度 /voice を実行すれば通常どおり音声入力を再開できます。
# macOSでマイク権限を確認・再付与してから再度有効化
# System Settings → Privacy & Security → Microphone でターミナルを許可
> /voice注意点
- 音声入力(Voice Dictation)はローカルのマイクが必須で、Claude Code on the webやSSHセッションなど、マイクにアクセスできないリモート環境では利用できません。
- Linuxでネイティブのオーディオモジュールが読み込めない場合、Claude Codeは
arecord(ALSA)やrec(SoX)へのフォールバックを試みますが、それらも存在しない場合はインストールコマンドが案内されます。 - 今回の修正はあくまで「無限リトライを防ぐ」ためのものであり、マイクやオーディオデバイス自体の問題を自動的に解決するわけではありません。一時停止後は、マイクの接続・権限・オーディオスタックの状態を確認してから、改めて
/voiceを実行する必要があります。 - 録音が無音だった場合や接続に失敗した場合は、それぞれ個別のエラーメッセージ(
No audio detected from microphoneやVoice connection failedなど)が表示されるため、繰り返し失敗が起きている場合と区別できます。