AI Voice Cloning Tool — Create custom notification sounds for Claude Code using any voice from YouTube videos. Powered by Qwen3-TTS, Whisper, and Demucs.
Claude Code plays a notification sound when it needs your attention — a permission prompt, a finished task, and so on. This tool lets you replace those sounds with a cloned voice of your choice, cloned from any YouTube clip.
Point it at a YouTube URL (an interview, a stream, a podcast), pick a clean few seconds of speech, and it generates a full set of Korean/English notification lines in that person's voice — ready to wire into Claude Code with one command. Everything runs locally on your machine (Apple Silicon or an NVIDIA GPU); no audio ever leaves your computer.
Prefer to just hear it first? Jump to the 🔊 Voice Samples at the bottom.
| Platform | Requirements |
|---|---|
| macOS | Apple Silicon (M1+), 32GB+ RAM, pixi |
| Linux | NVIDIA GPU, CUDA 12.0+, pixi |
git clone https://github.com/t1seo/karina-voice-notification.git
cd karina-voice-notification
pixi install
pixi run install-deps-mac # macOS (Apple Silicon)
pixi run install-deps-linux # Linux (NVIDIA GPU)The pipeline turns a raw YouTube link into clean voice notifications in six steps:
flowchart LR
A([YouTube URL]) --> B[Download<br/>yt-dlp]
B --> C[BGM Removal<br/>Demucs]
C --> D[Split & Select<br/>clean segment]
D --> E[Transcribe<br/>Whisper large-v3]
E --> F[Voice Clone<br/>Qwen3-TTS 1.7B]
F --> G([Notification .wav])
| Step | Technology | Notes |
|---|---|---|
| Download | yt-dlp | Extracts best-quality audio |
| BGM Removal | Demucs (Meta AI) | Optional — strips background music for a cleaner reference |
| Split & Select | pydub | Cut into segments; pick 5–15s of clean speech |
| Transcription | Whisper large-v3 | mlx-whisper (Mac) / faster-whisper (Linux) |
| Voice Cloning | Qwen3-TTS 1.7B | Cross-lingual — a Korean reference can speak English too |
Works with both Claude Code and Codex — same skills, same sounds.
Conversationally (recommended) — in Claude Code or Codex, run the skill and it walks you through it: paste a YouTube link, choose what each alert should say, done.
/generate-voice
Or via the interactive CLI:
pixi run pipeline # menu-driven: URL → segment → generate
# or one-shot, non-interactive:
pixi run quickstart "https://youtu.be/VIDEO_ID" --line "idle_prompt:다 됐어요!"Either way the notification set lands in output/notifications/.
Run the setup skill in either tool:
/setup-notifications
Or run the installer directly:
pixi run install-notifications # both tools (auto-detects)
python scripts/install_notifications.py --tool codex # just Codex
python scripts/install_notifications.py --dry-run # preview changesIt copies the sounds and wires up the events — Claude Code: Stop +
Notification hooks in ~/.claude/settings.json; Codex: a notify program
in ~/.codex/config.toml (fires on turn completion) plus the skills into
~/.codex/skills/. Every edited file is backed up, and it's safe to re-run.
Restart the tool afterward to load the hooks.
Good voice sources
- Interview clips, solo speaking, podcasts
- Enable BGM Removal for music videos
Avoid
- Noisy environments or multiple speakers
- Clips shorter than 5 seconds
Edit notification_lines.json to change the phrases:
{"text": "Your custom phrase here", "filename": "permission_prompt_1.wav"}| Problem | Solution |
|---|---|
| Poor voice quality | Use a cleaner source, enable BGM Removal |
| Hook not playing | Check ~/.claude/sounds/ exists, verify permissions |
| Missing dependencies | Run pixi run install-deps-mac or install-deps-linux |
| YouTube download fails (HTTP 403) | Update yt-dlp: pixi run pip install -U yt-dlp |
Three Korean notification lines, cloned in Karina's voice (interview source) with Qwen3-TTS. Press ▶ to play:
Task complete — 작업을 완료했습니다.
karina_done_ko_qwen3.mp4
Permission required — 실행 허가가 필요합니다.
karina_permission_ko_qwen3.mp4
Authentication succeeded — 인증에 성공했습니다.
karina_auth_ko_qwen3.mp4
Players are waveform videos so they play inline on GitHub. Source
.wavfiles are inassets/samples/; regenerate withpixi run samples.
MIT License
