Извлечь человеческий звук из wav файла с помощью java

Я работаю над проектом, где мне нужно извлечь человеческий звук из аудиофайла .wav с помощью java.

Звуковой файл .wav может содержать от 3 до 4 звуков, таких как собака, кошка, музыка и человек. Мне нужно будет определить человеческий звук, а затем отвлечь эту часть от аудиофайла .wav.

Я использую FFT.java и Complex.java.

Теперь я написал класс AudioFileReader, который считывает файл audio.wav с жесткого диска, а затем преобразует его в массив байтов. Затем использовались вышеупомянутые FFT.java и Complex.java для применения FFT.fft(bytesArray), который дает мне сложный массив в обратном порядке;

Теперь проблема заключается в том, как извлечь человеческий шаблон байтового звука из возвращаемого сложного массива... знает ли кто-нибудь, как я мог бы это достичь?


Edit: Мы принимаем очень простой файл audio.wav. Например, звук кота, затем тишина, звук человека, затем тишина, звук собаки, затем тишина и т.д. Никакая смесь голосов.

Ответ 1

Я думаю, что стандартный способ решения таких проблем - преобразовать входные сигналы в представление Cepstrum или Mel-Cepstrum, а затем использовать коэффициенты для пространства функций для ввода в классификатор. Существует множество исследовательских работ, в которых обсуждаются решения этих проблем на основе этого базового подхода, например:

http://www.ics.forth.gr/netlab/data/J17.pdf

Одним из возможных ярлыков, которые вы могли бы попробовать, было бы поместить входные сигналы через вокодер с низкой скоростью передачи данных, например AMBE, затем декодировать и сравнить качество исходного сигнала с кодированным/декодированным сигналом. Эти вокодеры предназначены для того, чтобы сильно сжимать человеческую речь с честным до хорошего качества за счет того, что они не могут адекватно представлять неречевые звуки.

Ответ 2

Это может быть достигнуто AI (и немного меньше этого). Вы можете исследовать API для распознавания речи, но я сомневаюсь в их способности поддерживать сигналы с шумом в фоновом режиме.

например.

  • Это кошка, или кто-то говорит "мяу"?
  • Это музыка или кто-то поет "do, re, mi.."?
  • Кто сказал: "Полли хочет взломать", человека или попугая?

Ответ 3

Хорошо, что классическая проблема AI (распознавание машин/распознавание образов) Посмотрите статью в Википедии

Но в основном вам понадобятся уже классифицированные данные, которые вы подаете в свой алгоритм, чтобы он мог научиться классифицировать новые данные. Но будьте осторожны, 100% правильность - это нечто иллюзорное почти для любого в этой области, хотя для вашей простой проблемы это может быть возможно (зависит от вашего точного определения проблемы)