Claude Code の作業完了・入力待ちを AI 音声で通知 するツール
Claude Code の Hooks 機能を活用し、作業完了や入力待ちのタイミングで AivisSpeech による音声通知を行います。
last_assistant_message(Claude の最後の応答)をそのまま読み上げるため、画面を見なくても作業状況がわかります。
| 要件 | 備考 |
|---|---|
| macOS | afplay コマンドを使用 |
| AivisSpeech | AI 音声合成デスクトップアプリ |
| Python 3 | JSON パース用(macOS 標準搭載) |
| curl | API 通信用(macOS 標準搭載) |
AivisSpeech 公式サイト からデスクトップアプリをダウンロードし、起動してください。
デフォルトではポート 10101 でエンジンが待ち受けます。
git clone https://github.com/kpab/claude-code-voice-notify.git
cd claude-code-voice-notifybash scripts/setup.shこのスクリプトは以下を自動で行います:
.env.exampleから.envを作成- AivisSpeech への接続確認
- Claude Code の
~/.claude/settings.jsonにフック設定を追加
echo '{"last_assistant_message":"テスト通知です"}' | bash scripts/notify.sh音声が再生されれば成功です。
Claude Code (Stop / Notification フック)
|
| stdin: JSON { "last_assistant_message": "..." }
v
notify.sh --- JSON から応答テキストを抽出
|
v
engines/aivis.sh --- AivisSpeech API で音声合成
|
v
afplay --- macOS で音声再生
.env の AIVIS_SPEAKER_ID を変更することで読み上げの声を切り替えられます。
AIVIS_PORT=10101
AIVIS_SPEAKER_ID=888753760 # Anneli ノーマル利用可能な話者の例:
| 話者ID | 名前 | スタイル |
|---|---|---|
| 888753760 | Anneli | ノーマル |
| 1863691270 | Anneli | テンション高め |
| 367663670 | Anneli | 落ち着き |
| 1879099675 | Anneli | ひそひそ |
| 472618444 | Anneli | 上機嫌 |
全話者は AivisSpeech 起動後に http://localhost:10101/speakers で確認できます。
setup.sh を使わず手動で設定する場合は、~/.claude/settings.json に以下を追加してください。
/path/to/ はクローンした実際のパスに置き換えてください。
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash /path/to/claude-code-voice-notify/scripts/notify.sh"
}
]
}
],
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash /path/to/claude-code-voice-notify/scripts/notify.sh '入力を待っています'"
}
]
}
]
}
}テンプレートは config/claude_hooks.json にもあります。
claude-code-voice-notify/
├── scripts/
│ ├── notify.sh # メイン通知スクリプト
│ ├── setup.sh # セットアップスクリプト
│ └── engines/
│ └── aivis.sh # AivisSpeech 音声合成エンジン
├── config/
│ ├── claude_hooks.json # Claude Code フック設定テンプレート
│ └── speakers.json # 話者ID一覧
├── docker/
│ └── docker-compose.yml # AivisSpeech を Docker で起動する場合
├── .env.example # 環境変数テンプレート
├── CHANGELOG.md # 変更履歴
└── LICENSE # MIT License
AivisSpeech が起動しているか確認してください。
curl -s http://localhost:10101/versionClaude Code のフック設定を確認してください。
cat ~/.claude/settings.jsonscripts/notify.sh へのパスが正しいことを確認してください。
python3 --versionmacOS であれば Xcode Command Line Tools をインストールすると Python 3 が使えます。