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

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

Интересно, а есть алгоритм для определения погрешности произношения. Типа есть оригинал нормального носителя языка и на графиках показывает, насколько ты отстал от нормального.
Нормальным носителем русского языка считать Юрия Борисовича Левитана? Кого брать за нормального носителя?
Если коротко, то конечно есть, и их даже много.
Несмотря на то, что у G729 размер фрейма 10мс, кодеки поновенее (AMR1/2; AFE и в особенности Skype SILK) используют фреймы длиной 20мс. (АMR, SILK) и 30мс. (AFE). И на практике, простейшие VAD алгоритмы (основанные на энергии, энтропии и пересечении нулевой отметки) хорошо работают как раз с фреймами размером 30мс и пересечением 10мс.

И вообще проблема VAD не столько в белом шуме (это дело как раз таки решили), а в энергии этого шума. Лишние 5db экспоненциально ухудшают работу VAD.
Да, соглашусь, энергия самого шума критически влияет на работу этих алгоритмов, независимо от того, на каких характеристиках они основаны. Поэтому ищут алгоритмы, которые успешно справляются с шумами разных характеров.

А на счет работы с пересекающимися фреймами — на основе более продолжительного окна времени можно достать больше информации о присутствующем шуме, потому новые кодеки работают на порядок лучше. Но они соответственно сложнее в реализации. Я же для начала решил сделать перевод статьи с довольно простым алгоритмом VAD.
Проблема VAD в психологии. Без генерации комфортного шума он невыносим — возникает ощущение, что связь прервалась. С генерацией комфортного шума все равно заметны дефекты. Плюс чаще всего проглатываются первые миллисекунды речи. Поэтому обычно VAD принято отключать.
Ну, скажем, VAD ведь нужен не только для средств связи, не так ли? Насколько я знаю, в TeamView используется реализация VAD из-за которой слушать собеседника во время совместной работы сложно. Но сам VAD это подоснова для многих других алгоритмов. В том числе алгоритмов улучшения качества речевых отрезков, распознавания, выделения дикторов. Скажем, это весьма важный алгоритм в области обработки аудио или речи и от качества его реализации сильно зависит итоговый результат комплексной системы.
На днях как раз сочинял такую штуку для самодельной цифровой рации. Обошёлся простым сравнением с порогом. Это то, что тут называют short time energy?
Нет, это не то. Вот ссылка почитать про вычисление energy и short-term energy — очень познавательно, рекомендую :)
Проверяли поведение на шипящих звуках?
Шипящие звуки в плане шума или в плане шипящих в речи?
На шум проверяли и с разной интенсивность. А в речи должно детектироваться как часть речи из-за непродолжительности воздействия.
Вот бы еще пример реализации увидеть на каком-нибудь языке, например java или с++. Это было бы идеально…
Примеров даже в сети не очень много, да и то что есть редко выходит за рамки грязного едва-рабочего куска кода. Разработки в этой области мало кто выкладывает, так как зачастую они несут коммерческий интерес. Есть мысли до весны реализовать пару базовых алгоритмов из этой области, в том числе и VAD и, если повезет, несомненно поделюсь примером.
Буду благодарен.
Руки таки не дошли. Но, хочу отметить, что в кодеке G.729 можно найти реализацию VAD. Ссылка
В этих графиках есть одна странность.
С какого перепугу Most dominant frequency component должна выглядеть как на графике.
Скорее всего в моменты появления речи перескок должен быть сделан на форманту F1, а не улетать куда-то сильно вверх.
Я набросал код, а сейчас смотрю на графики. Шипящие-свистящие безусловно дают высокий подрос частоты, но это обычно обрамление гласных звуков, которые по крайней мере у нас в русском находятся в центре слов. А у гласных — там доминирует первая форманта.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории