Библиотеки для обнаружения голосовой активности (не распознавания речи)


18

В продолжение моего предыдущего вопроса мне было интересно, существуют ли какие-либо библиотеки обнаружения речи. Под распознаванием речи я подразумеваю передачу в аудиобуфере и получение индекса того, где речь начинается и заканчивается. Так что, если у меня есть 10 секунд выборки звука на частоте 44 кГц, я бы ожидал массив чисел, таких как:

44000
88000
123000
190334
...

Это может указывать, например, на то, что речь начинается через одну секунду, а затем заканчивается в второй точке и т. Д.

Чего я не ищу, так это распознавания речи, которое выписывает текст из произнесенного слова. Это, к сожалению, то, что я вижу много, когда я гуглю «обнаружение речи».

Было бы замечательно, если бы библиотека была на C, C ++ или даже Objective-C, поскольку я пишу приложение для iPhone.

Благодарность!


1
Вы можете найти свой ответ в одном из следующих ответов: dsp.stackexchange.com/questions/912/…
Гертен

1
Это очень похоже, за исключением пения вместо речи: dsp.stackexchange.com/q/2367/29
эндолиты

1
Также актуально: dsp.stackexchange.com/a/1543/29 «Обнаружение голосовой активности»
эндолит

1
Вы должны посмотреть на обнаружение начала / смещения. Это активная область со многими приложениями в обработке музыки, речи и радиолокационных сигналов.
CyberMen

Ответы:


13

В своем ответе на этот вопрос я упомянул, что обнаружение голосовой активности является стандартной функцией для кодеков, таких как G.729 и других.

Вы должны искать эталонные кодеры и декодеры для алгоритмов, которые применяют это.

Один из таких примеров - http://www.voiceage.com/openinit_g729.php

Другой возможный источник - кодек Speex. Который реализует VAD

Кстати: вы должны Google "Обнаружение голосовой активности" или "Разговор речи", а не "Обнаружение речи".


6

В проектах Sphinx и Freeswitch есть реализации с открытым исходным кодом. Я думаю, что они все детекторы на основе энергии, они не нуждаются в какой-либо модели.

Sphinx 4 (Java, но его должно быть легко перенести на C / C ++)

PocketSphinx

FreeSwitch

Ответ взят из вопроса Stackoverflow .


4

Обнаружение голосовой активности с использованием Adaptive Threshold очень легко и удобно реализовать на любой платформе.

Здесь вы можете иметь алгоритм на основе адаптивной энергии

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

в этом кадре, который вы передаете, делится на подкадры и далее вы можете проверить каждый подкадр на его активность

Вы можете преодолеть дальнейшие проблемы с наложенными кадрами


Я пытаюсь реализовать метод в статье, но теряюсь, когда Min_E равно нулю из-за подавления шума. В этом случае Thresh_E будет равен -INF из уравнения. Даже принимая log1p (Min_E), Thresh_E будет равен нулю, так что очень легко ошибочно классифицировать вокализованные кадры из-за ненулевой энергии. Любые хорошие предложения или я неправильно понимаю? Уравнения: порог _ E энергии _ Pr imThresh * log (Мин. _ E)
Фарли

3

Как насчет LibVAD?

Похоже, это именно то, что вы описываете.

Раскрытие информации: я разработчик LibVAD


Как получить libVAD?
Todd

Приобретая его. Тем не менее, веб-сайт не раскрывает цену до тех пор, пока вы не заполните форму.
Камиль Гудесюн

2
Теперь ссылка ведет на вредоносный сайт, где посетители хотят обновить Flash.
Стив Северанс,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.