Два способа извлечь звуки из данных: как и зачем
В рамках проекта «Лаборатория цифровой философии» специалисты из СПбГУ занимаются разработками в сфере сонификации данных. Сонификация данных — относительно новая дисциплина, которая занимается преобразованием различных текстовых данных в звук.
Такие преобразования позволяют, например, людям с различными проблемами зрения услышать, как звучат научные достижения, открытия и даже исторические события. Кроме того, преобразование данных в звук упрощает анализ научных данных.
Координатор семинара «Лаборатория цифровой философии» Дмитрий Ярочкин в этом году принял участие проекте, в котором с помощью цифровых алгоритмов был создан музыкальный отрывок первого дня Великой Отечественной войны, основанный на материалах из дневников очевидцев. Послушать его можно по ссылке.
В этой статье Дмитрий расскажет о двух способах, которые специалисты лаборатории СПбГУ использовали для извлечения звуков, объяснит, почему тема сонификации данных актуальна, в каких областях ее уже сегодня применяют в России и в мире, а также поделится своим мнением на тему того, можно ли считать музыку, которую программист сгененерировал с помощью сонификации, произведением искусства.
Дмитрий Ярочкин, координатор семинара «Лаборатория цифровой философии» СПбГУ
Сначала я хотел бы рассказать о двух способах, которыми мы с аспирантами пользовались для работы в лаборатории, и с помощью которых нам удалось создать из воспоминаний о первом дне Великой Отечественной войны мелодию.
Итак, первый способ извлечения звука из данных:
Существует множество подходов к сонификации. Я бы выделил два основных инструмента. Это специальные языки и среды вроде superCollider или более простая SonicPi и библиотеки в привычный ЯП вроде music21 в python midi в java.
Как пример можно рассмотреть простой код озвучивания эмоционального содержания дневников.
У нас есть набор текстовых данных notes.txt. Мы их взяли с сайта Центра «Прожито» с разрешения организации. При помощи библиотеки сентиментального анализа русского языка Dostoevsky получаем данные об их эмоциональном содержании.
from dostoevsky.tokenization import RegexTokenizer
from dostoevsky.models import FastTextSocialNetworkModel
tokenizer = RegexTokenizer ()
model = FastTextSocialNetworkModel (tokenizer=tokenizer)
with open (
messages = messages_file.read ().split ('#')
results_tone = model.predict (messages, k=2)
При помощи библиотеки music21 мы их озвучиваем.
from music21 import *
note_mapping = {
'C4': (0, 0.1),
'D4': (0.1, 0.2),
'E4': (0.2, 0.3),
'F4': (0.3, 0.4),
'G4': (0.4, 0.5),
'A4': (0.5, 0.6),
'B4': (0.6, 0.7),
'C5': (0.7, 0.8),
'D5': (0.8, 0.9),
'E5': (0.9, 1.0)
}
melody = stream.Stream ()
part_positive = stream.Part ()
part_negative = stream.Part ()
def get_note (value):
for note, (lower, upper) in note_mapping.items ():
if lower < value <= upper:
return note
return None
for key in emotion_data:
for value in emotion_data[key]:
selected_note = get_note (value)
if selected_note is not None:
if key == 'positive':
part_positive.append (note.Note (selected_note, quarterLength=1))
elif key == 'negative':
part_negative.append (note.Note (selected_note, quarterLength=1))
melody.insert (0, part_positive)
melody.insert (0, part_negative)
melody.show ('midi')
Способ извлечения звука из данных номер два:
Вот, например, адаптированный код Daniel Maszkowicz, вдохновленный Chapter 10 — Laboratory Methods for Experimental Sonification, chapter by Till Bovermann, Julian Rohrhuber and Alberto de Campo//
Csv результат предыдущего этапа позитив, негатив, нейтральность,
19.72912810742855,0.010000003385357559,999.1804361343384
…
SuperCollider
s.boot
s.record
s.stopRecording;
(
SynthDef (\sinegrain, {
|out = 0, attack = 0.101, decay = 0.01, freq=200, pan = 0, amp = 0.5|
var sound, env;
// an amplitude envelope with fixed duration
env = EnvGen.ar (Env.perc (attack, decay), doneAction: 2);
// the underlying sound
sound = FSinOsc.ar (freq);
// use the envelope to control sound amplitude:.
sound = sound*(env*amp);
// add stereo panning
sound = Pan2.ar (sound, pan);
// write to output bus
Out.ar (out, sound)
}).add;
)
//test the synth!
p=Synth (\sinegrain,[\out,0,\freq,100,\attack,0.01,\decay,2,\amp,0.3,\dur,0.2]);
// Run a pattern (\dur is a variable used in Pbind)
(
p=Pbind (\instrument, \sinegrain,
\freq, Pseq ([100,400,370,330],1),
\attack, 0.5,
\decay, 20,
\pan, Pseq ([-1,1], inf),
\dur, 0.5,
\amp, 0.1
).play;
)
p.stop;
//Let’s grab the Data
//MAC STYLE filepath
~mycsv=CSVFileReader.readInterpret (< path to csv file >, true, true);
~mycsv.size
~mycsv.at (0)
~mycsv.at (0).asArray.at (0)
~mycsv.at (0).asArray.at (1)
~mycsv.at (0).asArray.at (2)
~mycsv.at (0).asArray.at (3)
~mycsv.at (0).asArray.at (4)
// etc…
//~mycsv is an array of arrays, we need to seperates each «columns» into seperate arrays by extracting it at each line…
~mycsv_0=Array.fill (~mycsv.size,{arg i;~mycsv.at (i).asArray.at (0)});
~mycsv_1=Array.fill (~mycsv.size,{arg i;~mycsv.at (i).asArray.at (1)});
~mycsv_2=Array.fill (~mycsv.size,{arg i;~mycsv.at (i).asArray.at (2)});
~mycsv_3=Array.fill (~mycsv.size,{arg i;~mycsv.at (i).asArray.at (2)});
~mycsv_4=Array.fill (~mycsv.size,{arg i;~mycsv.at (i).asArray.at (0)});
// Normalize the data between a max val and min val and match them to sound parameters
~freq1=~mycsv_0.normalize (100,1000);
~levels1=~mycsv_1.normalize (0.1,1);
~attack1=~mycsv_2.normalize (0.01,0.1);
~decay1=~mycsv_3.normalize (0.1,0.2);
~dur1=~mycsv_4.normalize (0.02,0.1);
//test it in the Synth
s.record
(
p=Pbind (\instrument, \sinegrain,
\freq, Pseq (~freq1,1),
\attack, Pseq (~attack1,),
\decay, Pseq (~decay1,1),
\pan, 0,
\dur, Pseq (~dur1,1),
\amp, Pseq (~levels1,1)/2
).play;
)
p.stop;
//Let’s switch collumns and play two data sets at a time!
~freq1=~mycsv_0.normalize (100,1000);
~levels1=~mycsv_1.normalize (0.1,1);
~attack1=~mycsv_2.normalize (0.01,0.1);
~decay1=~mycsv_3.normalize (0.1,0.2);
~dur1=~mycsv_4.normalize (1,2);
~freq2=~mycsv_4.normalize (200,5000);
~levels2=~mycsv_3.normalize (0.01,0.1);
~attack2=~mycsv_0.normalize (0.01,0.1);
~decay2=~mycsv_2.normalize (0.1,0.2);
~dur2=~mycsv_1.normalize (1,2);
s.record
s.stoprecord
(
p=Ppar ([
Pbind (\instrument, \sinegrain,
\freq, Pseq (~freq1, inf),
\attack, Pseq (~attack1, inf),
\decay, Pseq (~decay1, inf),
\pan, 0,
\dur, Pseq (~dur1, inf)*Pseq (~freq1, inf),
\amp, Pseq (~levels1, inf)
),
Pbind (\instrument, \sinegrain,
\freq, Pseq (~freq2, inf),
\attack, Pseq (~attack2, inf),
\decay, Pseq (~decay2, inf),
\pan, 0,
\dur, Pseq (~dur2, inf),
\amp, Pseq (~levels2, inf)*10
)
]).play;
)
p.stop;
Сегодня мы живем в эпоху визуального контента, когда обилие визуальной информации: мемов, картинок в соцсетях, сторис, коротких видео и более объемных, стало привычным. Но не все задумываются о том, что визуальный контент, который играет важную роль в восприятии нашей действительности, доступен не всем. Например, людям с различными проблемами зрения.
Я заинтересовался этой темой, потому что сонификация данных находится на пересечении научного знания, искусства и прагматики. Мне кажется, было бы глупо не воспользоваться всеми возможностями, которые дает программирование. Для гуманитарных наук — это возможность эксперимента автоматизации рутинных задач, новые способы поиска, передачи и хранения информации.
Плюсом к этому гуманитарные науки направлены на человека, ведь его природа и среда обитания меняются под напором цифровизации. Сегодня мы находимся на пороге великих открытий: и программирование, и более узко искусственный интеллект совершили некий «антикоперниканский» поворот. Человек уже не настолько уверен в том, что разум является его привилегией, и вместе с творческим сомнением, с которого начинается философия, он приобрел инструмент, чтобы посмотреть на свой разум извне.
Еще с подготовительных курсов я помню, что проблема познания сознания в том, что оно всегда повернуто на самого себя, а теперь мы получаем сознание вовне и это меняет или заставляет перетрясти наши традиционные представление о себе и реальности.
Это интересно для меня еще потому, что гуманитарные науки связаны с языком, а тут мы можем наглядно увидеть, как из слова рождаются программы, сайты, умные устройства, в конечном счете наша реальность.
— Как я уже упоминал ранее, люди по всему миру экстремально много (как никогда прежде в истории) инвестируют в визуальную составляющую, что привязывает нас к мониторам. Поэтому нам захотелось предложить людям услышать данные, предложить им это как альтернативный способ познания. Я считаю, что гуманитарное знание требует особого подхода к данным.
Так Johanna Drucker предлагает использовать термин capta, показывая не то, что данные не просто существуют, а что они сконструированы.
Выводы, к которым может приводить сонифкация, остаются за исследователем, но она точно оказывает влияние на процесс освоения данных и перехода от data к capta.
Преобразование данных в звук — это ключевая черта сонификации. Это явление представляет собой проблему mapping. То есть проблему соотнесение данных и звука. Тот момент, когда мы решаем, как он будет производиться. Мы создаем дизайн будущей сонификации.
С точки зрения человека, который будет прослушивать эти данные, их ценность в том, что он подключает другие рецепторы, которые в обычной научной деятельности могут быть не задействованы. Это дает еще один канал связи с реальностью.
Сонификация позволяет включить в научный процесс людей, которые до этого были в нем ограничены в силу проблем со зрением. Это обстоятельство не должно в современной жизни останавливать людей от исследования мира и научной деятельности.
Более подробно с этой темой можно ознакомиться в докладе ООН, посвященном космосу для людей с ограниченями «Sonification: a tool for research, outreach and inclusion in space sciences».
Также советую послушать речь Ванды Диас Мерсед на TED TALKS. Эта девушка лишилась зрения и осознала, что вместе с ним потеряла возможность заниматься наукой, как она делала это раньше. В какой-то момент она поняла, что кривые света, которые она больше не могла видеть, можно преобразовать в звук. Благодаря ультразвуковой обработке она вернулась к работе и теперь выступает за развитие инклюзии в научном сообществе. Ванда рассказывает, как с помощью новых инструментов изучает свет, излучаемый гамма-всплесками — самыми энергичными событиями во Вселенной. «Наука должна быть доступна каждому, потому что мы все прирожденные исследователи», — говорит она.
Сонификация данных может помочь воспринимать информацию людям с некоторыми когнитивными расстройствами, трудностями в обучении или просто тем, для кого звук означает больше, чем образ. К примеру, людям с дислексией, при которой у человека возникают трудности с чтением.
Англоязычный бесплатный открытый образовательный ресурс FLOE по проектированию инклюзивного обучения (ILDH) помогает создавать программы с учетом разных особенностей восприятия информации.
— В мире сонификации существует и активно развивается ассоциация ICAD, которая организует конференции по проблемам звукового представления реальности.
ICAD — это форум для представления исследований по использованию звука для отображения данных, мониторинга систем и предоставления расширенных пользовательских интерфейсов для компьютеров и систем виртуальной реальности.
Он уникален тем, что уделяет особое внимание слуховым дисплеям и множеству областей восприятия, технологий и приложений, которые они охватывают.
Сонификация применяется также для представления абстрактных концепции: математики, физики и так далее. Когда нам нужно представить каким-либо образом вещи, которые графически представить нельзя или довольно трудно, сонификация может быть крайне полезна.
Мой любимый пример — это n-мерное пространство. В графике это можно изобразить, но достаточно трудно. В музыке все гораздо проще: у нас появляется пространство времени, пространство тембра, которые так или иначе можно использовать для выражения сложных концепций.
Сонификация может быть использована для построения сложных графиков. В этом случае человека можно обучить правилам понимания сонификации, что даст ему возможность оперативно считывать информацию
Диаграммы и инфографика — эти форматы представления данных часто недоступны незрячим и слабовидящим людям. Разработчики из американской компании SAS Institute постарались решить эту проблему, создав бесплатный браузерный плагин Graphics Accelerator.
Дело в том, что слышим мы на 360 градусов, определяем расстояние до источника звука. А также способны распознавать большое количество параллельных сигналов. В музыке мы воспринимаем все сразу. И это можно использовать.
Также сонификация использовалась для отладки работы компьютерных программ. Самый простой метод отладки — это логирование переменных. Однако переменные могут выражаться не только текстовыми данными, но и звуковыми.
Многие послевоенные компьютеры оснащались громкоговорителем, который подключался к ячейке памяти в процессоре и таким образом озвучивал изменения внутреннего состояния во время вычислений. Это продолжало практику операторов, которые акустически контролировали релейные системы, например, на крупных телефонных коммутационных станциях. Подобно тому, как человек прислушивается к тиканью часов, опытные программисты могли следить за частью алгоритмического процесса в фоновом режиме.
Но на самом деле вычисления должны были постоянно контролироваться, потому что они по своей сути были неопределенными: процесс всегда мог войти в состояние, когда он не завершится и вместо этого продолжится в бесконечный цикл. В таком случае его нужно было остановить как можно быстрее, чтобы избежать перегрева. Это не только означало, что приходилось тратить драгоценные часы на то, чтобы ждать, пока компьютер остынет, но и столкнуться с постыдными последствия сбоя и сообщить об этом инженеру лаборатории, который был единственным человеком, имевшим право прервать петлю извне.
Фоновое прослушивание позволило оператору отреагировать на этот исключительный момент, пока не стало слишком поздно. (Алгоритмическая музыка и философия времени Джулиан Рорхубер Оксфордский справочник по алгоритмической музыке, Под редакцией Роджера Т. Дина и Эла)
NASA в рамках проекта «Сонификация» подарил миру новый способ восприятия разных изображений космоса. В звуковых версиях можно послушать знаменитую туманность, далекую галактику и мертвую звезду. Ученые использовали данные рентгеновской обсерватории НАСА Chandra, а также космических телескопов James Webb и Hubble Space Telescope.
Также NASA выпустили фреймворк для сонификации Data And Image Processing Tool For Interactive Plotting, Sonification, and 3D Orbit Display (TIPSOD)
(GSC-14732–1).
В 2021 году сервис «Яндекс.Музыка» презентовал плейлист «Музыка звезд», в котором треки были созданы с использованием физических параметров звезд, пульсаров и галактик. Например, в мелодии «Солнце» преобразованы в звук данные о периодичности его вспышек за последние 60 лет.
Плейлист «Музыка звезд» на Яндекс.Музыке.
Также с помощью сонификации ученые преобразуют в звук данные об изменении климата.
Можно ли считать мелодии, которые образуются посредством преобразования из данных, произведениями и искусства?
— В первую очередь мне бы хотелось подчеркнуть, что сонификация — это не обязательно нейронная сеть. Нейронные сети могут использоваться при получение данных для обработки получившейся сонификации. Но логика сонификации ближе именно к алгоритму, к конечному набору действий. Конечно, нейронные сети тоже являются алгоритмом, но мы будем говорить об алгоритме, который не содержит скрытых элементов и лишен проблемы черного ящика. Это придает сонификации научности, потому что мы можем легко восстановить данные по звуку. Между данными и звуком прослеживается однозначная связь. Однако, если мы воспринимаем чистую необработанную сонификацию, то ее нельзя назвать произведением искусства. Проблема в таком рассуждении еще и в том, что мы не можем найти чистую сонификацию. На любом из этапов это результат человеческой деятельности.
Возможно, это не деятельность непосредственно ученого, возможно, что это деятельность человека, который создал алгоритм сонификации или разрабатывал теорию, но так или иначе человек вложил какую-то творческую волю в эту сонификацию.
Поэтому нам важно определить, что мы понимаем под произведением искусства. Мы это понимаем как меру эстетического качества, как что-то «хорошее»? Или как меру творческого высказывания человека?
Первое я бы пока отбросил, потому что это очень субъективное понимание. И если посмотреть историю музыки, то введение скрипки в оркестр когда-то воспринималось в штыки, потому что скрипка с железными струнами для той поры звучала слишком варварски и истерически.
Сейчас, конечно же, скрипка это основной инструмент оркестра. Я бы обсудил два вопроса. Является ли сонификация музыкой? И является ли она произведением искусства?
Так вот, мой ответ, что музыкой она является не всегда. А вот произведением искусства в своем роде, конечно, да.
Если мы допускаем некоторую художественную обработку звука, то это уже звуковое искусство, выполняющее все функции музыки и тогда ее ограничения становятся техникой.
Вспомним как зарождалась классическая музыка. Первым ее проявлением были григорианские хоралы, в которых запрещены любые вольности. Из вариации на основе этих ограничений и родилась академическая музыка, которая разобрала все возможные нюансы. Возможно, зависимость от числа породит какую-то новую технику работы со звуком.
Также стоит отметить, что мелодия — это очень сложное единство, которое образуется в мозгу слушателя во многом благодаря воспитанию. Как таковой ее в музыке и звуках нет, есть лишь физическое восприятие громкости, частоты звука.
В этом году я связался в соцсетях с профессором компьютерных наук и сонификации Университета Нортумбрии Полом Виккерсом. Он дал свое согласие сделать перевод его статьи на тему, должна ли сонификация быть музыкой. Мы сделали ее перевод и, если вам интересна эта тема, пишите в комментариях и мы опубликуем текст статьи на русском языке в блоге СПбГУ.
В любом случае, я убежден, что у сонификации огромный потенциал и нам еще предстоить раскрыть все ее грани. Если у вас есть опыт создания скрпитов для сонификации, мы будем рады вашим комментариям.