VoxLock: выделение целевого говорящего для голосовых агентов без предварительной записи голоса
Распознаватель голосового агента может ответить на телевизор или соседнего человека, потому что обычное шумоподавление сохраняет любую речь. VoxLock дообучает причинный REAL-TSE получать образец нужного голоса из самого звонка. Ценность работы в проверке по ошибкам распознавания на настоящих записях и подробном раскрытии цены автоматического включения фильтра.
Метод. Основа на 27 млн параметров использует BSRNN, комплексный STFT 16 кГц и два пути внимания к трёхсекундному голосовому образцу, включая признаки ECAPA-TDNN. Последовательное обучение на одной L4 объединяет моделируемые звонки, настоящие межканальные помехи AMI, длинные фрагменты и независимую вариацию расстояний. Офлайн выбираются самые громкие три секунды из первых пятнадцати; потоковый режим сначала пропускает звук без обработки и набирает три секунды речи. Две ONNX-схемы отдельно вычисляют признаки образца и обрабатывают последующие блоки.
Результаты. На 265 записях Krisp WER снижается с 23,21% до 4,95%, а в действительно потоковом режиме составляет 5,15%. За 85,3 минуты фоновой речи в текст попадают девять слов против 130 у Krisp Default; различие общего WER с лучшими вариантами Krisp статистически не установлено. На заранее зафиксированных 400 окнах AMI WER 42,95→10,63%, потоковый вариант 11,97%. Восьмибитная модель даёт 5,11% на Krisp. В чистом телефонном сценарии фильтр способен вредить: WER 3,82→5,36%.
Ограничения. Только английский, 16 кГц и один целевой человек; предполагается, что он говорит первым и достаточно громко. Иначе выбирается не тот голос. Krisp и небольшой набор AMI использовались при разработке, только большой AMI является слепой проверкой; в нём нет полного набора конкурентов. Оценка зависит от одного семейства распознавателей и одного обучения, а интервалы по людям не учитывают полностью зависимость внутри встречи. Отсутствие отдельной регистрации не отменяет необходимости накопить образец и не означает защиты с первого отсчёта.
Фишка из статьи. Раздел внедрения отличает установившуюся пропускную способность от полной задержки. CPU измерен на одном потоке Xeon 2,2 ГГц с Python и ONNX Runtime; к размеру блока добавляются 24 мс алгоритмической задержки.
| Режим | Затраты / задержка |
|---|---|
| Блок 80 мс | 61% одного CPU-потока; не менее 104 мс буферизации и алгоритма |
| Блок 40 мс | 77% потока; не менее 64 мс |
| Блок 20 мс | 110% потока, один поток не успевает |
| Первое включение live() | После накопления 3 с речи ещё 2–5 с вычислительной остановки |
Как это читать: заголовочные 24 мс не являются задержкой готового звонка. При включении сеть прогоняет уже услышанный разговор для прогрева состояния, а этот прогон выполняется синхронно и задерживает выдачу. Для интерактивного агента важны и работа после прогрева, и поведение в первые секунды, когда фоновая речь ещё проходит без защиты. Уменьшать блок до 20 мс без проверки CPU здесь контрпродуктивно.
Источник. Оригинальное название: VoxLock: Target-Speaker Extraction for Voice Agents Without an Enrollment Step. arXiv:2610.40727; полный текст PDF.