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

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 .

Geerten
источник
4

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

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

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

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

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

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

Как насчет LibVAD?

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

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

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