Аудио файлы с понижением частоты - PullRequest
1 голос
/ 20 августа 2011

У меня возникла проблема при работе с аудиофайлами.Я реализую алгоритм, который работает с аудиофайлами, и для этого алгоритма требуется, чтобы входной сигнал представлял собой монофонический аудиофайл 5 КГц.

Большинство имеющихся у меня аудиофайлов представляют собой 16-битное стерео PCM 44,1 КГц, поэтому мойпроблема заключается в том, как преобразовать стереофайлы с частотой 44,1 кГц в монофайлы с частотой 5 кГц?

Буду признателен, если кто-нибудь предоставит учебное пособие, объясняющее основы DSP, стоящего за этой идеей, или любые библиотеки JAVA.

Ответы [ 3 ]

2 голосов
/ 24 августа 2011

Просто для того, чтобы усилить сказанное Prasad, вам следует отфильтровать сигнал нижних частот на частоте 2,5 кГц перед понижением частоты дискретизации, чтобы предотвратить искажение результата.Если в исходном сигнале присутствует некоторый тон 4 кГц, он не может быть представлен частотой дискретизации 5 кГц и будет согнут обратно до предела 2,5 кГц Найквиста, создавая ложный («псевдоним») тон на 1,5 кГц..

См. Также: Как реализовать фильтр нижних частот с использованием java

Кроме того, если вы понижаете частоту с 44100 до 5000 Гц, вы сохраните ее длякаждые 8,82 оригинальных образцов;не хорошее целочисленное деление.Это означает, что вам следует также использовать некоторый тип интерполяции, поскольку вы будете выбирать нецелые значения из исходного сигнала.

1 голос
/ 22 августа 2011

В стерео РСМ, с которым я работал, обычно каждое другое 16-битное значение в байтовой матрице pcm является точкой данных, соответствующей конкретному стереоканалу, это называется чередованием. Поэтому сначала захватите каждое другое значение в стереоканале, чтобы извлечь моно-байтовый массив PCM.

Что касается понижения частоты, если вы будете воспроизводить аудиофайл с частотой 44100 Гц, как если бы это был аудиофайл с частотой 5000 Гц, у вас будет слишком много данных, что приведет к замедлению звучания. Поэтому возьмите сэмплы с шагом int (44100/5000), чтобы уменьшить частоту до 5 кГц.

1 голос
/ 21 августа 2011

Java Sound API (javax.sound. *) Содержит множество полезных функций для управления звуками.

http://download.oracle.com/javase/tutorial/sound/index.html

Вы можете найти уже реализованные java-коды, чтобы легко сэмплировать ваш аудиофайл ЗДЕСЬ .

...