Извлечь человеческий звук из 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% правильность - это нечто иллюзорное почти для любого в этой области, хотя для вашей простой проблемы это может быть возможно (зависит от вашего точного определения проблемы)