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)
|
||
**Качество**: Естественная интонация, плавное чтение
|