преобразование аудио в 8-битный текстовый образец - PullRequest
2 голосов
/ 08 декабря 2009

У меня сегодня интересный вопрос.

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

Кто-нибудь знает способ преобразования аудиофайлов (wav / mp3) в список 8-битных значений текстового образца, разделенных запятыми? Или что-нибудь из этого относительного метода?

Большое спасибо заранее!

Ответы [ 4 ]

2 голосов
/ 08 декабря 2009

Вы можете использовать инструмент командной строки "sox" или аудиоредактор Audacity, чтобы преобразовать файл в необработанный 8-битный монофонический аудиофайл без знака.

В Audacity 1.3 или выше, откройте аудио, затем выберите «Экспорт», выберите «Wave, AIFF и другие несжатые типы» в качестве формата, затем нажмите «Параметры ...» - затем выберите «Другие ...» для «Формат», «RAW» для заголовка и 8-битный PCM со знаком в качестве кодировки. (Извините, неподписанный недоступен.)

В командной строке попробуйте sox с -c 1 для 1 канала, -t raw для заголовка без, -u для беззнакового линейного и -1 для 1 байта на выборку.

Затем вы можете использовать инструмент, такой как "hexdump", чтобы выгружать байты файла в виде чисел и вставлять их в ваш код.

0 голосов
/ 08 декабря 2009

Для .wav это очень простой процесс. Вы можете легко найти спецификацию .wav с помощью поиска Google. Он содержит заголовок, а затем просто необработанные образцы. Сначала вы должны прочитать заголовок, а затем просмотреть все образцы. Обычно это 16-битные сэмплы, поэтому вы хотите нормализовать их в диапазоне от -32768 до 32767 до диапазона 0-255. Сначала я предлагаю простое масштабирование. Если это не удастся, возможно, найдите фактические минимальные и максимальные значения среди сэмплов и соответственно настройте масштаб.

0 голосов
/ 08 декабря 2009

Ну, многое зависит от вашего аудио формата. Например, волновой формат состоит из несжатых чередующихся данных PCM.

т.е. для 8-битного стереофайла каждый сэмпл будет организован следующим образом.

[Левый образец 1] [Правый образец 1] [Левый образец 2] [Правый образец 2] ... [Левый образец n] [Правый образец n].

т.е. каждый 8-битный стереосэмпл хранится в 2 байтах. 1 для левого канала и 1 для правого. Это формат данных, который, скорее всего, потребуется вашему звуковому оборудованию.

16 или 24-битный аудиофайл будет работать в любом случае, но левый и правый сэмплы будут иметь размер 2 или 3 байта соответственно.

Очевидно, что в волновом файле содержится много дополнительной информации. Это соответствует формату RIFF. Вы можете найти информацию об этом и использовать волновые файлы "chunks" в таких местах, как www.wotsit.org.

Распаковать MP3 сложнее. Лучше всего взять декомпрессор и запустить его на аудио в формате MP3. ИТ-отдел будет выплевывать данные PCM, как указано выше, с другой стороны.

0 голосов
/ 08 декабря 2009

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

РЕДАКТИРОВАТЬ: sox использует «Необработанные текстовые данные» в качестве одного из своих форматов с веб-страницы. Вы можете заставить его преобразовать ваши звуковые файлы в 8-битные линейные сэмплы без знака за первый проход, а затем, вероятно, получить именно тот результат, который вы хотите, используя эту опцию для вывода.

...