Problem
When generating Russian speech, OmniVoice sometimes places word stress incorrectly. Russian has many homographs where stress position changes meaning:
- за́мок (castle) vs замо́к (lock)
- му́ка (suffering) vs мука́ (flour)
- ду́хи (spirits) vs духи́ (perfume)
Currently there is no way to control stress placement in Russian text.
What I tried
| Method |
Result |
Unicode combining acute accent (U+0301): за́мок |
Ignored by model |
Plus sign after vowel: за+мок |
Ignored or read as literal "+" |
ARPAbet injection [Z AA1 M AH0 K] for single words |
Works! But gives English accent |
| Full text in ARPAbet |
Sounds foreign, not Russian |
SSML <phoneme> tags |
Ignored |
The only working approach is partial ARPAbet injection (specific homograph words only, rest in Cyrillic), but it introduces a slight English accent on those words.
Proposed solution
Support the Unicode combining acute accent (U+0301, ◌́) placed after the stressed vowel in Russian text:
"Старый за́мок стоял на холме́. Замо́к на двери́ был сло́ман."
This is the standard linguistic way to mark Russian stress and is already used by:
- Russian dictionaries
- ruaccent library
- Wiktionary Russian entries
Why this matters
Russian TTS quality depends heavily on correct stress. With 600+ language support, OmniVoice is uniquely positioned to handle this well. A simple stress mark would make Russian output significantly more natural, especially for:
- Audiobook narration
- Game NPC dialogue
- Virtual assistants
Environment
- OmniVoice 0.1.2
- PyTorch 2.8.0, CUDA
- Using voice cloning with Russian reference audio
Problem
When generating Russian speech, OmniVoice sometimes places word stress incorrectly. Russian has many homographs where stress position changes meaning:
Currently there is no way to control stress placement in Russian text.
What I tried
за́мокза+мок[Z AA1 M AH0 K]for single words<phoneme>tagsThe only working approach is partial ARPAbet injection (specific homograph words only, rest in Cyrillic), but it introduces a slight English accent on those words.
Proposed solution
Support the Unicode combining acute accent (U+0301, ◌́) placed after the stressed vowel in Russian text:
This is the standard linguistic way to mark Russian stress and is already used by:
Why this matters
Russian TTS quality depends heavily on correct stress. With 600+ language support, OmniVoice is uniquely positioned to handle this well. A simple stress mark would make Russian output significantly more natural, especially for:
Environment