この記事の目次
Claude Codeの音声入力は、CLIで /voice を実行すると有効になり、Space キーを押している間に話した内容がプロンプト入力欄に文字起こしされる機能です。使うには claude.ai アカウントでのログインとローカルのマイクが必要で、既定の認識言語は英語なので、日本語で使う場合は先に設定の language を "japanese" にしておきます。
この記事では、公式ドキュメント(Voice dictation と All settings)の記述に沿って、使える条件、有効化の手順、日本語化、キーの変え方、エラーメッセージ別の対処を順に説明します。
Claude Codeの音声入力は何ができて、どんな条件で使えるのか?
音声入力(公式名は voice dictation)は、話した言葉をその場でプロンプト入力欄に書き起こす機能です。書き起こしはカーソル位置に挿入されるので、手で打った文章の途中に音声で続きを足す、といった混ぜ方ができます。開発でよく使う語に合わせて調整されており、公式は regex、OAuth、JSON、localhost などが正しく認識されると説明しています。さらに、いま開いているプロジェクト名と git のブランチ名が認識のヒントとして自動で渡されます。
使うための条件は次のとおりです。
| 条件 | 公式の記述の要点 |
|---|---|
| アカウント | claude.ai アカウントでログインしていること。Anthropic APIキー直接、Amazon Bedrock、Google Cloud’s Agent Platform、Microsoft Foundry 経由では使えない |
| マイク | 手元のマシンにマイクがあること。クラウドセッションや SSH セッションでは動かない |
| WSL | WSL で動かす場合は WSLg が必要。WSL1 など WSLg が無い環境ではネイティブの Windows で動かす |
| VS Code 拡張 | 拡張でも同じアカウント条件で使える。ただし SSH、Dev Containers、Codespaces などの Remote セッションでは使えない |
Claude CodeをAPIキーで使っている方は、この時点で音声入力の対象外です。認証方式の違いはAPIキーの使い方ガイドで整理しています。
音声はどこで処理され、利用枠を消費するのか?
公式は、録音した音声を Anthropic のサーバーへストリーミングして文字起こしし、ローカルでは処理しないと明記しています。社外に音声を出せない環境では、この点が導入可否の判断材料になります。音声データの扱いについて公式は data usage のページを参照するよう案内しています。
一方で、音声入力の文字起こしは Claude のメッセージやトークンを消費せず、/usage に表示される上限にも数えられません。話して入力しても、手で打った場合と比べて利用枠が余計に減ることはありません。
組織によっては管理者のポリシーで音声入力が無効化されている場合があります。その場合は後述の Voice mode is disabled by your organization's policy が表示されるので、管理者に確認してください。
音声入力を有効にするにはどうするか?
Claude Code のプロンプトで次のコマンドを実行します。
/voice
有効にするとマイクのチェックが走り、macOS では、ターミナルにまだマイクの許可を与えていなければシステムの許可ダイアログが表示されます。許可すると、公式の例では次のような表示が出ます。
Voice mode enabled (hold). Hold space to record. Dictation language: en (/config to change).
この1行から、モードが hold、録音キーが Space、認識言語が英語(en)であることが読み取れます。日本語で使う場合は次の節の設定に進んでください。
/voice には引数でモードを指定できます。
| コマンド | 動作 |
|---|---|
/voice |
オンとオフを切り替える(モードは今のまま) |
/voice hold |
hold モードで有効化 |
/voice tap |
tap モードで有効化 |
/voice off |
無効化 |
Claude Codeの音声入力設定はセッションをまたいで保持されます。毎回 /voice を打つ代わりに、ユーザー設定ファイルに voice オブジェクトを書いても同じです。
{
"voice": {
"enabled": true,
"mode": "tap"
}
}
voice は enabled(真偽値)、mode("hold" か "tap")、autoSubmit(hold モードでだけ効く真偽値)を持ちます。未設定なら音声入力はオフで、enabled が true で mode を書かなければ hold になります。古い voiceEnabled という設定は v2.1.92 から非推奨で、新しく書くなら voice.enabled を使います。設定ファイルの置き場所や優先順位はsettings.jsonの解説を参照してください。
日本語で音声入力するにはどう設定するか?
Claude Codeの音声入力で音声認識の対象となる言語は、Claude の応答言語と同じ language 設定で決まります。この言語設定が空なら認識は英語です。日本語で話すなら、/config から設定するか、設定ファイルに次のように書きます。
{
"language": "japanese"
}
値は言語名(japanese)でも BCP 47 の言語コード(日本語なら ja)でも構いません。日本語は公式の対応言語一覧に含まれています。
ここで押さえておきたいのは、language が1つで3つの役割を兼ねている点です。公式によると、同じ値が Claude の応答言語、音声入力の認識言語、自動で付くセッションタイトルの言語に使われます。つまり、音声入力のために japanese を設定すると、Claude の返答も日本語になります。この設定で、応答は英語のまま音声だけ日本語にする、という分け方はできません。
対応一覧にない言語を指定した場合、/voice を有効にした時点で警告が出て、音声入力だけ英語に戻ります。応答の言語はこの戻りの影響を受けません。
VS Code 拡張では扱いが1点異なり、language が空のときは VS Code の accessibility.voice.speechLanguage 設定を先に見てから英語に戻ります。
応答言語や IME の入力など、日本語まわりの設定全般は日本語設定ガイドで扱っています。
hold モードと tap モードは何が違うのか?
Claude Codeの音声入力の2つのモードは「録音の始め方と終わり方」と「送信のタイミング」が違います。
| 項目 | hold(既定) | tap |
|---|---|---|
| 録音の始め方 | Space を押し続ける |
入力欄が空の状態で Space を1回押す |
| 録音の止め方 | キーを離す | もう1回 Space を押す |
| 開始までの待ち | 短いウォームアップがある | なし |
| 送信 | 既定は挿入して Enter 待ち。autoSubmit: true なら離した時に自動送信 |
止めた時に自動送信 |
| 録音中の表示 | keep holding… の後に listening… |
● REC · tap to send |
hold モードは、ターミナルが送るキーリピートを見て「押し続けている」と判断する仕組みです。そのため録音が始まるまで少し間があり、その間に入力されたスペースは録音開始時に自動で消されます。1回だけ軽く押した Space は普通のスペースとして入ります。
自動送信には「3語以上」という送信条件があります。hold モードの autoSubmit と tap モードのどちらも、書き起こしが3語未満なら挿入だけして送信しません。誤って押したときに1語だけ送られるのを防ぐためです。公式は、日本語・中国語・タイ語のように空白で区切らない言語でも単語単位で数えるので自動送信されると説明しています。
録音は、無音が15秒続くか、合計録音時間が2分に達すると自動で止まります。長い指示は何回かに分けて話し、カーソル位置に追記していく使い方になります。
録音を途中で取り消すには?
Esc か Ctrl+C を押すと、マイクが止まり、書き起こしは破棄され、入力欄は録音前の状態に戻ります。このときの Esc は Claude の応答を中断せず、Ctrl+C も Claude Code を終了する2回押しの1回目には数えられません。
録音キーを Space 以外に変えるには?
録音キーは Chat コンテキストの voice:pushToTalk というアクションに割り当てられていて、既定は Space です。hold と tap の両方がこの1つの割り当てを使います。変更は ~/.claude/keybindings.json で行い、このファイルは /keybindings を実行すると作成または表示されます。公式の例は次のとおりです。
{
"bindings": [
{
"context": "Chat",
"bindings": {
"meta+k": "voice:pushToTalk",
"space": null
}
}
]
}
voice:pushToTalk は同時に1つのキーしか持てず、別のキーを割り当てると Space は置き換えられます。例にある "space": null は分かりやすさのための行で、省いても動作は同じです。
Claude Codeの音声入力のキー選びの注意は2つあります。hold モードで v のような文字キー単体を割り当てると、ウォームアップの間にその文字が入力欄に入ってしまうため避けます。meta+k のような修飾キーとの組み合わせなら、最初の押下で録音が始まりウォームアップもありません。また Caps Lock は割り当てようとするとエラーになります。
Space での待ちが気になる場合は、キーを変える以外に /voice tap で tap モードに切り替える方法もあります。
音声入力が動かないときはどこを確認するか?
公式のトラブルシューティングを、エラーメッセージごとの確認点として症状の段階順に並べ直すと次のようになります。
| 段階 | 表示 | 原因と対処 |
|---|---|---|
| 起動できない | Unknown command: /voice |
claude.ai アカウントでログインしていない。/login を実行する。ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN、apiKeyHelper 設定、他社プロバイダーが使われているとそちらが優先されるため、外して再起動する |
| 起動できない | Voice mode requires a Claude.ai account |
使えるログイン情報が見つからない。/login で再ログインする |
| 起動できない | Voice mode is disabled by your organization's policy |
組織の管理者ポリシーで無効。管理者に確認する |
| マイクに届かない | Microphone access is denied |
ターミナルにマイク権限が無い。OS の設定で許可して /voice を再実行する |
| マイクに届かない | No audio detected from microphone |
録音は始まったが無音だった。既定の入力デバイスと入力レベルを確認する |
| 通信 | Voice connection failed |
文字起こしサービスに届かなかった。ネットワークを確認する |
| 通信 | Voice stream error: WebSocket upgrade rejected with HTTP <status> |
サーバーが接続を拒否したもので、ネットワーク障害ではない。400番台はログインの期限切れか、プロキシやボット対策が応答している可能性。/login を実行し、続くなら VPN やプロキシを確認する |
| 認識 | No speech detected |
音声は届いたが言葉として認識されなかった。マイクに近づく、雑音を減らす、認識言語が話している言語と合っているか確認する |
| 認識 | 文字化けや別の言語になる | 認識言語が既定の英語のまま。/config で言語を設定する |
| 繰り返し失敗 | Voice input is failing repeatedly and has been paused |
10秒以内に3回失敗し、最初の失敗から10秒が経過するまで一時停止した。入力デバイスが使えるか確認し、上の項目で原因を直してから再度試す |
ログインや認証そのものの問題はログインできないときの対処で扱っています。
Space を押しても何も起きないときは?
hold モードで Space を押し続けても録音が始まらない場合は、入力欄の様子を見ます。
- スペースがどんどん入力される: 音声入力がオフの可能性があります。
/voice holdで有効にします。 - スペースが1〜2個入って止まる: 音声入力はオンですが、押し続けの検知が働いていません。OS 側でキーリピートが無効だと検知できないため、
/voice tapで tap モードに切り替えます。
tap モードで Space を押すとスペースが入るだけの場合は、1回目の押下で録音が始まるのは入力欄が空のときだけである点を確認します。入力欄を空にし、/voice tap で tap モードになっているかも確認してください。
OS ごとのマイク権限はどこで許可するか?
Microphone access is denied の場合、公式は次の場所を案内しています(英語表記は System Settings → Privacy & Security → Microphone など)。
- macOS: システム設定 → プライバシーとセキュリティ → マイク で、使っているターミナルアプリをオンにする
- Windows: 設定 → プライバシーとセキュリティ → マイク で、デスクトップアプリのマイクへのアクセスをオンにする
いずれも許可したら /voice をもう一度実行します。No audio detected from microphone の場合は入力デバイスの選択を見直し、Windows は 設定 → システム → サウンド → 入力、macOS は システム設定 → サウンド → 入力 で使うマイクを選びます。
macOS のマイク設定にターミナルが表示されないときは?
公式は、そのターミナルの許可状態をリセットして、次の /voice で改めて許可ダイアログを出す手順を示しています。標準のターミナルなら次のコマンドです(iTerm2 なら com.googlecode.iterm2 に置き換えます)。
tccutil reset Microphone com.apple.Terminal
bundle ID を付けずに実行すると、Zoom や Slack を含む Mac 上の全アプリのマイク許可が取り消されるので、ID は省かないでください。リセット後は、ウィンドウを閉じるだけでなく Cmd+Q でターミナルを終了して起動し直し、Claude Code で /voice を実行して表示される許可ダイアログで許可します。
Linux や WSL で録音器のエラーが出るときは?
Claude Code の録音は macOS、Linux、Windows とも組み込みのモジュールで行います。Linux でこれが読み込めないときは ALSA utils の arecord か SoX の rec を代わりに使い、どちらも無いと Voice mode requires SoX for audio recording が出ます。エラーに表示されるインストールコマンドで SoX を入れます(公式の例は sudo apt-get install sox)。
SoX が入っていても Voice mode requires a microphone, but SoX could not open an audio capture device が出る場合は、ヘッドレスサーバーやコンテナのように録音デバイスが無い環境です。公式の対処は、マイクのあるマシンで Claude Code を動かすことです。
WSL で Voice mode could not find a working audio recorder in WSL が出る場合は、WSLg の音声が PulseAudio 経由のため、SoX の PulseAudio 用の部品も入れます。
sudo apt install sox libsox-fmt-pulse
sox だけを入れると ALSA 用の部品しか入らず、WSL には /dev/snd が無いため録音できません。WSL 上での Claude Code の動かし方はWindowsでの使い方ガイドを参照してください。
仕様が変わりうる点はどこか?
ここまでの内容は、公式ドキュメント(Voice dictation、All settings、Customize keyboard shortcuts)の記述に基づきます。音声入力はバージョンごとにエラー表示や挙動の修正が入っていて、公式のトラブルシューティングにも、v2.1.200 より前は無音のマイクが接続失敗として報告されていた、といったバージョン別の注記があります。表示が本記事と違う場合は、Claude Code を更新したうえで公式の Voice dictation ページの記述と照らし合わせてください。
なお、本記事では音声データの保存や学習への利用の扱いを判断しません。データの扱い全般はオプトアウト設定ガイドで整理しています。
Claude Code の機能を一つずつ自分の作業に組み込んでいきたい方には、月額1,980円から参加できる学習コミュニティ「AI駆動ラボ」(lab.no-wave.jp)を用意しています。