Skip to content

kpab/claude-code-voice-notify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

claude-code-voice-notify

License: MIT Platform Shell AivisSpeech

Claude Code の作業完了・入力待ちを AI 音声で通知 するツール

Claude Code の Hooks 機能を活用し、作業完了や入力待ちのタイミングで AivisSpeech による音声通知を行います。
last_assistant_message(Claude の最後の応答)をそのまま読み上げるため、画面を見なくても作業状況がわかります。

必要なもの

要件 備考
macOS afplay コマンドを使用
AivisSpeech AI 音声合成デスクトップアプリ
Python 3 JSON パース用(macOS 標準搭載)
curl API 通信用(macOS 標準搭載)

セットアップ

1. AivisSpeech をインストール・起動

AivisSpeech 公式サイト からデスクトップアプリをダウンロードし、起動してください。
デフォルトではポート 10101 でエンジンが待ち受けます。

2. リポジトリをクローン

git clone https://github.com/kpab/claude-code-voice-notify.git
cd claude-code-voice-notify

3. セットアップスクリプトを実行

bash scripts/setup.sh

このスクリプトは以下を自動で行います:

  • .env.example から .env を作成
  • AivisSpeech への接続確認
  • Claude Code の ~/.claude/settings.json にフック設定を追加

4. 動作確認

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 で音声再生

設定

話者の変更

.envAIVIS_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/version

読み上げが発火しない

Claude Code のフック設定を確認してください。

cat ~/.claude/settings.json

scripts/notify.sh へのパスが正しいことを確認してください。

python3: command not found

python3 --version

macOS であれば Xcode Command Line Tools をインストールすると Python 3 が使えます。

ライセンス

MIT

About

Claude Code のフック通知を AivisSpeech で音声化するツール

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages