Обработка: применение записанных акустических пространств (импульсная характеристика) к аудиофайлу

Мне нужно применить импульсный отклик аудиофайла с частотой 48 кГц к аудиофайлу с частотой 44,1 кГц. Это может быть кто-то, например, говорящий. Если я использую правильный термин, мне нужно объединить два аудиофайла вместе, чтобы звучало так, будто кто-то говорит внутри собора.

Чего я не знаю, так это как я это делаю. Я посмотрел на библиотеку minim, так как это единственная аудиотека, которую я помню, и нашел пример, который применяет импульсный отклик фильтра нижних частот к аудиофайлу. Есть ли способ свести два аудиофайла вместе для вывода нового звука? Обработка звука не моя сильная сторона, поэтому, пожалуйста, не обращайте внимания на мое невежество. Спасибо, я пытаюсь выяснить это по пути.

1 ответ

Да, вам нужна свертка, но сначала ваш источник должен быть с той же частотой дискретизации. Если ваши источники имеют одинаковую частоту дискретизации, у вас есть два варианта выполнения преобразования S/R: 1. вы можете сделать это "напрямую", что является наиболее простым способом, но занимает время M*N, или 2. вы можно сделать это с помощью преобразования Фурье, которое гораздо сложнее, но быстрее. Вам также нужно будет реализовать алгоритм добавления перекрытия. Глядя на документы Minim, мне кажется, что они используют стандартный БИХ-фильтр, а не свертку импульсным откликом, поэтому я не думаю, что это поможет. Вам придется проделать большую работу, чтобы свернуть, помимо того, что Minim дает вам, используя FFT. Если вы хотите пойти "прямым" путем, он будет выглядеть примерно так:

for( i in 0...input.length )
    for( j in 0...conv.length )
        output[i] += i-j < 0 ? 0 : input[i-j] * conv[j] ;

подробности здесь: http://www-rohan.sdsu.edu/~jiracek/DAGSAW/4.3.html или Google "дискретная свертка"

Обновление: Minim дает вам свертку: http://code.compartmental.net/minim/javadoc/ddf/minim/effects/Convolver.html

Другие вопросы по тегам