LINUX.ORG.RU

Определить формат Wave без заголовка

 ,


0

3

Пусть имеется wave-файл с обрубленным заголовком (по сути поток сырых аудиоданных), в котором данные хранятся с неизвестными параметрами:

  • порядок байт
  • смещение от начала файла на несколько байт
  • разрядность
  • представление (целое/с плавающей точкой, знаковое/беззнаковое)
  • частота сэмплирования
  • число каналов

Есть какие-то утили, чтобы найти нужные параметры, или придётся велосипедить?

★★★

sox + слух

anonymous
()

на тред подписался, но вангую велосипед. ты же читал спеку формата? если в ней обрубить все ценное - это уже не wav будет, а непонятно что. анализировать непонятно что можно только непонятно чем.

vostrik ★★★☆
()
Ответ на: комментарий от vostrik

если в ней обрубить все ценное - это уже не wav будет, а непонятно что.

Это будет raw. Для того, чтобы было «понятно что» и нужно подобрать параметры на слух.

anonymous
()

пытаешся в /dev/random найти послание из космоса?

mm3 ★★★
()

Скорее всего, придётся велосипедить. Подозреваю, что автоматизировать по крайней мере нахождение разрядности можно, пошаманив с корреляционными функциями. Далее определяем, на сколько байт обрублен первый отсчёт (если обрублен). Число каналов тоже можно попробовать определить. А вот частоту дискретизации, боюсь, уже только на слух.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от anonymous

анализировать непонятно что можно только непонятно чем.

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

Берём один из параметров (или все) и строим fitness. Сортируем варианты по fitness. Слушаем несколько лучших.

Простейшую прогу уже написал, формат необходимых файлов распознал.

Sadler ★★★
() автор топика
Ответ на: комментарий от hobbit

А вот частоту дискретизации, боюсь, уже только на слух.

Да, это очевидно. Хотя можно попробовать, конечно, посчитать данные на наличие частот ниже порога слышимости, но я не уверен, что из этого что-то выйдет.

Sadler ★★★
() автор топика
Ответ на: комментарий от Sadler

Думаю, что не выйдет. То, что ухо не слышит некую частоту, не значит, что её нет в файле.

Хотя аудиофайлы бывают разного происхождения. Если он был пропущен через фильтр,какие обычно ставят при оцифровке - вполне возможно, что спектр ограничен достаточно чётко. Но тут надо, наверное, экспериментировать, и выдача программы в этом плане должна быть рекомендательной (типа «обнаружена чёткая нижняя граница спектра, если принять её за 20 Гц, похоже, что частота дискретизации файла - 44,1 кГц»). Надо проверять.

Не планируешь свои наработки выложить? Например, сделать некую консольную утилиту soa, по аналогии с sox, последняя буква будет означать analyze или даже anatomize :) А ещё в Audacity есть команда «Импортировать звуковой файл без заголовка», где все параметры вбиваются вручную, туда прямо просится кнопочка «Автоопределение» :)

Да, разумеется, предыдущий абзац не означает, что я тебя на что-то толкаю или «развожу». Просто если есть интерес и возможности...

P.S. На doom9.org 3 года назад была соответствующая тема. Раз уж там ничего путного не сказали...

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Не планируешь свои наработки выложить? Например, сделать некую консольную утилиту soa, по аналогии с sox, последняя буква будет означать analyze или даже anatomize :)

Ну, это не проблема, выложить легко, но текущие мои наработки все на java — надо переписывать на C. Потом можно будет ещё поанализировать, как мои методы ведут себя на разных данных, допилить там, где следует. В общем, когда будет месяц свободен, можно и запилить.

А ещё в Audacity есть команда «Импортировать звуковой файл без заголовка», где все параметры вбиваются вручную

Да, я знаю, как раз юзаю =)

Sadler ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.