Можно ли программно редактировать звуковой файл в зависимости от частоты? - PullRequest
2 голосов
/ 28 мая 2010

Просто интересно, можно ли просмотреть файл flac, mp3, wav и т. Д. И отредактировать части или весь файл, удалив разделы на основе определенного частотного диапазона?запись друга, читающего стихотворение с несколькими ударными инструментами на заднем плане.Могу ли я написать программу на C, которая просматривает весь файл и вырезает все, кроме вокала (частота человеческого голоса в диапазоне 85-255 Гц, из того, что я читал)?идеи!

Ответы [ 5 ]

5 голосов
/ 28 мая 2010

Обращаясь к конкретному примеру ОП: я думаю, что вы неправильно понимаете частоту человеческого голоса. Возможно, в этом диапазоне остается фундаментальная частота разговорного мужского голоса (для тенорного пения, женской речи, пения или крика, даже фундаментальный будет намного выше, возможно, 500-1000 Гц). Но это даже не имеет значения, потому что даже если базовый уровень низкий, обертоны, которые создают различные гласные звуки, будут подниматься до 2000-4000 Гц или выше. А частоты, которые определяют «шумовые» согласные, такие как «t» и «s», доходят до верха звукового диапазона, скажем, 5000–10000 Гц. Перкуссия заполняет этот же звуковой диапазон, поэтому я сомневаюсь, что вы можете разделить голос и перкуссию, отфильтровывая определенные частоты в / из.

4 голосов
/ 28 мая 2010

Это, безусловно, возможно, иначе не было бы программного обеспечения для цифрового студийного микширования.

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

В программном обеспечении вы могли бы решить эту проблему, написав цифровой фильтр такого рода, который уменьшал бы выходной сигнал различных частот. Частоты будут определены с помощью вычисления FFT.

Самое быстрое, что нужно сделать, это использовать приложение для редактирования аудио и применить изменения там.

Существует аудиотека, называемая PortAudio , которая может обеспечить некоторую поддержку редактирования аудиопотока на числовом уровне. Он написан на C и имеет C API.

2 голосов
/ 28 мая 2010

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

Даже если вы хотите написать код на C, вы сначала многому научитесь, используя Supercollider. Многие из фильтров на удивление легко реализуются в C, но вам нужно написать определенный объем кода инфраструктуры, прежде чем вы сможете начать.

Кроме того, я довольно много узнал о написании цифровых аудиофильтров из этой книги. Среди прочего, в нем обсуждаются некоторые характеристики человеческой речи , а также способы построения фильтров для выборочного усиления или выбивания определенных частот. Он также предоставляет рабочий код C.

1 голос
/ 19 июня 2010

Вы также можете использовать MAX / MSP (но это платно) или PureData (это бесплатно) для работы с музыкальными алгоритмами, они являются основой, на которой был создан суперколлайдер. И это отличное программное обеспечение, если вы хотите сделать это в режиме реального времени.

1 голос
/ 28 мая 2010

SciPy может выполнять все виды обработки сигналов .

...