Как всегда, не претендую на полноту и надеюсь, что кому-то поможет. (Предыдущие мои статьи о Suno 1, 2.)
Да, важная, непростая и "больная тема". Многие жаловались на непредсказуемость генерации, о сложности получить то, что хочется. Еще в первой статье о Suno я пытался разобраться как работает система, дать определение стиля в музыке, понять как составлять Promt - набор ключевых параметров генерации... Прошло 3,5 мес., 9 июля Suno support поздравил с преодолением порога в 500 генераций ... стала ли мне понятнее система?
До ИИ систем все было проще - почти на всех устройствах значения параметров определяли результат. И, естественно, мы ожидали аналогичного или даже большего "понимания" от ИИ сервисов - там же "интеллект". Для преодоления эффекта новизны и принятия этого свойства ИИ алгоритмов, мне кажется, полезно потренироваться в создании картинок по тексту.
Вот, пишу, по шагам подбираю promt (лучше на английском):
Девушка пьет на балконе кофе - итог: да, но грустная девочка, китаянка или филиппинка, снято издалека, на столе в полутьме стоит стакан.
Молодая европейка улыбается и пьет кофе на балконе. Светит солнце. Средний план. - итог: уже лучше, но брюнетка, смотрит вбок, света очень много, в каждой руке по чашке, за ее спиной стена.
Молодая женщина европейка улыбается и пьет кофе на балконе. В одной руке женщина держит фарфоровую чашу. Женщина смотрит в фотоаппарат. За спиной женщины перила балкона и вид города. Вдали над крышами домов светит вечернее солнце, закат. Средний план. - итог: почти то, что хотелось.
Даже этот простой пример (число итераций я сократил) требует терпения, а вы попробуйте получить картинку на которой "мужчина и женщина обнимаются и женщина смотрит в камеру, а у мужчины видна только спина" - ИИ порой такую жуть выдает ...
В начале 90-х пресса стала посвободнее и в "Советской молодежи" (Новосибирск) и др. газетах стали модными конкурсы красоты - девушки присылали фото, а читатели голосовали... Утром в наш офис приходят сотрудники, 3 программиста по очереди смотрят газету (там 3 новые девушки) и каждый произносит что-то вроде "ну, одна то ничего, красивая, а другие ..." ... Они все говорили о разных девушках!
Все дело в семантике. Смысловое содержание одних и тех же слов у людей часто бывает разным. Дайте двум людям 2 одинаковых пирожных и попросите описать вкус. Можете получить различные, даже противоположные описания.
Но в графике проще - мы же описываем предметы и семантика здесь более явная. К слову, в некоторых сервисах можно указать и конкретного художника, например, Куинджи, Моне. В Suno это соответствовало бы командам, вроде [Snoop Dogg] или [Joe Cocker]. Полагаю, что технически это возможно (пояснение ниже), но это сделает вопросы по авторскому праву еще больше напряженными.
Что в описании музыки имеет явную смысловую нагрузку? Вот (на мой взгляд), по степени убывания:
Темп (тут еще ритмическая структура - 4/4, 12/8 ... изменения темпа (агогика) и т.п.).
Тональность, гармоническая последовательность.
Состав инструментов (соло, дуэт, ансамбль, оркестр и т.п.).
Отдельные инструменты / голос (тут еще и множество приемов извлечения и манер исполнения).
Жанры (в первую очередь ритм-основа) - здесь как разновидности одного жанра, так и сочетания с другими.
Вот, использование 1 и 2 в параметрах Style в Suno впрямую невозможно, а остальные имеют уже и не такой точный смысл.
Анализ и систематизация
Я честно пытался разобраться с заданием Style и дополнительными командами в Lyrics:
Для каждой генерации я сохранял promt'ы в отдельном файле. (Треки в Suno удаляю, чтобы не усложнять себе работу).
Смотрел, что задают др. пользователи, копировал интересные для меня promt'ы.
Анализировал Lyrics - как структуру, так и команды, выписывал, что казалось полезным.
Т.е. смотрел "кто на что ловит и чем прикармливает". Мне казалось, что вот я наберу статистику, приведу все в систему и тогда уж Suno будет генерить именно то, что мне нужно... Наивный.
В Suno Wiki есть забавные (или печальные) комментарии:
Возможно переключение на мужской, женский вокал и одновременное пение (дуэт)? Ответ: "и да, и нет", это зависит от ...
Правильно ли подробно описывать музыку в Style? Ответ: "очень подробно - нет".
Эти комментарии кажутся не совсем логичными. Но это только, если не предполагать, как работает система, как Suno устроено. Развитие технологий, специализация приводит к тому, что даже многим профессионалам нет необходимости знать "основы, базу" - ремонтник эл. аппаратуры может не знать закон Ома, скрипач - музыкальную акустику... Нас вообще отучают разбираться в "природе, физике" устройств даже в общих чертах - все готово, надо лишь нажать кнопку / педаль. Да, в городе можно не знать устройство автомобиля, но если заглохнешь на горном перевале или в степи за 200 км от СТО, то эти знания окажутся крайне полезными.
Как (снова) работает система ?
С учетом предыдущих наблюдений и после экспериментов с Audio Input я еще более утвердился в правильности своих догадок:
Suno использует реальные треки (РТ) для создания, тренировки Модели*. У этой модели, скорее всего, есть:
ID и "описание",
служебный комментарий, вроде "Sade / No Ordinary Love, 1992". + (возможно) пометка о лицензии, рисках с авторским правом...
В описании (по сути, это Style "на стороне" Suno) есть:
структура - музыкальная форма (Intro, Verse1, Chorus1, ...);
темп и пометки о вариациях, если есть;
тональность + (может) аккорды;
жанр;
набор инструментов, даже модели/серии типа Roland TR808 ... ;
вокал (м/ж) и его смена, если есть, манера пения;
эмоциональный характер;
функциональное назначение;
национальные / языковые признаки;
* раньше я думал, что Модель тренируется на нескольких похожих треках. Теперь считаю, что ОДИН трек это ОДНА Модель... Да, думаю, они скачали все, что можно найти в сети.
Скорее всего что-то в создании описания автоматизировано, а что-то делают специалисты.
Мы задаем Style и Lyrics. Система выбирает Модели с наиболее подходящими параметрами, затем "прикидывает", как в этих Моделях "ложится" текст и выбирает пару для генерации. К слову, "подогнать" текст к структуре, генерируя собственно мелодию, соблюдая фонетику языка, не нарушая стилистики, как музыки, так и манеры пения, и "не попадая" в оригинал вокала в РТ - это вам... если не Нобелевка, то десяток патентов точно!
При генерации система может комбинировать и модифицировать отдельные части Модели (Verse, Chorus и пр.). Думаю, темп и последовательность аккордов сохраняются от исходного РТ. Хотя без особых искажений можно слегка "подвигать" и тональность, и темп. Например, +- 2 полутона и +- 10% от bpm.
Система проверяет результат на % совпадений с исходным РТ и если он велик, то выбирает другую Модель. (Чтобы не выдать почти оригинал).
Таким образом, наш новый Suno трек - это "отрисовка" новой композиции по правилам реальной существующей (РТ). Т.е. все буквально повторяется:
если часть припева пел мужчина, а часть женщина, то так и будет сгенерировано. (См. мой пример ("Странная девушка" v9.0), хотя указано было [Male vocals]);
И соло будет не [Distortion Guitar], как указано, а Saxophone, если так в Модели;
И вступления НЕ БУДЕТ (хотя вы его указали), если его нет в Модели;
Да, будет модуляция, которая вам "не очень", но которая есть в Модели...
Ну, и понятно, почему слова куплета порой "залазят" на музыку припева (или наоборот), почему система сама "подправляет" текст и т.п.
Правда, Suno умеет и "смешивать" разный материал - об этом чуть позже.
Так что здесь, как и на реальной рыбалке - гарантий нет... Если придерживаться данной концепции устройства Suno, то очень многие вопросы снимаются, правда?
Насчет подробного описания. Слушаю чей-то классный пример, думаю "Вот я сейчас его promt скопирую и ... А что же там в стиле?" Смотрю, а там просто [Pop] или [EDM] ! Нет, есть, конечно, интересные примеры, где в Style целый абзац. Также есть много примеров, в которых вообще нет того, что указано в стиле (такое часто и в моих).
В случае, когда мы не прописываем Style детально, у Suno намного больше свободы - больше Моделей подходит, т.к. меньшему числу параметров надо соответствовать. Может и текст легче "вписать", может меньше модификаций структуры потребуется. Правда, этот стиль может вам не подходить, но ... Надо просто больше генерить. В общем, "истина" где-то посередине - если один параметр, то разброс очень широк, если много параметров, по поиск узок. Вроде второе "хорошо", но ведь в только в том случае, если описание Модели у Suno совпадает с нашим Style, но как мы это узнаем?
Чего только не увидишь у пользователей! Как в Style, так и командах Lyrics. Недавно вот (для песни "Странная девушка" v1.0,v1.1), пишу: [Punk, Male vocals] - хотелось чего-то "немного хулиганского" - не то, слишком жестко. Меняю на [Punk, Male vocals, Soft, Lounge Singer] - мягкий акустический рок, где там панк? Хотя параметр на первом месте... Я не утверждаю, что знаю лучше, просто отмечаю, что все ищут, стараются, экспериментируют и ..., наверное, привыкают к способу общения с ИИ.
Одна из проблем в том, что после корректировки Style / Lyrics при новой генерации Модель(и) то меняются. А в другой Модели:
прежние ошибки могут и не появиться;
возможно, возникнут "косяки" в другом месте.
Так что лучше дописывать трек - Suno "дорисует" немного по-другому, но в той же Модели. Вот мы и добрались до Audio Input - неполной, но эффективной альтернативы.
Audio Input как альтернатива
Ограничения
При загрузке фрагмента (6...60 сек.) в режиме Audio Input сразу выводится предупреждение, что при наличие в материале вокала, сгенерированные треки будут приватными и публикации в Suno не подлежат.
Далее автоматическая проверка, если это известный трек - запрет, Suno не будет с ним работать.
Не смог удержаться - взял 1 мин. фрагмент трека нашего известного исполнителя - он оказался в базе, т.е. запрет. Удалил вокал - принимает. Сгенерил песни "Чужая жена" v6.0, 6.1.
Взял 1 мин. фрагмент известного зарубежного - тоже в базе, запрет. И с удаленным вокалом не принял. Видимо из-за характерного рифа. Перегруппировал такты, нарушив мелодию - принял. Результат генерации ("Чужая жена" v8.0.).
Возможно, многие сразу услышат знакомый характер, саунд... В общем, надо выбрать прототип и постараться пройти этот этап. Лучше в 1 минуту вложить и разреженную часть (куплет), и насыщенную (припев), ну и что-то из инструментального проигрыша. По факту у Suno будет весь необходимый материал для генерации трека с развитием.
Темп, тональность, гармония
Меня интересовало то, насколько я могу "навязать" Suno нужные мне темп, тональность и гармонию (то, что впрямую не задается). Я раньше уже использовал Audio Input, заметил, что почти все сохраняется, но более детально результаты не анализировал. В примерах 1 ("Чужая жена" v6.0, 6.1.) и 2 ("Чужая жена" v8.0.) темп и тональность сохранились, а гармония только на 70% - Suno ее развил(о), но в очевидных пределах - музыкант, сделал бы что-то подобное.
Тут надо отметить, что в отличие от прошлых экспериментов с использованием команды [Use the same style], я же Style тоже заполнял. И, видимо, Suno, выбрав Модель, вносил(о) что-то гармоническое и из Модели. Кстати, это как раз тот случай, где Модель вполне могла быть по темпу и тональности подстроена под фрагмент, "скормленный" Audio Input.
Решил проанализировать гармонию внимательнее. Я не стал делать во фрагменте для Audio Input сразу и куплет, и припев, т.к. не был уверен в том, что Suno "впишет" текст правильно. Поэтому сделал отдельные фрагменты (только обыгрывание аккордов фортепиано) для куплета и припева (по 45 сек.). В примере с басом - (см. "Странная девушка" v2.1) у меня было:
в куплете - | Am | Am | Em | Em | Dm | Dm | F | G7 | и в Lyrics только куплеты.
в припеве - | C | Em/B | Gm6/Bb | A7 | Dm | Db(#5) | F/C | Gsus4, G7 | - в Lyrics припевы.
Результат:
в куплете базовая тональность сохранилась, но система не стала тупо повторять гармонию, получилось развитие - разные куплеты.
в припевах система вообще не справилась с "хроматическим" басом, слепила что-то свое, местами со сменой тональности, но в целом с нужным характером.
Исходное фортепиано местами слышно, местами развито. Да, и темп (90 bpm) сохранился. В итоге я из 2-х генераций куплетов и 2-х генераций припевов собрал одну песню. Похоже, очень удачную, т.к. пара знакомых уже захотела ее спеть. Однако, вокальная партия там не простая, как по диапазону, так и подаче.
Небольшая "статистика" по этому примеру ("Странная девушка" v2.1): всего было 8 генераций (4 куплета, 4 припева). Темп сохранился в 7 из 8. По гармонии оценить сложнее (переход в параллельную тональность это не смена), на вскидку - 60% сохранилось.
Смешение стилей
Стиль это не только темп и характер ритмики, но и типовая гармония. Решил немного "помучить" Suno - нарушить и то, и другое. Сделал 2 фрагмента для Audio Input. В обоих последовательность - | Dm | Dbm | Dm | Dbm |... (бас + обыгрывание аккордов на фортепиано):
1-й - с House Drum Loop и темп 130 bpm (15 сек.).
2-й - с Reggae Drum Loop и темп 90 bpm (22 сек.).
Аккорды нетипичные, ни для House, ни для Reggae. Для первого самым распространенным было бы что-то типа | Am | G, F |, для второго - | C, G | Am, F | или | Am | G |.
К слову, фортепиано - самый "безобидный" материал, тембр для фрагмента и "передачи" Suno тональности и аккордов, т.к. легко вписывается практически в любой музыкальный стиль.
Затем я для 1-го (House) поставил Style [Reggae, Male vocals]. Типичный темп для регги - 80...110 bpm. Но система сохранила и темп (130), и гармонию (Dm | Dbm) фрагмента, добавила характерный бас, медь, что-то к ударным. В общем, получилось вполне оригинальное музыкальное Reggae в ускоренном темпе.
А для 2-го (Reggae) поставил Style [House, Male vocals]. Для House типичный темп - 115...130 bpm, однако система сохранила и темп (90), и гармонию (Dm | Dbm), чуть развивая. Добавила слэп-бас, синты, что-то к ударным. В итоге получился медленный, оригинальный и не совсем House.
Еще опыты
Хотелось свой характерный басовый риф "встроить" в генерацию. Записал фрагмент (42 сек.) бас + ОДИН аккорд на фортепиано + Drum Loop в темпе 117 bpm. В Style вбил [Latin, Male voice, Dance, Sultry Singer] и сделал 2 генерации. Темп и тональность в обоих сохранились, гармония - другая, только в одной ход баса остался в виде проигрыша. Ну, с гармонией понятно - если аккорд один, то это для Suno как задание тональности. Пример с басом ("Странная девушка" см. v7.0).
Сделал фрагмент на 6 сек. - всего 2 такта легких джазовый триольных ударных 4/4 (12/8) + одна нота фортепиано - Gb в малой октаве - ожидание, что тональность будет Gb (мажор/минор здесь как бы не задан). Сгенерил 6 инструментальных треков со Styles:
[Jazz, Drums, Jazz Guitar, grand-piano]
[Heavy Rock Blues, Distortion Guitar Solo, Harmonica Solo]
[Reggae, Clean Guitar Solo, Trombone Solo]
Итог:
темп и триольный рисунок везде сохранился, где-то ритмика заметно усложнилась.
тональность в 5 треках стала B (мажор) - т.е. IV ступень, субдоминанта от Gb и только в одном минор.
указанные инструменты везде прозвучали, да и бас везде добавился.
Так что, одна нота воспринимается (видимо, по статистики), как субдоминанта, ну и мажор, похоже, более употребим, по крайней мере, в выбранных стилях. В общем, если нужно точнее попадать в тональность, следует задавать аккорд. Сами по себе генерации вышли достаточно интересными.
Взял запись (акапелла) одной знакомой. Прописал в Lyrics тот же текст, а в Style в одном случае [Orchestra Strings, Harp], в другом - [Latin Acoustic Guitar] - вполне приличные, местами неожиданные, вышли версии. Очень грамотно так Suno добавил(о) к существующему вокалу в первом случае скрипочки и арфу, а во втором - испанскую гитару.
ВЫВОДЫ
В целом опция Audio Input - вполне рабочая альтернатива задания Style только текстовым способом. На мой взгляд, качество генерации в этом режиме все таки уступает тому, что Suno генерит в среднем. Одна минута это не 3-4 мин, как в обычной композиции, и времени в системе для создания, тренировки Модели, судя по всему, выделяется меньше.
Два подхода
Наверное, аранжировщик мог бы делать для Audio Input качественную по звуку 1-минутную "закваску" ("заготовку", исходник) - именно те ударные, тот бас, Synth и пр. Такой фрагмент на одном аккорде, где есть "все" тембры и фактуры, как для куплета, так и припева, проигрыша, чтобы именно этими звуками система генерила. Это можно назвать подходом Максимум и ... надеяться, что при соответствующем задании в Style, система сгенерит то, что ожидаем. (Обстоятельно, на нескольких примерах, это еще не проверял, но планирую сделать). Вполне возможно, что кто-то будет специально делать "заготовки" для обмена с другими пользователями.
И как противоположность - дать Suno Минимум - только темп и тональность, чтобы остальное система добавила из готовой Модели. (Примерно, как с голосовым Dataset - дать только информацию о фонемах). Вполне возможно, достаточно 2-х тактов бочки + один аккорд и даже одна нота (Детально еще не тестировал, но сделаю).
Соответственно в обоих подходах, мы не объединяем результат генерации с исходным фрагментом - он лишь наше "альтернативное задание" Style.
Статья написана 8 августа 2024 г. Технологии развиваются стремительно, вполне возможно, через 2-3 месяца функционал Suno будет другим.
Предыдущие статьи о Suno 1, 2.
Мой Suno Дневник.
Каталог моих Suno песен.
P.S.
Какие-то собранные мной Promt'ы, отдельные команды, может и примеры генерации с Audio Input, я опубликую в Дневнике, как появится время. Но, считаю, что пользователю полезнее все-таки провести собственные эксперименты - то, что "сработало" у меня, не факт сработает у другого - Suno это что-то очень емкое и постоянно меняющееся.
Одна из причин, почему меня так интересует "устройство" Suno и вопросы копирайта - более 20 лет назад я разрабатывал алгоритмы "морфинга" midi-партитуры. В OnyxArranger21 (Jasmine Music Technology, USA) любой midi-файл готовой песни мог использоваться как шаблон стиля, который генерил новую фактуру не только с произвольной гармонией, но с изменением размера (хоть из 3/4 в 7/8) и др. настройками. В программе легко сделать файл, когда к мелодии "Let It Be" прикладывался, согласно аккордам, аккомпанемент "Stairway to Heaven". Т.е. Led Zeppelin как бы "аккомпанируют" The Beatles. По сути, это reusing стиля в другой композиции. Я не считал такой результат шедевром, но морфинг с соблюдением музыкальных правил - непростая и интересная алгоритмическая задача.
Задавали вопрос по Udio - пробовал немного... Потрясающей выразительности вокал и чище, чем в Suno. Вообще с качеством звука у них получше. По интерфейсу, удобству - на мой взгляд уступает Suno. По функционалу (параметрам) - шире Suno. Пока нет времени для работы с ним.