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
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
uv add torch torchaudio silero silero-stress soundfile librosa
Usage
# 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 ← defaultbaya— female, softkseniya— female, clearxenia— 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)