45 lines
3.4 KiB
Markdown
45 lines
3.4 KiB
Markdown
# Озвучки робота: генерация и правки
|
||
|
||
Все реплики робота — edge-tts, голос **`fr-FR-VivienneMultilingualNeural`**, формат
|
||
8 кГц / моно / 16 бит PCM WAV. Лежат на АТС в `/var/lib/asterisk/sounds/ru/` (`ss_*.wav`),
|
||
имя файла = имя реплики в `ss-dialog.agi`.
|
||
|
||
```bash
|
||
edge-tts --voice fr-FR-VivienneMultilingualNeural --text "<текст>" --write-media out.mp3
|
||
ffmpeg -v error -y -i out.mp3 -ar 8000 -ac 1 -c:a pcm_s16le out.wav
|
||
```
|
||
|
||
Деплой (всегда с бэкапом — был случай, когда файл на АТС обнулился):
|
||
`scp` в `/tmp` на АТС → `test -s` → `cp` в `/var/lib/asterisk/sounds/ru/` →
|
||
`chown asterisk:asterisk` + `chmod 644` → сверить `md5sum` с локальным.
|
||
|
||
## Название компании — только раздельно
|
||
|
||
Владелец попросил, чтобы «СуперСам» звучало раздельно. Проверено синтезом (пауза внутри названия):
|
||
|
||
| Текст в подсказке | Пауза внутри названия | Вердикт |
|
||
|---|---|---|
|
||
| `СуперСам` | нет | было в проде — владелец забраковал, звучит слитно |
|
||
| **`Супер Сам`** | +24 мс | **выбор владельца (14.09), стоит в проде** |
|
||
| `Супер, Сам` | +0,45 с | пробовал, владелец отклонил — запятая слышится как обращение |
|
||
| `Супер... Сам` | +0,7 с | звучит неестественно |
|
||
|
||
Речь в подсказке: `Здравствуйте! Это Супер Сам. <дальше по сценарию>`.
|
||
Файлы с названием компании: `ss_pkp_intro`, `ss_c_intro_dlv`, `ss_c_intro_pkp`
|
||
(в сценариях A и B компания не представляется).
|
||
|
||
⚠️ Владелец выбирает озвучку на слух: перед публикацией спорного варианта отправлять ему
|
||
короткие пробники в чат (Telegram), а не решать по метрикам — по цифрам «Супер Сам» почти
|
||
не отличается от слитного варианта, но ему слышно.
|
||
|
||
## Проверка правки
|
||
|
||
- **Текст** — распознать свой wav (`faster_whisper`, `small`, `language="ru"`): вернёт то, что
|
||
услышит человек. Whisper пишет название одним словом («Суперсан») даже при раздельном
|
||
произношении — по нему судить о паузе нельзя.
|
||
- **Пауза внутри названия** — по энергии сигнала (RMS по кадрам 10 мс, порог −32 дБ от пика):
|
||
у правильной версии появляется провал ≥ 0,3 с в районе названия, у старой его нет.
|
||
- ⚠️ Генерировать файлы по одному в отдельных вызовах `edge-tts`: в цикле внутри Python два
|
||
разных текста один раз вышли побайтово одинаковыми (артефакт), поэтому перед деплоем
|
||
сверять `md5sum` всех файлов между собой и с ожидаемым.
|