2013-09-07 1 views
3

Мне нужно реализовать алгоритм обнаружения голосовой активности на Java, чтобы я мог знать, когда начать и/или остановить запись звука. Я ищу алгоритм, который может принимать либо байты [], либо целевую линию данных, либо аудиофайл в качестве входных данных. Кроме того, решение предпочтительно не будет использовать внешние зависимости.Как реализовать обнаружение голосовой активности в Java?

+0

Обнаружение голосовой активности ОЧЕНЬ отличается от обнаружения тишины. Я не хочу, чтобы фоновый шум был обнаружен предпочтительно. – Skylion

+0

В то время как в вопросе говорится об обнаружении молчания, метод, который я показал, обнаруживает звук выше/ниже любого установленного предела. Если уровень шума BG не превышает «низкий», звук будет трудно услышать. Если он низкий, то описанная техника будет определять его с соответствующим пределом. Заметив также, что вы задали вопрос о сдвиге тона. Обнаружение уровней звука на порядок проще, чем изменение высоты тона. Если вы не можете сортировать это, у вас есть шанс снежного кома в аду этого. –

+0

Я уже реализовал этот код. Мне нужна информация о сдвиге тона или любых других алгоритмах, которые еще больше улучшат мой код. – Skylion

ответ

2

Посмотрите на TarsosDSP как источник вдохновения. Это лучшая библиотека Java с открытым исходным кодом для работы с функцией обнаружения звука. Это чисто написана на Java и кратко обеспечивает:

SoundDetection
PitchDetection
PercussionDetection
Аудио Время Растяжка
Pitch Shifting
БИХ-фильтры

Проверьте также официальный paper и manual для лучше понять эту тему.

+0

На самом деле я реализовал это самостоятельно, используя TarosDSP в качестве руководства и никогда не добирался до обновления ответа, но, эй, вы заслуживаете принятого ответа только для того, чтобы выкапывать это. – Skylion