lct-hack/frontend/public/ambience/README.md
Ivan Gerasimov 750ded2991 lct-09: звук звонящего на фронте, перебивание, аудио-фон
Очередь AudioBufferSourceNode, а не <audio>: перебивание требует
оборвать звук мгновенно и выбросить очередь. Планирование встык по
currentTime с упреждением 50 мс — иначе между чанками щелчок.

Перебивание двухслойное: фронт гасит звук по громкости микрофона за два
кадра (40 мс), сервер подтверждает по VAD за 88–90 мс и присылает
tts.cancel. Сервер — авторитет, фронт — скорость.

Логика вынесена из WebAudio и проверена в Node: очередь планируется без
щелей и наложений, сброс останавливает все чанки, гейт не срабатывает на
шуме и ловит начало речи ровно один раз.

Нет файла фона — звонок идёт без фона с предупреждением в консоли, а не
падает: записи это контент, их кладёт методист.

Путь через браузер с живым микрофоном не проверен: шаги записаны
в карточке.
2026-09-17 21:13:41 +03:00

17 lines
946 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Аудио-фон происшествия
Сюда кладутся зацикленные записи, которые звучат под голосом звонящего: треск огня,
детский плач, шум улицы, гудки, сирена. Имя файла указывается в сценарии:
```yaml
background:
loop: fire_crackle.mp3
gain_db: -18
```
Требования: зацикливается без щелчка на стыке, моно или стерео, mp3 или ogg,
10–30 секунд. Гейн задаётся сценарием и должен быть заметно ниже голоса — фон
даёт ощущение места, но не мешает разбирать речь.
Файла нет — занятие идёт без фона: в консоли браузера останется предупреждение,
звонок не прервётся.