🔊
claude codeの応答内容をサマリーにして読み上げさせてみた
はじめに
Claude Codeを使っていると、こんな課題に直面しませんか?
- 認知負荷が高い: 大量の長文応答を毎回読むのは疲れる
- 的外れな応答: 読んでみて初めて「これ違う」とわかる
- 効率性の低下: 不要な応答まで全文読む必要がある
- 承認待ちに気づかない: 並列作業中に確認ダイアログが表示されても気づかず、作業が止まってしまう
この記事では、これらの課題を音声読み上げで解決する方法を紹介します。
何ができるか
応答の音声読み上げ(Stopフック)
- 50文字以上の応答を自動要約(100字以内)
- 応答を自動カテゴリ分類(コード実装、調査報告、質問など)
- 要約をファイルに保存して後から確認可能
確認ダイアログの音声読み上げ(PermissionRequestフック)
- 確認ダイアログ表示と同時に読み上げ
- ツール別メッセージ(Bash、Read、Writeなど)
- 「Bashコマンドを実行して良いですか?」など簡潔に通知
実際の動作
セットアップ
git clone https://github.com/nichiv/claude-code-speech.git
cd claude-code-speech
./setup.sh
詳細な手動セットアップ方法はGitHubリポジトリをご覧ください。
使い方
設定後は通常通りClaude Codeを使用するだけです:
claude
タスク完了時に自動で応答が読み上げられます。
要約の確認
長文の応答(50文字以上)の場合、要約が~/.claude/hooks/stop-hook-summary.logに保存されます。
別のターミナルで監視:
tail -f ~/.claude/hooks/stop-hook-summary.log
出力例
──────────────────────────────────────
2026-01-11 19:46:29
Working Directory: /Users/username/work/project
──────────────────────────────────────
【ファイル操作】settings/ディレクトリ配下に設定を集約。エクスポート/インポートスクリプト、.gitignore、READMEを修正し動作確認完了。
他のカテゴリ例:
【コード実装】認証ミドルウェアにJWT検証機能を追加。有効期限チェックとリフレッシュトークン処理を実装。
【調査報告】Next.js 14のServer Actionsを調査。フォーム送信の簡略化が可能。既存API routesからの移行を検討。
【エラー報告】ビルド時にTypeScriptの型エラーが3件発生。User型とPost型の関連定義を修正して解決。
【テスト報告】ユニットテスト25件実行、全て成功。カバレッジ87%達成。エッジケースのテストを2件追加。
仕組み(参考)
Claude Codeの公式フック機能を使って実装しています:
- Stopフック: タスク完了時に発火。50文字以上の応答はClaude APIで要約してから読み上げ
- PermissionRequestフック: 確認ダイアログ表示時に発火。ツール名に応じたメッセージを即座に読み上げ
詳細な実装はGitHubリポジトリをご覧ください。
カスタマイズ
読み上げ速度や文字数閾値、カテゴリなどをカスタマイズできます。
詳しくはGitHubリポジトリのREADMEをご参照ください。
トラブルシューティング
音声が読み上げられない場合や、デバッグログの確認方法などの詳細は、GitHubリポジトリのトラブルシューティングセクションをご参照ください。
参考
- GitHubリポジトリ - 詳細なドキュメントとソースコード
- Claude Code の音声通知をフックで実装する - Zenn
- Claude Code公式ドキュメント
Discussion