Как стать автором
Обновить

Комментарии 12

Спасибо за полезный инструмент!
Спасибо за статью и инструмент.
Планируете выложить код для тренировки на собственных данных?

Хотя формально сам код является отделимым и лаконичным, часть пайплайнов для данных не очень отделимы от приватных вещей, поэтому скорее нет чем да (опыт open-stt "научил" нас общению с коммьюнити)


Также мы скорее рассматриваем наше решение скорее как конечное решение, а не тулкит, чтобы сделать свое решение, да и как показывает практика по-настоящему универсальных и портативных решений не так много, поэтому лучше собрать фидбек и самим запилить новые фичи


Но как и в случае с silero-models мы собираем запросы на фичи и будем понемногу их добавлять, например больше устойчивости к мелким чанкам или детектор музыки


Ну и никто не мешает естественно использовать готовую модель как экстрактор фич для своей модели

Я попробовал вот этим скриптом обработать вот этот файл и получил вот этот результат:

[{'end': 35000, 'start': 0},
 {'end': 112000, 'start': 35000},
 {'end': 124000, 'start': 112000},
 {'end': 288000, 'start': 143000},
 {'end': 320000, 'start': 287000},
 {'end': 628000, 'start': 319000},
 {'end': 752000, 'start': 632000},
 {'end': 801000, 'start': 775000},
 {'end': 960000, 'start': 811000}]


В каких единицах измерения эти числа?

"а в детекцию тишины (тишина — это отсутствие и голоса и шума), " - из опыта работы в телефонии и кол-центрах мне кажется такое понимание неправильно на практике, хотя может теоретически и правильно. Дело втом что разные модели телефонов и блютуф гарнитур имеют системы автоматической регулировки уровня сигнала и системы подавления шумов - все это работает по разному и таких моделей сотни если не тысячи, из-за этого уровень фонового шума приходит в кол центр очень сильно разный, в 10 раз и более, (в тихом доме и в шуме у дороги или в метро и т.д.) и пороговый метод работает очень слабо. Точнее как бы тишина это отсутсвие голоса или многократно более слабый сигнал по сравнению с голосом но пока голоса не было порог не выставить, ну и в метро или у дороги с интенсивным движением шум или как бы тишина из-за АРУ может быть и громче голоса.

Мы сталкивались с этой проблемой, новый VAD ее частично решает. Более полно решает уже с неким набором эвристик уже в самих дистрибутивах.

на практике в крупном кол-центре где я работал как раз это отличить шум от голоса была главной нерешенной проблемой (а не нет сигнала - от есть сигнал), подход с эвристиками использовался в Инфинити в результате их число быстро разрослось до нескольких тысяч и постоянно пополнялось ввиду быстрого изменения условий и даже сверх супер мега мощный сервер за 20 млн. руб. перестал справляться. У меня сложилось впечатление что подход с эвристикми в корне неправильный и продать вашу систему в кол цент где уже обожглись на эвристиках будет невозможно. Нужен какой-то кардинально другой подход! И кстати гонка за скоростью на практиуке не нужна, в пределах 1 сек это очень даже Ок если 99.99% правильных срабатываний и вероятность пропуска близка к нулю.

День добрый! Если я получаю данные с микрофона в виде последовательности целых чисел (pvrecorder), как их лучше обрабатывать перед подачей в Silero VAD?

Там в репозитории есть примеры

Но вообще нормализовать к -1 ... 1

А дальше преобразовать в тензор или оставить список?
Со списком работают get_speech_timestamps и vad_iterator.
Команда collect_chunks(speech_timestamps, sound_scaled) выдает ошибку "TypeError: expected Tensor as element 0 in argument 0, but got list"
model(chunk, SAMPLING_RATE) выдает ошибку "forward() Expected a value of type 'Tensor' for argument 'x' but instead found type 'list'."

Преобразовал в тензор. Вроде работает. Спасибо!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории