Извлечение человеческого звука из файла WAV с использованием Java - PullRequest
10 голосов
/ 24 марта 2011

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

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

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

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

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


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

Ответы [ 3 ]

2 голосов
/ 24 марта 2011

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

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

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

1 голос
/ 24 марта 2011

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

EG

  • Это кошка или кто-то говорит «мяу»?
  • Это музыка или кто-то поет «делай, ре, ми ..»?
  • Кто сказал: «Полли, хочешь взломать», человек или попугай?
0 голосов
/ 24 марта 2011

Ну, это классическая проблема ИИ (машинное обучение / распознавание образов). Взгляните на статью в Википедии

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

...