Text-to-speech studio for Russian language using Yandex SpeechKit and AI-powered TTS markup.
- Text cleaning -- auto-split into chapters, remove artifacts, normalize formatting
- AI markup -- automatic stress marks, pauses, and intonation via DeepSeek API
- Speech synthesis -- Yandex SpeechKit gRPC with 13 voice options
- Batch processing -- process multiple files in queue
- Desktop GUI -- ttkbootstrap interface with dark/light theme
- Quality testing -- STT verification and audio clarity checks
voice-studio/
├── run.py / run.pyw # Application entry points
├── config.json # User configuration
├── requirements.txt # Python dependencies
├── src/
│ ├── app.py # Main application controller
│ ├── core/
│ │ ├── text_cleaner.py # Step 1: Text cleaning & chapter splitting
│ │ ├── preparer.py # Step 2: AI markup (DeepSeek)
│ │ └── synthesizer.py # Step 3: Yandex SpeechKit TTS
│ ├── ui/
│ │ ├── theme.py # Theme management (dark/light)
│ │ └── screens/ # GUI screens (ttkbootstrap)
│ └── utils/
│ └── config.py # Configuration loader
├── test_audio_quality.py # Audio quality tests
├── test_clarity.py # Clarity analysis
└── test_stt_check.py # STT verification tests
- Clean -- Load
.txtfile, detect encoding, split into chapters, remove junk - Mark -- AI adds TTS markup: stress (
+), pauses (sil<[N]>), accents - Synthesize -- Yandex SpeechKit converts marked text to MP3
Alexander, Kirill, Alena, Dasha, Marina, Lera, Amira, Madi, Nigora, Lea, Naomi, John, Filipp
-
Clone the repository:
git clone https://github.com/al-nemirov/voice-studio.git cd voice-studio -
Create a virtual environment (recommended):
python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows
-
Install dependencies:
pip install -r requirements.txt
-
Obtain API keys:
-
Configure the application: Fill in
config.jsonor use the Settings screen in the GUI. -
Run:
python run.py
Or double-click
run.pywfor a windowless launch on Windows.
Edit config.json or use the Settings screen in the GUI:
| Parameter | Description | Default |
|---|---|---|
deepseek_api_key |
DeepSeek API key (for AI markup) | -- |
yandex_api_key |
Yandex Cloud API key (for synthesis) | -- |
yandex_folder_id |
Yandex Cloud folder ID | -- |
voice |
Voice name (see list above) | -- |
speed |
Playback speed | 1.0 |
role |
Voice style: neutral, good, strict, friendly | neutral |
pitch_shift |
Pitch adjustment (-1000 to +1000 Hz) | 0 |
volume |
Loudness in LUFS | -19 |
- Python 3.8+
grpcio,protobufttkbootstrapopenai(DeepSeek-compatible client)yandex-cloud(gRPC stubs)chardet,pydub,SpeechRecognition
Contributions are welcome! To contribute:
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes and commit:
git commit -m "Add my feature" - Push to your fork:
git push origin feature/my-feature - Open a Pull Request
Please ensure your code follows the existing code style and includes docstrings for new functions.
Студия озвучки текстов на русском языке с Яндекс SpeechKit и AI-разметкой.
- Очистка текста -- авторазбивка на главы, удаление артефактов, нормализация
- AI-разметка -- автоматические ударения, паузы, интонации через DeepSeek API
- Синтез речи -- Яндекс SpeechKit gRPC, 13 голосов
- Пакетная обработка -- очередь из нескольких файлов
- GUI -- интерфейс ttkbootstrap с тёмной/светлой темой
- Тестирование качества -- проверка через STT и анализ чёткости
voice-studio/
├── run.py / run.pyw # Точки входа
├── config.json # Конфигурация
├── requirements.txt # Зависимости Python
├── src/
│ ├── app.py # Главный контроллер
│ ├── core/
│ │ ├── text_cleaner.py # Шаг 1: Очистка текста и разбивка на главы
│ │ ├── preparer.py # Шаг 2: AI-разметка (DeepSeek)
│ │ └── synthesizer.py # Шаг 3: Синтез через Yandex SpeechKit
│ ├── ui/
│ │ ├── theme.py # Управление темой (тёмная/светлая)
│ │ └── screens/ # Экраны GUI (ttkbootstrap)
│ └── utils/
│ └── config.py # Загрузчик конфигурации
├── test_audio_quality.py # Тесты качества аудио
├── test_clarity.py # Анализ чёткости
└── test_stt_check.py # Проверка через STT
- Очистка -- загрузка
.txt, определение кодировки, разбивка на главы - Разметка -- AI расставляет ударения (
+), паузы (sil<[N]>), акценты - Синтез -- Яндекс SpeechKit конвертирует размеченный текст в MP3
Александр, Кирилл, Алёна, Даша, Марина, Лера, Амира, Мади, Нигора, Леа, Наоми, Джон, Филипп
-
Клонируйте репозиторий:
git clone https://github.com/al-nemirov/voice-studio.git cd voice-studio -
Создайте виртуальное окружение (рекомендуется):
python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows
-
Установите зависимости:
pip install -r requirements.txt
-
Получите API-ключи:
-
Настройте приложение: Заполните
config.jsonили используйте экран настроек в GUI. -
Запуск:
python run.py
Или дважды кликните
run.pywдля запуска без консоли на Windows.
Отредактируйте config.json или используйте экран настроек:
| Параметр | Описание | По умолчанию |
|---|---|---|
deepseek_api_key |
Ключ DeepSeek API (для AI-разметки) | -- |
yandex_api_key |
Ключ Yandex Cloud API (для синтеза) | -- |
yandex_folder_id |
ID каталога Yandex Cloud | -- |
voice |
Имя голоса (см. список выше) | -- |
speed |
Скорость воспроизведения | 1.0 |
role |
Стиль: neutral, good, strict, friendly | neutral |
pitch_shift |
Сдвиг тона (-1000 до +1000 Гц) | 0 |
volume |
Громкость в LUFS | -19 |
- Python 3.8+
grpcio,protobufttkbootstrapopenai(DeepSeek-совместимый клиент)yandex-cloud(gRPC-стабы)chardet,pydub,SpeechRecognition
Мы рады вашим вкладам! Чтобы внести изменения:
- Сделайте форк репозитория
- Создайте ветку:
git checkout -b feature/my-feature - Внесите изменения и закоммитьте:
git commit -m "Add my feature" - Отправьте в свой форк:
git push origin feature/my-feature - Откройте Pull Request
Пожалуйста, следуйте существующему стилю кода и добавляйте docstring к новым функциям.
Alexander Nemirov
This project is licensed under the MIT License -- see the LICENSE file for details.