Справка по сжатию WAV

Как программно сжать файл WAV в другой формат (PCM, частота дискретизации 11025 кГц и т. д.)?

Это в конкретной операционной системе?

Arcane 22.01.2009 18:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
1 989
5

Ответы 5

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

Обновлять:

Похоже, они используют libsndfile, выпущенный под LGPL. Я, например, вероятно, просто попробую это использовать.

Я не планирую использовать Audacity. Я провел небольшое исследование. Что вы можете сказать о Windows Audio Compression Manager?

anonymous_ 22.01.2009 19:27

Используйте sox (Sound eXchange: универсальный переводчик звуковых сэмплов) в Linux: SoX - это программа командной строки, которая может конвертировать самые популярные аудиофайлы в большинство других популярных аудиоформатов. При желании он может изменить тип данных аудиосэмпла и применить к файлу один или несколько звуковых эффектов во время этого перевода.

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

Мне нужно преобразовать файл WAV в: ID: RIFF Формат: WAVE Sub ID1: fmt Размер 1:16 Аудиоформат: 1 Количество каналов: 1 Частота дискретизации: 11025 Скорость байтов: 11025 Выравнивание блоков: 1 бит на образец: 8 Sub ID2: данные

anonymous_ 22.01.2009 19:40

Это файл WAV. Вы говорите, что хотите изменить существующий файл WAV на файл WAV с другими свойствами?

Stu Mackellar 22.01.2009 22:06

Вы спрашиваете о повторная выборка, а точнее о понижающая дискретизация, а не о сжатии. Хотя оба процесса работают с потерями (что означает потерю информации), понижающая дискретизация работает с необработанными выборками, а не в частотной области.

Если вас интересует сжатие, вам следует изучить библиотеки lame или OGG vorbis; Вы, несомненно, знакомы с технологиями MP3 и OGG, хотя из вашего вопроса у меня возникло ощущение, что вы заинтересованы в получении файла PCM с более низкой частотой дискретизации.

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

Другой вариант - написать собственную библиотеку преобразования частоты дискретизации, но, что может оказаться серьезным делом, если вас интересует преобразование только с целочисленным коэффициентом (например, от 44,1 кГц до 22 кГц или от 44,1 кГц до 11 кГц), тогда это на самом деле очень просто, так как вам нужно только вырезать каждый N-й образец.

Я автор libsamplerate. Пожалуйста, объясните, что вы делаете в основном из-за «проблем с качеством не только сгенерированных аудиофайлов, но и из-за стабильности кода, используемого в самой библиотеке».

Erik de Castro Lopo 11.02.2011 07:27

В Windows вы можете использовать Диспетчер сжатия звука для преобразования файлов (функции acm ...). Вам также потребуются практические знания о структуре WAVEFORMAT и форматах файлов WAV. К сожалению, чтобы написать все это самостоятельно, потребуется некоторое время, поэтому было бы неплохо изучить некоторые варианты с открытым исходным кодом, предложенные другими.

Я написал свою собственную аудио-библиотеку .NET с открытым исходным кодом под названием NAudio, которая может конвертировать файлы WAV из одного формата в другой, используя кодеки ACM, установленные на вашем компьютере. Я знаю, что вы пометили этот вопрос с помощью C++, но если .NET приемлем, это может сэкономить вам время. Взгляните на проект NAudioDemo для примера конвертации файлов.

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