Claude Media
voiceEnabled/voice設定でClaude Codeの音声入力を使う

voiceEnabled/voice設定でClaude Codeの音声入力を使う

Claude Code CLIには/voiceコマンドで有効化する独自の音声ディクテーションがあります。settings.jsonのvoice設定、hold/tapモードの違い、必要条件をまとめます。

Claude Code CLIには、プロンプトを声で入力できる音声ディクテーション機能があります。/voiceコマンドで都度切り替えられますが、常に有効にしておきたいならsettings.jsonvoiceオブジェクトに直接書く方法もあります。この記事ではvoice.enabledと旧設定のvoiceEnabledの違い、hold/tapという2つの入力モード、有効化に必要な条件をまとめます。

Claude Code voiceEnabled設定で何ができるか

voiceEnabledは、/voiceを打たなくてもセッション起動時から音声ディクテーションを有効にしておくための設定キーです。ただし現在の公式ドキュメントでは、voiceEnabledレガシーなエイリアスとして扱われており、voice.enabledを含むvoiceオブジェクトでの設定が推奨されています。

{
  "voice": {
    "enabled": true,
    "mode": "tap",
    "autoSubmit": false
  }
}

/voiceを一度実行して有効化すると、このvoiceオブジェクトはClaude Codeが自動で書き込みます。手動で設定ファイルを編集する必要は本来なく、/voiceを打つだけでも十分です。ただし新規マシンのセットアップや、複数端末で同じ設定を配布したい場合は、voiceオブジェクトを直接settings.jsonに書いておくほうが確実です。

有効化に必要な条件

音声ディクテーションは、録音した音声をAnthropicのサーバーへ送って文字起こしする仕組みです。ローカル処理ではないため、次の3条件が必須で、WSL環境で使う場合はさらにWSLgも必要です。

条件内容
Claude.aiアカウントでの認証内容APIキー直接指定・Bedrock・Vertex AI・Foundry経由では使えない
HIPAA対応が有効でない組織内容該当する場合/voiceが組織ポリシーによる無効化メッセージを出す
ローカルマイク内容Claude Code on the webやSSHセッションのようなリモート環境では使えない
WSLgの有無(WSL利用時)内容WSL2のMicrosoft Store版に同梱。WSL1では使えないため、ネイティブWindowsで実行する

文字起こしはClaudeへのメッセージ消費やトークン数にカウントされず、/usageの集計にも影響しません。録音自体はmacOS・Linux・Windowsでネイティブモジュールを使い、Linuxでモジュールがロードできない場合はarecord(ALSA)かrec(SoX)にフォールバックします。どちらも無い場合、/voiceはインストールコマンドを表示します。VS Code拡張機能でも同じClaude.aiアカウント要件で使えますが、SSH・Dev Containers・Codespacesを含むVS Code Remoteセッションでは使えません。マイクがローカル側にあり、拡張機能がリモートホスト側で動くためです。

hold modeとtap modeの使い分け

/voiceは引数でモードを指定でき、settings.jsonのvoice.modeでも同じ値を設定できます。

モード動作向いている場面
hold(既定)動作キーを押している間だけ録音、離すと確定向いている場面短いプロンプトを都度話す通常の使い方
tap動作1回タップで録音開始、もう1回で送信向いている場面キーを押し続けにくい環境、長めの発話

hold modeはプッシュトゥトーク方式で、Spaceキーを押している間だけ録音します。ターミナルからのキーリピートイベントを検知して押しっぱなしと判定する仕組みのため、録音開始までにわずかなウォームアップが挟まります。ウォームアップ中に入力される最初の数文字は録音開始と同時に自動で消えるので、通常の入力に影響はありません。ウォームアップを省きたい場合はtapモードに切り替えるか、meta+kのような修飾キーの組み合わせにリバインドします。修飾キーの組み合わせは最初のキー押下で即座に録音を始めます。

tap modeはウォームアップなしで、Spaceを1回押すと録音開始、もう1回押すと停止して送信されます。文字起こし結果が3語以上ある場合のみ自動送信され、短すぎる場合は入力欄に挿入されるだけで送信されません。誤タップで意図しない内容が送信される事故を防ぐ設計です。日本語・中国語・タイ語のように単語がスペースで区切られない言語では、単語単位でカウントして3語の閾値を判定します。

hold modeでもautoSubmit: trueを設定すれば、キーを離した時点で3語以上あれば自動送信されます。既定はfalseで、キーを離した後にEnterを押すまで送信されません。

音声入力キーのリバインドと録音言語の変更

音声入力のトリガーキーはChatコンテキストのvoice:pushToTalkにバインドされ、既定はSpaceです。~/.claude/keybindings.jsonで変更できます。

{
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "meta+k": "voice:pushToTalk",
        "space": null
      }
    }
  ]
}

hold modeでは、vのような単独の文字キーへのリバインドは避けます。ウォームアップ中にそのキーがそのまま入力欄へ打ち込まれてしまうためです。Spaceのままにするか、meta+kのような修飾キーの組み合わせを使うと安全です。キーバインドの全体的な設定方法はClaude Codeショートカット一覧にまとめています。

文字起こしの言語は音声専用の設定ではなく、Claudeの応答言語を決めるlanguage設定を共用します。空欄の場合は英語がデフォルトです。

{
  "language": "japanese"
}

対応言語には日本語(japanese)を含む20言語があり、languageが対応リストに無い値の場合は/voiceが警告を出して英語にフォールバックします。文字起こしはコーディング用語向けに調整されており、regexOAuthJSONlocalhostのような単語は正しく認識されます。現在のプロジェクト名とgitブランチ名も認識ヒントとして自動的に加味されます。

エージェント表示画面のバックグラウンドセッションでも使える

音声入力はメインのチャット入力欄だけでなく、エージェント表示画面(agent view、バックグラウンドで動くセッションの一覧・返信画面)でも使えます。詳細確認パネル(peek-panel)での返信入力や、画面下部の送信欄(dispatch入力欄)にフォーカスがある状態で、同じプッシュトゥトーク(push-to-talk)キーを押し続けるかタップすれば、バックグラウンドセッションへの返信を声で入力できます。この対応はv2.1.145から入っており、それ以前のバージョンではagent view側での音声入力は使えません。複数のバックグラウンドタスクを並行して進めながら、都度キーボードに持ち替えずに指示を出したい場面で有効です。

有効化してもエラーで使えないときの見分け方

/voice実行時に出るエラーメッセージで、原因の切り分けができます。

  • Voice mode requires a Claude.ai account: APIキー直接指定や外部プロバイダーで認証しています。/loginでClaude.aiアカウントに切り替えます
  • Voice mode is disabled by your organization's policy: 組織のコンプライアンス設定で無効化されています。組織管理者への確認が必要です
  • Microphone access is denied: OSのマイク権限設定でターミナルアプリを許可します
  • No audio recording tool found(Linux): ネイティブモジュールがロードできず、フォールバック用のSoXも未インストールです。エラーメッセージに表示されるコマンドでインストールします
  • Voice mode could not find a working audio recorder in WSL: WSLgはPulseAudio経由で音声を扱うため、SoXのALSAバックエンドだけでは録音できません。sudo apt install sox libsox-fmt-pulseでPulseAudioバックエンドを追加します
  • Voice mode requires a microphone, but SoX could not open an audio capture device: SoXは入っているものの、ホストにマイク自体が無い状態です。ヘッドレスサーバーやコンテナ環境で発生しやすく、マイクを備えたマシンでの実行が前提になります
  • Voice input is failing repeatedly and has been paused: 録音の失敗が連続すると、Claude Codeは新しい録音の試行を一時停止します。マイク自体の権限やハードウェアに根本原因があることが多く、上記の対処を先に済ませてから再度音声入力を試します

よくある質問

voiceEnabledとvoice.enabledはどちらを使えばいいですか

voiceEnabledはレガシーなエイリアスとして残っていますが、公式ドキュメントはvoiceオブジェクト(enabledmodeautoSubmit)の使用を推奨しています。新規に設定するならvoice.enabledを使うほうが、モードや自動送信の挙動も同じ場所でまとめて管理できます。

音声入力はリモート環境でも使えますか

使えません。Claude Code on the webやSSHセッションのようなローカルマイクが無い環境では動作しません。WSL環境ではWSLgが必要で、WSL1では使えないためネイティブWindowsで実行します。

音声入力を使うとトークンや利用上限を消費しますか

しません。文字起こしはClaudeへのメッセージ消費にカウントされず、/usageの集計にも影響しません。録音した音声は文字起こしのためだけにAnthropicのサーバーへ送られ、処理が終わればプロンプトのテキストとして通常のメッセージに合流します。

VS Code拡張機能でも同じsettings.jsonのvoice設定が使えますか

VS Code拡張機能も音声ディクテーションに対応していますが、必要条件は同じClaude.aiアカウントです。ただしSSH・Dev Containers・Codespacesを含むVS Code Remoteセッションでは使えません。マイクがローカル側にあるのに対し、拡張機能自体はリモートホスト側で動くためです。ローカルで直接開いているプロジェクトでは通常どおり使えます。

hold modeでSpaceキーを押しても録音が始まりません

入力欄を見ながら押し続け、スペースが連続入力されるだけなら音声入力自体が無効です。/voice holdで有効化します。1〜2個スペースが入ってから止まる場合は、OSレベルでキーリピートが無効になっていて押し続け判定が働いていません。この場合は/voice tapでtap modeに切り替えるとキーリピートに依存せず使えます。

まとめ

Claude Code CLIの音声入力は/voiceで都度切り替えられますが、恒久的に使うならsettings.jsonvoiceオブジェクトに直接書きます。旧設定のvoiceEnabledはレガシー扱いなので、新規設定ではvoice.enabledを使います。有効化にはClaude.aiアカウント認証・非HIPAA組織・ローカルマイクの3条件が必須で、WSLではWSLgも必要です。hold modeとtap modeはキー操作の好みと発話の長さで選び、キーのリバインドはkeybindings.jsonで行います。/voiceコマンド自体のモード切り替え方法とリモート環境で使えない制約はClaude Codeの/voiceコマンドで音声入力を使う — hold/tap/offで扱っています。settings.json全体の構成はClaude Code設定ガイド、Claude(claude.ai)側の音声モードとの違いはClaude音声モードと画面共有の使い方で確認できます。

この記事を共有:XはてブLinkedIn