Используйте libxtract или другую небольшую библиотеку C, C++ для функциональности VAD.

Я пытаюсь создать систему идентификации говорящего на Android. В настоящее время я использую libxtract для вычисления вектора MFCC из кадров и libsvm для классификации.

Есть ли у вас какие-либо идеи, как использовать libxtract или другую небольшую библиотеку C, C++, которую я могу скомпилировать под NDK, для обнаружения голоса (VAD Voice Activity Detection) в кадрах?


person Jack    schedule 11.09.2013    source источник


Ответы (3)


Надежная VAD — нетривиальная проблема, и существуют множество подходов.

Подход, который вы выберете, зависит от таких факторов, как:

  • особенности контекста вашего приложения и то, как ваше приложение будет использоваться
  • какие предположения вы можете сделать о звуке, который вы будете обрабатывать (какие типы фонового шума или неречевого звука вы можете ожидать)
  • должна ли ваша система работать в режиме реального времени

Простой подход может включать в себя использование «набора признаков» (например, f0, зашумленность, величины первых 10 частичных значений) пост-шумоподавления для каждого звукового кадра и обучение алгоритма машинного обучения (SVM будет достаточно) с широким выбором голосовых и неголосовых образцов.

Тем не менее, вероятно, лучше не рассматривать VAD как простую проблему классификации аудио по кадрам, а скорее принимать во внимание изменяющиеся во времени аспекты аудио. Это даст вам более точную оценку того, где начинаются и заканчиваются речевые сегменты. Для этого вы можете использовать последователь конверта или спектральный поток. Вы можете установить верхний и нижний порог для этих значений огибающей и использовать их (например) для управления гейтом в аудиопотоке.

person j b    schedule 06.08.2014

Инструментарий Voicebox имеет хорошую реализацию VAD с использованием нескольких методов, описанных Джейми. Вы можете найти его на vadsohn.m, который реализует «Обнаружение голосовой активности на основе статистической модели» (1999 г.) - Sohn, et al.

Вы также можете найти некоторые реализации, скажем, кодека G729 VAD (используемого в приложениях VOIP) на github. Например, эта магистерская диссертация.

Эти реализации находятся в MATLAB/Octave, но могут быть перенесены на C/C++ с небольшой доработкой. Удачи!

person ruoho ruotsi    schedule 11.10.2014

Как насчет LibVAD? www.libvad.com

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

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

person Charles    schedule 24.10.2017