🔊
Claude Code Hooksでずんだもん音声案内【VOICEVOX不要】
💡 VOICEVOX不要でずんだもん音声通知
Claude Code Hooksを使って、ずんだもんの声でタスク完了等をお知らせしてくれます。
setup.shで簡単導入、カスタム音声生成にも対応しています。
💡 なぜVOICEVOXインストール不要
音声ファイルを事前生成してパッケージに同梱しているからです。
- 音声生成:VOICEVOXで事前に作成済
- 音声再生:Claude Code Hooksで再生(実行時)
メリット:
- VOICEVOXのインストール不要
- 高速で安定した動作
カスタム音声生成
- VOICEVOXインストールが必要になりますが、通知の際の読み上げ内容をカスタムすることも可能です。
📋 必要な環境
# 必要な環境
- WSL2 (Ubuntu 20.04以上)
- Claude Code
- PowerShell(音声再生用)
🚀 簡単導入
細かいツールの仕様方法はこちらから
この設計により、わずか数コマンドで導入できます:
# リポジトリをクローン
git clone https://github.com/masaway/claudecode-zundamon-voice.git
cd claudecode-zundamon-voice/zundamon-hooks-package
# 実行権限を付与してセットアップ
chmod +x *.sh
./setup.sh
setup.shが自動で行うこと:
- 音声ファイルの配置(
/mnt/c/temp/voice/
) - Hooksスクリプトの配置(
~/.claude/hooks-scripts/
) - Claude Code設定の更新(
~/.claude/settings.json
)
これで、Claude Codeがずんだもんの声で案内してくれるようになります!
音声が聞こえない場合
基本的には自動設定で動作しますが、うまくいかない場合は以下を確認:
1. hooks設定確認
Claude Codeで以下を実行して現在の設定を確認:
/hooks
PreToolUse
、Notification
、Stop
の設定が表示されれば正常です。
2. 手動hooks登録(自動設定が反映されない場合)
上記で設定が表示されない場合、手動登録を試してください:
/hooks
その後、 hooks-template.json
を参考に設定してください。
3. Claude Codeをデバッグモードで起動する
$ claude --debug --continue
これでhooks設定したものがmatchしているかが見れます。
🎯 この記事で分かること
Claude Code Hooksを使った音声システムの構成と実装方法について解説します:
- システム構成: Claude Code → Hooks → 音声再生の流れ
- ファイル構成: スクリプトや設定ファイルの役割と配置
- WSL2での音声再生: PowerShellを使った実装アプローチ
- 自動セットアップ: パッケージとしての配布方法
- カスタマイズ方法: 音声メッセージや設定の変更手順
🚀 完成したパッケージの特徴
細かいツールの仕様方法はこちら
主な機能
- ツール実行前の確認音声: 「実行許可を求めている」
- 通知音声: 「クロードコードが呼んでいるのだ」
- タスク完了音声: 「タスクが完了したのだ」
- カスタム音声生成: 好きなメッセージで音声を作成可能
技術的な特徴
- 即座に使用可能: 音声ファイル付きでVOICEVOX不要
- WSL2対応: PowerShellを使った音声再生
- 自動設定: Claude Code設定の自動更新
- カスタマイズ可能: 音声メッセージや使用キャラクターの変更
🔧 システム構成
アーキテクチャ概要
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Claude Code │───▶│ Hooks System │───▶│ 音声再生 │
│ │ │ │ │ │
│ - Tool実行 │ │ - PreToolUse │ │ - PowerShell │
│ - 通知 │ │ - Notification │ │ - 音声ファイル │
│ - タスク完了 │ │ - Stop │ │ - ずんだもん │
└─────────────────┘ └─────────────────┘ └─────────────────┘
ファイル構成
zundamon-hooks-package/
├── setup.sh # メインセットアップスクリプト
├── hooks-scripts/ # Hooks実行用スクリプト
│ ├── PreToolUse.sh # ツール実行前音声
│ ├── Notification.sh # 通知音声
│ ├── Stop.sh # タスク完了音声
│ ├── play-voice.sh # 音声再生共通スクリプト
│ └── voice-config.json # 音声設定ファイル
├── voices/ # プリビルド音声ファイル
│ ├── notification.wav
│ └── task_completion.wav
└── generate-voices.sh # カスタム音声生成ツール
🎵 音声システムの実装
1. WSL2での音声再生
WSL2から Windows の音声を再生する仕組みを実装しました:
# play-voice.sh の核心部分
#!/bin/bash
# 音声設定ファイルから設定を読み込み
VOICE_CONFIG="$HOME/.claude/hooks-scripts/voice-config.json"
VOICE_DIR=$(jq -r '.voice_dir // "/mnt/c/temp/voice"' "$VOICE_CONFIG" 2>/dev/null)
play_voice() {
local voice_file="$1"
local full_path="$VOICE_DIR/$voice_file"
if [ -f "$full_path" ]; then
# WSL2パスをWindowsパスに変換
local win_path=$(echo "$full_path" | sed 's|/mnt/c|C:|')
# PowerShellで音声再生
powershell.exe -Command "
try {
\$sound = New-Object Media.SoundPlayer '$win_path'
\$sound.PlaySync()
} catch {
Write-Error \"音声再生エラー: \$_\"
}
" 2>/dev/null
fi
}
2. 設定ファイルによる柔軟な音声管理
JSON設定ファイルで音声の割り当てを管理:
{
"voice_mappings": {
"PreToolUse": "notification.wav",
"Notification": "notification.wav",
"Stop": "task_completion.wav"
},
"voice_dir": "/mnt/c/temp/voice"
}
3. Hooks統合スクリプト
各Hookで呼び出される専用スクリプト:
# PreToolUse.sh
#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/play-voice.sh"
# 設定ファイルから音声ファイルを取得
VOICE_FILE=$(get_voice_file "PreToolUse")
play_voice "$VOICE_FILE"
🛠️ 自動セットアップシステム
setup.sh の主要機能
# Claude Code設定の自動更新
update_claude_settings() {
local settings_file="$HOME/.claude/settings.json"
local backup_file="$settings_file.backup.$(date +%Y%m%d_%H%M%S)"
# 既存設定をバックアップ
cp "$settings_file" "$backup_file"
# Hooks設定をマージ
jq --slurpfile hooks_config hooks-template.json \
'.hooks = ($hooks_config[0].hooks)' \
"$settings_file" > "$settings_file.tmp"
mv "$settings_file.tmp" "$settings_file"
echo "✅ Claude Code設定を更新しました"
}
# スクリプトファイルの配置
install_hooks_scripts() {
local target_dir="$HOME/.claude/hooks-scripts"
mkdir -p "$target_dir"
# 実行権限付きでコピー
cp -r hooks-scripts/* "$target_dir/"
chmod +x "$target_dir"/*.sh
echo "✅ Hooksスクリプトを配置しました"
}
🎨 カスタム音声生成システム
VOICEVOX連携
# generate-voices.sh での音声生成
generate_voice() {
local text="$1"
local filename="$2"
local speaker_id="${3:-1}" # デフォルト: ずんだもん
# 音声クエリ生成
local query=$(curl -s -X POST \
"$VOICEVOX_URL/audio_query" \
-H "Content-Type: application/json" \
-d "{\"text\":\"$text\",\"speaker\":$speaker_id}")
# 音声合成
curl -s -X POST \
"$VOICEVOX_URL/synthesis" \
-H "Content-Type: application/json" \
-d "$query" \
-o "$VOICE_DIR/$filename.wav"
}
対話式音声生成
# 対話モードでの音声生成
interactive_voice_generation() {
echo "🎤 対話式音声生成モード"
while true; do
echo ""
read -p "📝 生成したいテキストを入力してください(終了: quit): " text
if [ "$text" = "quit" ]; then
break
fi
read -p "💾 保存ファイル名を入力してください(.wav不要): " filename
echo "🔊 音声を生成中..."
generate_voice "$text" "$filename"
echo "✅ 音声ファイルを生成しました: $filename.wav"
done
}
📦 配布パッケージの工夫
1. プリビルド音声ファイル
ユーザーがVOICEVOXを用意しなくても即座に使用できるよう、基本的な音声ファイルを事前生成して同梱:
# プリビルド音声の生成
declare -A VOICE_MESSAGES=(
["notification"]="クロードコードが呼んでいるのだ"
["task_completion"]="タスクが完了したのだ"
)
for key in "${!VOICE_MESSAGES[@]}"; do
generate_voice "${VOICE_MESSAGES[$key]}" "$key"
done
2. 段階的セットアップ
# セットアップの段階的実行
main() {
echo "🚀 Claude Code ずんだもんHooks セットアップ"
# 1. 環境チェック
check_requirements
# 2. 音声ファイル配置
setup_voice_files
# 3. Hooksスクリプト配置
install_hooks_scripts
# 4. Claude Code設定更新
update_claude_settings
# 5. 動作確認
if [ "$RUN_TEST" = true ]; then
run_tests
fi
echo "✅ セットアップが完了しました!"
}
🔍 動作確認方法
セットアップ後の確認
# 音声ファイルの確認
ls -la /mnt/c/temp/voice/*.wav
# Hooksスクリプトの確認
ls -la ~/.claude/hooks-scripts/*.sh
# Claude Code設定の確認
jq '.hooks' ~/.claude/settings.json
# 手動音声テスト
powershell.exe -Command "(New-Object Media.SoundPlayer 'C:\temp\voice\notification.wav').PlaySync()"
📈 実用的な使用例
日常的な開発作業での活用
# 例:ファイル編集時
claude: Edit機能を使用 → 「実行許可を求めている」音声
編集完了 → 「タスクが完了したのだ」音声
# 例:複数ファイルの一括処理
claude: 複数ファイルの処理開始 → 確認音声
各ファイル処理完了 → 通知音声
全処理完了 → 完了音声
カスタム音声の活用
# プロジェクト固有の音声を作成
./generate-voices.sh
# 「デプロイを開始するのだ」
# 「テストが成功したのだ」
# 「エラーが発生したのだ」
📚 参考リンク
この記事が参考になったら、ぜひスキやフォローをお願いします!
Discussion