Программа перевода изображения в звук

Превращаем картинку в звук

Попробуем заняться довольно бессмысленным занятием, а именно получением звука с определенной спектрограммой. Вдруг ряды любителей ЭГФ сократятся, не в обиду фанатам фильма «Белый шум» 🙂
Итак, начнем с моделирования на Matlab. Хотим алгоритм, позволяющий переводить звук в картинку-спектрограмму и обратно. Логично будет начать с вычисления спектрограммы, по которой будет вычисляться изображение.

Чтобы не делать того, что уже давно сделано за нас другими, здесь используется функция enframe из библиотеки voicebox,предназначенной для решения разнообразных задач при распознавании речи. Функция enframe как раз и позволяет нарезать сигнал на кадры с заданным шагом. Длину кадра мы берем мы берем равным длине преобразования Фурье(FFTLEN= 256), а шаг — половина этого значения(128). Все в лучших традициях 🙂 На каждый кадр накладывается окно Хэннинга для устранения боковых лепестков при вычислении ДПФ. Так как кадры идут с половинным перекрытием, то при наложении окна, сумма весов под перекрывающимися участками равна 1 и мы легко можем восстановить сигнал в половине кадра по двум соседним кадрам.

Для фразы «Почему не стоит пользоваться аутсорсингом в странах с дешевой рабочей силой» получилась следующая спектрограмма:

Естественно, что однозначно мы восстановить сигнал не сможем. При получении изображения каждый отсчета спектрограммы берется модулем комплексного значения — теряется информация о фазе. Поэтому, если просто собрать восстановленные половинки, то будут две проблемы:

Первая проблема пока остается, для решения второй я пытался подкручивать фазу при сборке полукадров — через один полукадр. Делалось это примерно так:

После восстановления, получилось вот что

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

Немножко сжульничал, строчкой «image = 1-image;» сделав негативное изображение, чтобы наш мишка выглядел яркими пятнами на темном, а не наоборот. Иначе — было бы слишком много шума.

Полученный звук, естественно, для сохранения психического равновесия слушать категорически не рекомендуется… Желающие могут поподбирать картинку, чтобы получить что-нибудь похожее на транс-музыку от Майкрософта.

Исходный код и все необходимое из статьи можно скачать отсюда.

Источник

Преобразуем изображение в звук — что можно услышать?

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

Что из этого получилось, подробности и примеры файлов под катом.

Преобразуем 2D в 1D

Первая очевидная задача, которая нас ожидает — это преобразовать двухмерное «плоское» изображение в «одномерную» звуковую волну. Как подсказали в комментариях к той статье, для этого удобно воспользоваться кривой Гильберта.

Она по своей сути похожа на фрактал, и идея в том, что при увеличении разрешения изображения, относительное расположение объектов не меняется (если объект был в верхнем левом углу картинки, то он останется там же). Различные размерности кривых Гильберта могут дать нам разные изображения: 32×32 для N=5, 64×64 для N=6, и так далее. «Обходя» изображение по этой кривой, мы получаем линию, одномерный объект.

Следующий вопрос это размер картинки. Интуитивно хочется взять изображение побольше, но тут есть большое «но»: даже картинка 512х512, это 262144 точек. Если преобразовать каждую точку в звуковой импульс, то при частоте дискретизации 44100, мы получим последовательность длиной в целых 6 секунд, а это слишком долго — изображения должны обновляться быстро, например с использованием web-камеры. Делать частоту дискретизации выше бесмысленно, мы получим ультразвуковые частоты, неслышимые ухом (хотя для совы или летучей мыши может и пойдет). В итоге методом научного тыка было выбрано разрешение 128х128, которое даст импульсы длиной 0.37c — с одной стороны, это достаточно быстро чтобы ориентироваться в реальном времени, с другой вполне достаточно, чтобы уловить на слух какие-то изменения в форме сигнала.

Обработка изображения

Первым шагом мы загружаем изображение, преобразуем его в ч/б и масштабируем до нужного размера. Размер изображения зависит от размерности кривой Гильберта.

Следующим шагом формируем звуковую волну. Тут разумеется, может быть великое множество алгоритмов и ноухау, для теста я просто взял яркостную составляющую. Разумеется, наверняка есть способы лучше.

Из кода, надеюсь, все понятно. Функция coordinates_from_distance делает за нас всю работу по преобразованию координат (х, у) в расстояние на кривой Гильберта, значение яркости L мы инвертируем и преобразуем в цвет.

Это еще не все. Т.к. на изображении могут быть большие блоки одного цвета, это может привести к появлению в звуке «dc-компоненты» — длинного ряда отличных от нуля значений, например [100,100,100. ]. Чтобы их убрать, применим к нашему массиву high-pass filter (фильтр Баттерворта) с частотой среза 50Гц (совпадение с частотой сети случайно). Синтез фильтров есть в библиотеке scipy, которым мы и воспользуемся.

Последним шагом сохраним изображение. Т.к. длина одного импульса короткая, мы повторяем его 10 раз, это будет на слух более приближено к реальному повторяющемуся изображению, например с веб-камеры.

Результаты

Вышеприведенный алгоритм, разумеется, совсем примитивный. Я хотел проверить три момента — насколько можно различать разные несложные фигуры, и насколько можно оценить расстояние до фигур.

Изображению соответствует такой звуковой сигнал:

Идея этого теста — сравнить «звучание» объекта другой формы. Звуковой сигнал:

Можно заметить, что звучание действительно другое, и на слух разница есть.

Идея теста — проверить объект меньшего размера. Звуковой сигнал:

В принципе, чем меньше размеры объекта, тем меньше будет «всплесков» в звуке, так что зависимость тут вполне прямая.

Как подсказали в комментариях, можно использовать преобразование Фурье для непосредственной конвертации картинки в звук. Сделанный по-быстрому тест показывает такие результаты (картинки те же):
Тест-1: cloud.mail.ru/public/2C5Z/5MEQ8Swjo
Тест-2: cloud.mail.ru/public/2dxp/3sz8mjAib
Тест-3: cloud.mail.ru/public/3NjJ/ZYrfdTYrk

Тесты звучат интересно, по крайней мере, для маленького и большого квадратов (файлы 1 и 3) разница на слух хорошо ощутима. А вот форма фигур (1 и 2) практически не различается, так что тут тоже есть над чем подумать. Но в целом, звучание полученное с помощью FFT, на слух мне нравится больше.

Заключение

Данный тест, разумеется, не диссертация, а просто proof of concept, сделанный за несколько часов свободного времени. Но даже так, оно в принципе работает, и разницу ощущать на слух вполне реально. Я не знаю, можно ли научиться ориентироваться в пространстве по таким звукам, гипотетически наверно можно после некоторой тренировки. Хотя тут огромное поле для улучшений и экспериментов, например, можно использовать стереозвук, что позволит лучше разделять объекты с разных сторон, можно экспериментировать с другими способами конвертации изображения в звук, например, кодировать цвет разными частотами, и пр. И наконец, перспективным тут является использование 3d-камер, способных воспринимать глубину (увы, такой камеры в наличии нет). Кстати, с помощью несложного кода на OpenCV, вышеприведенный алгоритм можно адаптировать к использованию web-камеры, что позволит экспериментировать с динамическими изображениями.

Ну и как обычно, всем удачных экспериментов.

Источник

audiomania

Аудиомания

Хороший блог от А до Я!

Изображение первого граммофонного диска «Der Handschuh»

Однако в том отчете не указано, какой из найденных объектов в Блумингтоне можно расценивать как самый старый медиа-носитель. Так получилось не из-за халатного отношения к исследованию, а из-за того, что среди привычных для нас объектов исследования – дисков, бобин с пленкой, цилиндров и тому подобного, присутствовали изображения в книгах. А изображения в книгах не входят в программу по сохранению медиа-информации.

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

Всего несколько месяцев назад я бродил по четвертому этажу библиотеки Уэлса возле лифтов и обнаружил увесистый том с номером AP30.U22 v.63 на большой полке у дальней стены. Я открыл его на странице 395, где обнаружил круглое изображение. При детальном осмотре выяснилось, что это множество плотно расположенных микроскопических волнистых линий.

Слева: При близком рассмотрении изображения «Der Handschuh» заметны оттиски звуковых дорожек оригинальной пластинки

Это не просто красивая картинка – это звукозапись. На сегодняшний день, возможно, это самая старая «запись» в мире, которую можно прослушать!

Позвольте мне объяснить, я не говорю что это самая старая звукозапись в мире, просто в наше время, когда люди употребляют слово «запись» по отношению к аудио, то, обычно, они имеют в виду конкретные звуковые форматы, в частности разновидности виниловых пластинок, которые можно воспроизвести на проигрывателе. На самом деле, технология изготовления таких записей восходит не к фонографу Томаса Эдисона, представленному в 1877 году, а к граммофону Эмиля Берлинера (Emile Berliner), изобретенному в 1887 году. В 20 веке граммофонный диск покорил мировую индустрию звукозаписи и продолжает пользоваться популярностью у диджеев 21 века. Характерное потрескивание во время воспроизведения стало визитной карточкой «старинных записей».

Так что же можно назвать самой старой «записью»? Раз уж мы коснулись темы граммофонов, то какая из граммофонных аудиозаписей является самой древней? Первые грампластинки, доступные широкой публике, появились летом 1890 года в Европе, и многие из них можно прослушать даже сегодня (например, здесь). Также известно, что несколько экземпляров опытных грампластинок Берлинера, созданных им в 1887 и 1888 годах, находятся в сохранности в Смитсоновском институте и еще в паре других мест, но попытки их воспроизвести не увенчались успехом, поэтому на данный момент неизвестно, что на них записано.

И наконец, некоторые из очень старых граммофонных записей, как та, что находится на четвёртом этаже библиотеки Уэлса, дошли до наших дней только в виде изображений на бумаге. Это нормальная ситуация. Многие ранние мультфильмы, которые не сохранились в виде видеозаписей, были, несомненно, напечатаны на бумаге и отданы на регистрацию авторского права в архив Библиотеки Конгресса. После всех необходимых процедур для сохранности оригинала на основании распечаток снимают мультипликационные фильмы, которые можно демонстрировать публике. Я обнаружил, что, по аналогии с мультипликацией, бумажные копии «утерянных» грампластинок могут быть оцифрованы, переведены в аудиоформат и прослушаны.

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

Скан записи в высоком разрешении, преобразованный в набор параллельных линий, с помощью связи полярных и декартовых координат

Далее я «вырезаю» отдельные линии и сцепляю их друг за другом, создавая несколько длинных, узких звуковых полос.

Очистка изображения сигнала «Der Handschuh» для перевода в аудиоформат

Устранив все разрывы, я использую инструмент «Заливка», чтобы создать две отдельные полосы различной ширины, заполняя белым цветом зоны выше и ниже средней линии. Следующий шаг – это загрузить изображения в программу ImageToSound, которая конвертирует их в формат WAV, как если бы они были звуковой дорожкой к фильму на кинопленке. Наконец, я объединяю парные звуковые дорожки WAV в стереофайл, связывая части вместе, произвожу суммирование, и вуаля – у нас есть звук.

Оригинальное изображение звука (вверху), пара обработанных изображений (в середине) и волна конечного аудиофайла (внизу)

К тому моменту, как я попал на четвертый этаж библиотеки Уэлса, я уже сумел подобным образом воспроизвести три печатных оттиска граммофонных пластинок. Одной из них был достаточно интересный экземпляр, хранящийся в Библиотеке Конгресса – это запись на немецком языке, созданная Берлинером в Ганновере 11 ноября 1889 года. На ней Берлинер рассказывает о процессе записи приезжему гостю по имени Луи Розенталь (Louis Rosenthal), который, как объясняет Берлинер, должен был забрать звукозапись с собой, в качестве экземпляра для проведения экспериментов с копированием грампластинок фотомеханическим способом (который в дальнейшем не использовался за неэффективностью). Последнюю пару лет эта запись оставалась самой старой из известных, записанных граммофоном Берлинера – прямым предшественником современных проигрывателей. Вы можете прослушать её здесь.

Но что насчет экземпляра, недавно обнаруженного в библиотеке Уэлса? Он был опубликован в феврале 1890 года в немецком иллюстрированном журнале Über Land und Meer за несколько месяцев до начала массовых продаж граммофонов, чтобы любопытные читатели могли увидеть, как выглядят новые «записи». Заголовок пластинки говорит, что на ней содержится поэма «Der Handschuh» Фридриха Шиллера. Автор статьи уже тогда смог распознать, что рисунок содержит достаточно информации, чтобы воспроизвести записанную речь, по крайней мере, в теории. Он даже в общих чертах описал метод, с помощью которого читатели того времени могли прослушать запись.

По рисунку из журнала изготовьте гравюру методом фототипии, и положите её на середину равномерно вращающегося (со скоростью 50 об/мин) диска. Теперь, если зажать в зубах бамбуковую палочку длиной 15 сантиметров и толщиной ¾ сантиметра, на конце которой установлена сантиметровая швейная игла, и легко надавить кончиком иглы на дорожку, начав от края пластинки, то можно услышать, как изобретатель граммофона читает «Handschuh». Звук будет лучше, если заткнуть уши ватой.

Запись «Handschuh» была фотографически уменьшена до трех четвертых от оригинального размера перед публикацией. Её настоящий диаметр, метод гравировки и скорость вращения 50 об/мин соответствуют параметрам записи, сделанной 11 ноября 1889 года, описанной выше. Все эти пункты предполагают, что «Handschuh», вероятно, был еще одним диском Берлинера, который он дал Розенталю для проведения экспериментов с недолго просуществовавшими фотомеханическими способами копирования пластинок. Правда, в этот раз на пластинке оказалась не демонстрация звукозаписи Розенталю, а запись поэмы, которую читает Берлинер от начала и до конца.

После рассмотрения всех доказательств, мой коллега Стефан Пуилле (Stephan Puille) и я сам пришли к выводу, что 11 ноября 1889 года Берлинер, вероятно, демонстрировал процесс записи Розенталю, а затем отправил его домой со звукозаписью, которую они сделали вместе, а также несколькими другими, записанными Берлинером ранее.

Если мы правы, то «Der Handschuh» должна быть старейшей из двух пластинок, что делает её самой старой известной граммофонной записью, которую сегодня можно прослушать – прародителем всего винтажного винила.

Если мы ошиблись, то все равно, вне всяких сомнений, это самая старая граммофонная запись из известных, которая содержит целое литературное произведение на немецком языке – этого у неё не отнять.

В любом случае, она находится прямо здесь, в университете Блумингтон. Разумеется, другие институты также хранят Über Land und Meer, и в некоторых из них, несомненно, есть изображение «Der Handschuh», но нашу копию можно воспроизвести и послушать, и для этого не нужно зажимать в зубах бамбуковую палочку.

Несколько других записей из Индианского университета:

Вот еще несколько кусочков аудиозаписей полученных со сканов книг из библиотеки Блумингтона.

Запись Томаса Янга «Курс лекций натурфилософии и механических искусств»

Значимость: Самое старое описание звуковой волны, записанное не автоматическими методами, но нарисованное от руки (Книга датирована 1807 годом, сам же рисунок датирован 1806).

Чез Морей «Фонавтограф»

Значимость: Самая старая из известных публикаций звуковых записей, сделанных на территории Соединённых Штатов.

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

Э.В. Блейк, «Метод записи голосовых вибраций посредством фотографии»

ALF: Q1. A5 ser.3,v.16 Э.В. Блейк, «Метод записи голосовых вибраций посредством фотографии», American Journal of Science and Arts 116 (Июль 1878), 54-59, на странице 57.

Значимость: Самая старая известная публикация записи с распознаваемыми фразами на английском языке («Brown University»; «How do you do?»), а также наистарейшая известная публикация фотографической записи звука.

Источник

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Uchenik.top - научные работы и подготовка
0 0 голоса
Article Rating
Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии