150 lines
4.5 KiB
Markdown
150 lines
4.5 KiB
Markdown
|
|
# Генерация аудио для Благаявести
|
|||
|
|
|
|||
|
|
## Описание
|
|||
|
|
|
|||
|
|
Скрипты для генерации аудиоверсий книги с **умной фильтрацией** и голосом **Svetlana (Microsoft)**.
|
|||
|
|
|
|||
|
|
### Что делает умная фильтрация:
|
|||
|
|
|
|||
|
|
1. ✅ **Римские нумерации** → текст (I → первая, II → вторая)
|
|||
|
|
2. ✅ **Цифры** → текст где нужно (9 января 2026 → девятого января две тысячи двадцать шестого)
|
|||
|
|
3. ✅ **Ссылки** → "ссылка из текстовой книги"
|
|||
|
|
4. ✅ **Markdown разметка** → чистый текст (убирает \*\*, \*, \`, #)
|
|||
|
|
5. ✅ **Единый поток** → без лишних пауз между предложениями
|
|||
|
|
|
|||
|
|
## Использование
|
|||
|
|
|
|||
|
|
### Один файл
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python3 generate_audio_smart.py "00. ПРЕЛЮДИЯ.md"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Все файлы разом
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python3 generate_all_audio.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Настройки голоса
|
|||
|
|
|
|||
|
|
В файле `generate_audio_smart.py`:
|
|||
|
|
|
|||
|
|
- **Голос**: `ru-RU-SvetlanaNeural` (Microsoft Svetlana - бесплатный)
|
|||
|
|
- **Скорость**: `-5%` (чуть медленнее для вдумчивого чтения)
|
|||
|
|
- **Высота**: `+0Hz` (нормальная)
|
|||
|
|
|
|||
|
|
### Изменить скорость
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
RATE = "-10%" # Медленнее
|
|||
|
|
RATE = "+5%" # Быстрее
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Изменить голос
|
|||
|
|
|
|||
|
|
Доступные русские голоса Microsoft:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
VOICE = "ru-RU-SvetlanaNeural" # Светлана (женский, спокойный)
|
|||
|
|
VOICE = "ru-RU-DmitryNeural" # Дмитрий (мужской)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Полный список голосов:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
edge-tts --list-voices | grep ru-RU
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Выходные файлы
|
|||
|
|
|
|||
|
|
Аудио сохраняется в:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
audio_smart/
|
|||
|
|
├── 00. ПРЕЛЮДИЯ.mp3
|
|||
|
|
├── 01. Симуляция.mp3
|
|||
|
|
├── 02. Унижение.mp3
|
|||
|
|
└── ...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Проверка
|
|||
|
|
|
|||
|
|
Воспроизвести аудио:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
afplay "audio_smart/00. ПРЕЛЮДИЯ.mp3"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Если edge-tts не подключается (Connection timeout)
|
|||
|
|
|
|||
|
|
Microsoft `speech.platform.bing.com` иногда недоступен локально — блокировка провайдером, VPN, firewall. TLS handshake зависает, все попытки дают timeout.
|
|||
|
|
|
|||
|
|
### Решение: генерация через удалённый сервер
|
|||
|
|
|
|||
|
|
1. Проверь какой сервер видит Microsoft:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
ssh montana-moscow "curl -s --max-time 5 -o /dev/null -w '%{http_code}' https://speech.platform.bing.com"
|
|||
|
|
# 400 = сервер доступен (это нормальный ответ)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Установи edge-tts на сервере (один раз):
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
ssh montana-moscow "python3 -m pip install --break-system-packages edge-tts"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Загрузи файлы, сгенерируй, скачай обратно:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Загрузить
|
|||
|
|
scp "Книга Монтана 📕/51. Время.md" montana-moscow:/tmp/chapter.md
|
|||
|
|
scp generate_audio_smart.py montana-moscow:/tmp/generate_audio_smart.py
|
|||
|
|
|
|||
|
|
# Сгенерировать
|
|||
|
|
ssh montana-moscow "cd /tmp && python3 generate_audio_smart.py chapter.md"
|
|||
|
|
|
|||
|
|
# Скачать
|
|||
|
|
scp montana-moscow:/tmp/chapter.mp3 "Книга Монтана 📕/51. Время.mp3"
|
|||
|
|
|
|||
|
|
# Почистить
|
|||
|
|
ssh montana-moscow "rm /tmp/chapter.md /tmp/chapter.mp3 /tmp/generate_audio_smart.py"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Доступные серверы
|
|||
|
|
|
|||
|
|
| Сервер | Команда | Статус |
|
|||
|
|
|--------|---------|--------|
|
|||
|
|
| Moscow | `montana-moscow` | Проверен, работает |
|
|||
|
|
| Frankfurt | `montana-frankfurt` | Проверен, работает |
|
|||
|
|
| Amsterdam | `montana-ams` | Не проверен |
|
|||
|
|
|
|||
|
|
### Диагностика проблемы
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Проверить DNS
|
|||
|
|
nslookup speech.platform.bing.com 8.8.8.8
|
|||
|
|
|
|||
|
|
# Проверить TCP-соединение
|
|||
|
|
curl -v --max-time 10 https://speech.platform.bing.com
|
|||
|
|
|
|||
|
|
# Если TLS handshake зависает — проблема на уровне сети, используй удалённый сервер
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Требования
|
|||
|
|
|
|||
|
|
- Python 3.7+
|
|||
|
|
- edge-tts (установлен)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pip3 install edge-tts
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Голос**: Microsoft Svetlana Neural (бесплатный через edge-tts)
|
|||
|
|
**Качество**: Естественная интонация, плавное чтение
|