Claude Code の /voice が日本語非対応だったため whisper.cpp で自前の音声入力を作った記録。文字起こしは成功したが、Wayland の壁で Claude Code への直接統合は断念。失敗から学べることをまとめた。
TL;DR: Claude Code の
/voiceは日本語非対応(2026年3月現在)。whisper.cpp で代替を作ると文字起こしまでは動く。ただし Wayland の制約で Claude Code への直接入力統合は難しい。結論:公式対応を待つのが現実的。
Claude Code の /voice を起動した瞬間に気づきました。英語しか認識しない。
正確に言うと、動くは動くのですが、日本語を喋っても返ってくるのは英文か、謎の記号だけです。GitHub Issue を見ると「日本語非対応は既知の問題」とあっさり書いてある。
やるしかないと思いました。whisper.cpp で自前の音声入力を作れば、少なくとも文字起こしだけは解決できます。
Claude Code のバイナリを少し覗いてみると(strings コマンドで覗ける程度ですが)、音声認識周りはシステム標準のSTTに依存していることが見えてきます。
日本語非対応はバグではなく、仕様に近い状態。GitHub の Issue にもそう書いてあります。
外から直すことはできない。自前で用意するしかない。
whisper.cpp は Meta の Whisper モデルをC++で再実装したもので、GPUなしでも動きます。CPUで動かしても日本語の文字起こしとして十分に実用的です。
git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp && cmake -B build -DWHISPER_SERVER=ON && cmake --build build -j$(nproc)
モデル選びは精度と速度のトレードオフです。
| モデル | サイズ | CPU速度(10秒発話) | 日本語精度 | 推奨 |
|---|---|---|---|---|
| small | 244MB | 約8秒 | △ | 速さ優先 |
| medium | 769MB | 約15〜20秒 | ○ | バランス |
| large | 1.5GB | 約45秒〜 | ◎ | GPU推奨 |
medium が現実的なバランスです。
bash models/download-ggml-model.sh medium
whisper-server を systemd のユーザーサービスとして登録しておくと、ログイン後に自動起動してくれます。ポートは 8080 が埋まっていることが多いので 2022 にしました(2026年3月、whisper.cpp commit 9f112a3 で確認)。
arecord で録音して、whisper-server の /inference エンドポイントに投げるだけです。
Enter → 録音開始 → Enter → 録音停止 → 文字起こし → クリップボードにコピー
ここで2つ詰まりました。
1. hw:1,0 でモノラル録音が拒否される
arecord -D hw:1,0 -c 1 を叩くと Channels count non available と怒られます。plughw:1,0 に変えると解決します。hw: はハードウェアに直接アクセスするのでデバイスネイティブのフォーマット以外を拒否します。plughw: は ALSA のプラグインレイヤーが変換してくれるので、モノラル/ステレオの差異を気にしなくて済みます。
2. whisper-server のレスポンスが JSON で返ってくる
-F "response-format=text" を指定してもJSONが返ってくる場合があります。{"text": "マイクテスト..."} という形式です。jq -r '.text' で本文だけ取り出すように対応しました。
Wayland 環境のクリップボードには wl-clipboard を使います。wl-copy でコピーして、貼り付けは Ctrl+Shift+V です。
「マイクです」
これが最初に文字起こしに成功したひと言です。スクリプトを動かして、マイクに向かって話して、✅ クリップボードにコピーしました! が出た瞬間に貼り付けてみた結果がこれです。
medium モデルを CPU で動かしているので、10秒程度の発話に対して 15〜20秒ほど待ちます。GPUがあればもっと速くなりますが、テキスト入力の補助として使う分には許容範囲です。日本語の認識精度は十分です。句読点もそれなりに入ります。
文字起こしが動いたところで、次の欲が出ました。「Ctrl+Shift+V で貼り付けなくても、話し終えたら自動で Claude Code に入力されないか」というやつです。
Wayland 環境ではほぼ無理です。
X11 には xdotool type "テキスト" でアクティブウィンドウに入力を送れるツールがあります。Wayland にはそれがありません。Wayland のセキュリティモデルは、バックグラウンドのプロセスが他のウィンドウのキーイベントを読んだり送ったりすることを原則禁止しています。これはセキュリティ上の意図的な設計です。
wtype(Wayland 版 xdotool)をインストールすれば技術的には可能ですが、「Claude Code のウィンドウがフォーカスされている状態で発火させる」という別の問題が残ります。tmux 環境であれば tmux send-keys という回避策もあります。ただ「別ペインが必要」という手間は変わらず、読者への再現性という点でも複雑すぎる。
現実的な運用は、クリップボードにコピー → Ctrl+Shift+V で貼り付け、です。
今の状態で使えるかというと、使えます。話す → 待つ → 貼り付ける、という3手間はありますが、日本語で長い文を入力するよりは楽な場面もあります。
ただ「これを導入してください」と人に勧められるかというと、難しい。plughw の話、JSON パースの話、WAYLAND_DISPLAY の話——これを一人でデバッグするコストは、節約できる時間に見合わないかもしれません。
Claude Code の /voice が日本語対応されれば、この記事に書いたことは全部不要になります。GitHub の Issue は上がっているので、時間の問題だとは思っています。
それを待ちながら、手元では whisper.cpp が動いているので使えるときは使う、という状態で落ち着きました。
「できることとできないことをはっきりさせてから使う」——DIYはそういうものです。
ようは浪漫だ。Linuxユーザーは踏み込む前に、一度この記事を見て進むかどうか判断してほしい。
Q. Windows や macOS でも同じ方法は使えますか?
whisper.cpp 自体は Windows/macOS でも動きます。ただし録音コマンド(arecord)は Linux 固有です。macOS なら sox、Windows なら PowerShell での録音に置き換えが必要です。Wayland の問題はそもそも発生しないため、自動入力の統合は macOS/Windows の方が簡単です。
Q. GPU なしでどれくらいの精度ですか? medium モデルで日本語の精度は実用レベルです。今回の動作確認では「マイクテスト、マイクテスト、マイクテスト、マイクテスト」がほぼ完全に認識されました。専門用語や固有名詞は落ちることがありますが、Claude Code へのプロンプト入力として使う分には問題ない精度です。
Q. Claude Code の公式 /voice が日本語対応したら、このセットアップは不要になりますか? はい、不要になります。whisper-server の起動管理やスクリプトのメンテナンスを考えると、公式対応の方が圧倒的に楽です。この記事の手順は「公式対応を待てない場合の一時的な回避策」として位置づけています。
HW系エンジニアとして20年以上、10,000件を超える顧客訪問と2,000件を超える単独ソリューション実績。AIツールを使った個人開発やIoT農園など、Raspberry Piを使ったオートメーション化なども実践中です!エンジニア専門結婚相談所も運営中、ClaudeCodeで解決できない心の課題も解決いたします!
META-MARK × AI
ローカルAIを動かすGPU、ちゃんと選べていますか?
VRAM・性能・コスパをMetaScoreで数値化。AIアプリ別の推奨ハードウェア要件も確認できます。