2015-03-11 1 views
0

Мне нужно взять файл .wav с 44.1k и уменьшить его до 11.25k (разделение выборок на 4).Как скомпоновать WAV-файл на C и применять полосовой фильтр?

Мне также необходимо применить полосовой фильтр с частотой 300 Гц -> 3,200 Гц в файл .wav.

Я новичок в аудиопрограмме, я пытался исследовать, как конкретно подходить к этой задаче, но каждый поиск указывает на библиотеку или инструмент, который просто сделает преобразование для меня. Это тренировка для новой позиции, которую я приобрел (чтобы ознакомиться с программированием на языке C и аудиопрограммированием), поэтому я должен выполнить ее вручную.

Благодаря

+0

Возможно, вы могли бы все это сделать с помощью 'Gstreamer' ... –

+0

Является ли Gstreamer библиотекой/инструментом, который будет выполнять преобразования для меня? Мне нужно запрограммировать алгоритмы для выполнения преобразования самостоятельно. – Leviathan3

ответ

1
  1. Отдельный код, который имеет дело с особенностями .wav файлов из специфики работы с аудио образцов. В Интернете есть много практических примеров для чтения и записи .WAV-файлов, особенно образцов PCM.

  2. Как только у вас есть образцы в памяти, понижающая дискретизация тривиальна. Вы буквально принимаете каждый _n_th образец и выбрасываете остальное. Существуют и другие подходы, которые могут лучше сохранить преданность. Например, сначала вы можете использовать фильтр нижних частот, а затем повторно выполнить отфильтрованную форму волны. Фильтр нижних частот может быть реализован с взвешенным усреднением последних образцов.

  3. Полосовой фильтр может быть выполнен несколькими способами. Наиболее прямым является преобразование выборок из временной области в частотную область, манипулирование сигналом в частотном пространстве и преобразование его обратно. Преобразование, используемое для этого, называется преобразованием Фурье. Наиболее распространенный способ сделать это в программном обеспечении - это алгоритм, называемый быстрым преобразованием Фурье (FFT). Он «быстрый», потому что он устраняет множество избыточных вычислений.

0

Чтение о том, как реализовать цифровой фильтр, вероятно, является первым шагом. Я бы предложил искать фильтры FIR и IIR.

Если вы ленивы, возможно, существует несколько сторонних библиотек, которые вы можете использовать.