Бібліотеки для виявлення голосової активності (не розпізнавання мови)


18

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

44000
88000
123000
190334
...

Це вказувало б, наприклад, на те, що мова починається одну секунду, а потім закінчується в двох секундах і т.д.

Я не шукаю розпізнавання мовлення, яке виписує текст із розмовного слова. На жаль, це те, що я бачу дуже багато, коли перебуваю в Google "виявлення мови".

Було б чудово, якби бібліотека була на C, C ++ або навіть на Objective-C, коли я пишу програму для iPhone.

Спасибі!


1
Ви можете знайти свою відповідь в одній з таких відповідей: dsp.stackexchange.com/questions/912/…
Geerten

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

BTW: Вам слід google "Виявлення голосової активності" або "Talk Spurt", а не "Вимовлення мови".


6

У проектах Sphinx і Freeswitch є реалізація з відкритим кодом. Я думаю, що всі детектори на основі енергії не потребують будь-якої моделі.

Сфінкс 4 (Java, але він повинен бути легким для порту на C / C ++)

PocketSphinx

Freeswitch

Відповідь взята від StackOverflow питання .


4

Виявлення голосової активності за допомогою адаптивного порогу дуже легко та зручно реалізувати на будь-якій платформі

Тут ви можете мати алгоритм, який є заснований на адаптивній енергії

Невеликий додаток до вищевказаного алгоритму, коли ви вперше розраховуєте, займіться взяттям середньої енергії та позначте як Emin

у цьому кадр, який ви передаєте, поділяється на підкадри і далі ви можете вивчити кожен підкадр на предмет його активності

ви можете подолати подальші проблеми із перекритими кадрами


Я намагаюся реалізувати метод у роботі, але втрачаюсь, коли Min_E дорівнює нулю через придушення шуму. У цьому випадку Thresh_E буде -INF від рівняння. Навіть приймаючи log1p (Min_E), Thresh_E буде нульовим таким чином, що дуже легко класифікувати озвучені кадри через ненульову енергію. Будь-які хороші пропозиції чи я це неправильно розумію? Рівняння: Thresh _ E Energy _ Pr imThresh * log (Min _ E)
Farley

3

Як щодо LibVAD?

Схоже, це робить саме те, що ви описуєте.

Розкриття інформації: Я розробник LibVAD


Як можна отримати libVAD?
Тод

Купуючи його. Веб-сайт не розголошує ціну, поки ви не заповнили форму.
Camille Goudeseune

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