Suno promt (стиль) = рыбалка… Альтернатива?

bf81bcb9545735897ddd8380a4d275bc.jpg

Как всегда, не претендую на полноту и надеюсь, что кому-то поможет. (Предыдущие мои статьи о Suno 1, 2.)

Да, важная, непростая и «больная тема». Многие жаловались на непредсказуемость генерации, о сложности получить то, что хочется. Еще в первой статье о Suno я пытался разобраться как работает система, дать определение стиля в музыке, понять как составлять Promt — набор ключевых параметров генерации… Прошло 3,5 мес., 9 июля Suno support поздравил с преодолением порога в 500 генераций … стала ли мне понятнее система?

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

Вот, пишу, по шагам подбираю promt (лучше на английском):

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

  2. Молодая европейка улыбается и пьет кофе на балконе. Светит солнце. Средний план. — итог: уже лучше, но брюнетка, смотрит вбок, света очень много, в каждой руке по чашке, за ее спиной стена.

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

Даже этот простой пример (число итераций я сократил) требует терпения, а вы попробуйте получить картинку на которой «мужчина и женщина обнимаются и женщина смотрит в камеру, а у мужчины видна только спина» — ИИ порой такую жуть выдает …

В начале 90-х пресса стала посвободнее и в «Советской молодежи» (Новосибирск) и др. газетах стали модными конкурсы красоты — девушки присылали фото, а читатели голосовали… Утром в наш офис приходят сотрудники, 3 программиста по очереди смотрят газету (там 3 новые девушки) и каждый произносит что-то вроде «ну, одна то ничего, красивая, а другие …» … Они все говорили о разных девушках!

Все дело в семантике. Смысловое содержание одних и тех же слов у людей часто бывает разным. Дайте двум людям 2 одинаковых пирожных и попросите описать вкус. Можете получить различные, даже противоположные описания.

Но в графике проще — мы же описываем предметы и семантика здесь более явная. К слову, в некоторых сервисах можно указать и конкретного художника, например, Куинджи, Моне. В Suno это соответствовало бы командам, вроде [Snoop Dogg] или [Joe Cocker]. Полагаю, что технически это возможно (пояснение ниже), но это сделает вопросы по авторскому праву еще больше напряженными.

Что в описании музыки имеет явную смысловую нагрузку? Вот (на мой взгляд), по степени убывания:

  1. Темп (тут еще ритмическая структура — 4/4, 12/8 … изменения темпа (агогика) и т.п.).

  2. Тональность, гармоническая последовательность.

  3. Состав инструментов (соло, дуэт, ансамбль, оркестр и т.п.).

  4. Отдельные инструменты / голос (тут еще и множество приемов извлечения и манер исполнения).

  5. Жанры (в первую очередь ритм-основа) — здесь как разновидности одного жанра, так и сочетания с другими.

Вот, использование 1 и 2 в параметрах Style в Suno впрямую невозможно, а остальные имеют уже и не такой точный смысл.

Анализ и систематизация

Я честно пытался разобраться с заданием Style и дополнительными командами в Lyrics:

  • Для каждой генерации я сохранял promt’ы в отдельном файле. (Треки в Suno удаляю, чтобы не усложнять себе работу).

  • Смотрел, что задают др. пользователи, копировал интересные для меня promt’ы.

  • Анализировал Lyrics — как структуру, так и команды, выписывал, что казалось полезным.

Т.е. смотрел «кто на что ловит и чем прикармливает». Мне казалось, что вот я наберу статистику, приведу все в систему и тогда уж Suno будет генерить именно то, что мне нужно… Наивный.

В Suno Wiki есть забавные (или печальные) комментарии:

  • Возможно переключение на мужской, женский вокал и одновременное пение (дуэт)? Ответ: «и да, и нет», это зависит от …

  • Правильно ли подробно описывать музыку в Style? Ответ: «очень подробно — нет».

Эти комментарии кажутся не совсем логичными. Но это только, если не предполагать, как работает система, как Suno устроено. Развитие технологий, специализация приводит к тому, что даже многим профессионалам нет необходимости знать «основы, базу» — ремонтник эл. аппаратуры может не знать закон Ома, скрипач — музыкальную акустику… Нас вообще отучают разбираться в «природе, физике» устройств даже в общих чертах — все готово, надо лишь нажать кнопку / педаль. Да, в городе можно не знать устройство автомобиля, но если заглохнешь на горном перевале или в степи за 200 км от СТО, то эти знания окажутся крайне полезными.

Как (снова) работает система ?

С учетом предыдущих наблюдений и после экспериментов с Audio Input я еще более утвердился в правильности своих догадок:

  1. Suno использует реальные треки (РТ) для создания, тренировки Модели*. У этой модели, скорее всего, есть:

  • ID и «описание»,

  • служебный комментарий, вроде «Sade / No Ordinary Love, 1992». + (возможно) пометка о лицензии, рисках с авторским правом…

В описании (по сути, это Style «на стороне» Suno) есть:

  • структура — музыкальная форма (Intro, Verse1, Chorus1, …);

  • темп и пометки о вариациях, если есть;

  • тональность + (может) аккорды;

  • жанр;

  • набор инструментов, даже модели/серии типа Roland TR808 … ;

  • вокал (м/ж) и его смена, если есть, манера пения;

  • эмоциональный характер;

  • функциональное назначение;

  • национальные / языковые признаки;

* раньше я думал, что Модель тренируется на нескольких похожих треках. Теперь считаю, что ОДИН трек это ОДНА Модель… Да, думаю, они скачали все, что можно найти в сети.

Скорее всего что-то в создании описания автоматизировано, а что-то делают специалисты.

  1. Мы задаем Style и Lyrics. Система выбирает Модели с наиболее подходящими параметрами, затем «прикидывает», как в этих Моделях «ложится» текст и выбирает пару для генерации. К слову, «подогнать» текст к структуре, генерируя собственно мелодию, соблюдая фонетику языка, не нарушая стилистики, как музыки, так и манеры пения, и «не попадая» в оригинал вокала в РТ — это вам… если не Нобелевка, то десяток патентов точно!

  2. При генерации система может комбинировать и модифицировать отдельные части Модели (Verse, Chorus и пр.). Думаю, темп и последовательность аккордов сохраняются от исходного РТ. Хотя без особых искажений можно слегка «подвигать» и тональность, и темп. Например, ± 2 полутона и ± 10% от bpm.

  3. Система проверяет результат на % совпадений с исходным РТ и если он велик, то выбирает другую Модель. (Чтобы не выдать почти оригинал).

Таким образом, наш новый 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 как альтернатива

Ограничения

  1. При загрузке фрагмента (6…60 сек.) в режиме Audio Input сразу выводится предупреждение, что при наличие в материале вокала, сгенерированные треки будут приватными и публикации в Suno не подлежат.

  2. Далее автоматическая проверка, если это известный трек — запрет, 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-х генераций припевов собрал одну песню. Похоже, очень удачную, т.к. пара знакомых уже захотела ее спеть. Однако, вокальная партия там не простая, как по диапазону, так и подаче.

Небольшая «статистика» по этому примеру: всего было 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.

Еще опыты

  1. Хотелось свой характерный басовый риф «встроить» в генерацию. Записал фрагмент (42 сек.) бас + ОДИН аккорд на фортепиано + Drum Loop в темпе 117 bpm. В Style вбил [Latin, Male voice, Dance, Sultry Singer] и сделал 2 генерации. Темп и тональность в обоих сохранились, гармония — другая, только в одной ход баса остался в виде проигрыша. Ну, с гармонией понятно — если аккорд один, то это для Suno как задание тональности. Пример с басом («Странная девушка» см. v7.0).

  2. Сделал фрагмент на 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 (мажор) — т.е. V ступень, доминанта от Gb и только в одном минор.

  • указанные инструменты везде прозвучали, да и бас везде добавился.

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

  1. Взял запись (акапелла) одной знакомой. Прописал в Lyrics тот же текст, а в Style в одном случае [Orchestra Strings, Harp], в другом — [Latin Acoustic Guitar] — вполне приличные, местами неожиданные, вышли версии. Очень грамотно так Suno добавил (о) к существующему вокалу в первом случае скрипочки и арфу, а во втором — испанскую гитару.

ВЫВОДЫ

В целом опция Audio Input — вполне рабочая альтернатива задания Style только текстовым способом. На мой взгляд, качество генерации в этом режиме все таки уступает тому, что Suno генерит в среднем. Одна минута это не 3–4 мин, как в обычной композиции, и времени в системе для создания, тренировки Модели, судя по всему, выделяется меньше.

Два подхода

  1. Наверное, аранжировщик мог бы делать для Audio Input качественную по звуку 1-минутную «закваску» («заготовку», исходник) — именно те ударные, тот бас, Synth и пр. Такой фрагмент на одном аккорде, где есть «все» тембры и фактуры, как для куплета, так и припева, проигрыша, чтобы именно этими звуками система генерила. Это можно назвать подходом Максимум и … надеяться, что при соответствующем задании в Style, система сгенерит то, что ожидаем. (Обстоятельно, на нескольких примерах, это еще не проверял, но планирую сделать). Вполне возможно, что кто-то будет специально делать «заготовки» для обмена с другими пользователями.

  2. И как противоположность — дать Suno Минимум — только темп и тональность, чтобы остальное система добавила из готовой Модели. (Примерно, как с голосовым Dataset — дать только информацию о фонемах). Вполне возможно, достаточно 2-х тактов бочки + один аккорд и даже одна нота (Детально еще не тестировал, но сделаю).

Соответственно в обоих подходах, мы не объединяем результат генерации с исходным фрагментом — он лишь наше «альтернативное задание» Style.

Статья написана 8 августа 2024 г. Технологии развиваются стремительно, вполне возможно, через 2–3 месяца функционал Suno будет другим.

Предыдущие статьи о Suno 1, 2.
Мой Suno Дневник.
Каталог моих Suno песен.

P.S.

  1. Какие-то собранные мной Promt’ы, отдельные команды, может и примеры генерации с Audio Input, я опубликую в Дневнике, как появится время. Но, считаю, что пользователю полезнее все-таки провести собственные эксперименты — то, что «сработало» у меня, не факт сработает у другого — Suno это что-то очень емкое и постоянно меняющееся.

  2. Одна из причин, почему меня так интересует «устройство» Suno и вопросы копирайта — более 20 лет назад я разрабатывал алгоритмы «морфинга» midi-партитуры. В OnyxArranger21 (Jasmine Music Technology, USA) любой midi-файл готовой песни мог использоваться как шаблон стиля, который генерил новую фактуру не только с произвольной гармонией, но с изменением размера (хоть из ¾ в 7/8) и др. настройками. В программе легко сделать файл, когда к мелодии «Let It Be» прикладывался, согласно аккордам, аккомпанемент «Stairway to Heaven». Т.е. Led Zeppelin как бы «аккомпанируют» The Beatles. По сути, это reusing стиля в другой композиции. Я не считал такой результат шедевром, но морфинг с соблюдением музыкальных правил — непростая и интересная алгоритмическая задача.

  3. Задавали вопрос по Udio — пробовал немного… Потрясающей выразительности вокал и чище, чем в Suno. Вообще с качеством звука у них получше. По интерфейсу, удобству — на мой взгляд уступает Suno. По функционалу (параметрам) — шире Suno. Пока нет времени для работы с ним.

© Habrahabr.ru