Add TTS audiobook generator with dual-voice effect
Generates Russian audiobooks from ASFR stories using Silero TTS v5. Narrator voice (eugene) for prose, robotic voice for system errors. - tts/tts_silas.py: generator script with stress accentor + robotic effect - tts/README.md: documentation - .gitignore: exclude output WAV files
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
# TTS — Audio Generation for ASFR Stories
|
||||
|
||||
## What
|
||||
|
||||
Generates audiobooks from story files using **Silero TTS v5** (Russian). Two voices:
|
||||
- **Narrator** — male voice (`eugene`) for the story prose
|
||||
- **Cyborg voice** — same voice with robotic effect (pitch shift + ring modulation + bitcrush) for system error messages (`ОШИБКА:`, `ПРЕДУПРЕЖДЕНИЕ:`)
|
||||
|
||||
## Setup
|
||||
|
||||
```bash
|
||||
uv add torch torchaudio silero silero-stress soundfile librosa
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
# Generate Silas audiobook
|
||||
uv run tts/tts_silas.py Silas.md
|
||||
|
||||
# Generate any story
|
||||
uv run tts/tts_silas.py Logan.md
|
||||
```
|
||||
|
||||
Output goes to `tts/output/`:
|
||||
- `<name>_full.wav` — complete audiobook
|
||||
- `<name>_demo.wav` — first 4 segments (~1 min)
|
||||
|
||||
## Voice Options
|
||||
|
||||
Available Silero v5_ru voices:
|
||||
- `aidar` — deep male (can be monotone)
|
||||
- `eugene` — male, more expressive intonation ← default
|
||||
- `baya` — female, soft
|
||||
- `kseniya` — female, clear
|
||||
- `xenia` — female, calm
|
||||
|
||||
Change `SPEAKER` in `tts_silas.py` to switch voices.
|
||||
|
||||
## Robotic Effect
|
||||
|
||||
System messages get these audio effects:
|
||||
- Pitch shift: -4 semitones (deeper, more mechanical)
|
||||
- Ring modulation: 50 Hz carrier (metallic timbre)
|
||||
- Bitcrush: 200 levels (digital distortion)
|
||||
|
||||
Parameters in `make_robotic()` can be tuned.
|
||||
|
||||
## Known Issues
|
||||
|
||||
- Silero can misplace Russian word stress on complex sentences
|
||||
- Long paragraphs are split at sentence boundaries
|
||||
- Robotic effect uses librosa which has deprecation warnings (harmless)
|
||||
Reference in New Issue
Block a user