
Как звучит JPEG? Или что будет, если сжать спектрограмму как фотографию
DiZlike91 30 минут назад Как звучит JPEG? Или что будет, если сжать спектрограмму как фотографию Сложный 9 мин 1.3K Python * Звук Ненормальное программирование * Аналитика Из песочницы ВведениеБывают дни, когда на...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. DiZlike91 30 минут назад Как звучит JPEG? Или что будет, если сжать спектрограмму как фотографию Сложный 9 мин 1. 3K Python * Звук Ненормальное программирование * Аналитика Из песочницы ВведениеБывают дни, когда на работе делать нечего.
А бывают дни, когда ты — программист и звукорежиссёр одновременно, и в голову приходит странная мысль: «А что, если взять аудио, превратить его в картинку-спектрограмму, сжать эту картинку как фотографию (JPEG, WebP, AVIF), а потом попробовать восстановить звук обратно? Как оно будет звучать? »Спойлер: иногда — удивительно хорошо.
Технические детали
Иногда — как из унитаза. Но всегда — интересно. В этой статье я расскажу, как реализовал весь этот пайплайн, покажу код, проведу батч-тесты разных форматов и уровней качества, и, конечно, дам послушать результаты.
Все исходники прилагаются, и вы сможете повторить эксперимент сами. ИдеяСпектрограмма — это визуальное представление звука: по горизонтали — время, по вертикали — частота, цвет — амплитуда. Если сохранить спектрограмму как картинку, а потом сжать её с потерями (как JPEG), то при восстановлении звука обратно мы получим… артефакты сжатия, но уже в аудио!
Именно это я и хотел услышать. Для стерео я использовал Mid/Side представление:Зелёный канал (G) — Mid (моно-сумма левого и правого)Синий канал (B) — Side (разница между левым и правым)Красный канал ® — не используется (пока)Амплитуды логарифмируются в децибелы и маппятся в диапазон 0–255 (8 бит на канал). Частоты выше порога автоматически обрезаются для экономии места.
Отраслевые последствия
Затем картинка сохраняется в нужном формате. При декодировании фаза восстанавливается через алгоритм Гриффина-Лима (Griffin-Lim), потому что в спектрограмме мы храним только амплитуду, а фаза теряется. Важное замечание о формате аудиоПрежде чем мы перейдём к деталям — один технический момент.
Все восстановленные WAV-файлы я, разумеется, не выкладываю как есть. Во-первых, это было бы жестоко по отношению к серверу (70 секунд стерео 44. 1/16 — это ~12 мегабайт на каждый тест, а тестов у нас 18).
Во-вторых, это просто бессмысленно — WAV нужен только как промежуточный формат при обработке. Все аудиопримеры, которые вы услышите, упакованы в Opus 128 kbps. Это современный, исключительно эффективный кодек, который на битрейте 128 kbps обеспечивает прозрачное качество — то есть WAV и Opus на этих настройках звучат абсолютно идентично для человеческого уха, но файл весит в 10 раз меньше.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





