Как стать автором
Обновить

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

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров2.4K

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

(Если хочется сразу к примерам - раздел на сайте).

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

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

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

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

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

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

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

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

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

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

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

  1. Темп и его изменения (агогика и пр.).

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

  3. Размер (4/4,.. 12/8, ..) и характер ритмики.

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

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

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

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

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

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

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

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

  • Анализировал 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 Модели для генерации. К слову, "подогнать" текст к структуре, генерируя собственно мелодию, соблюдая фонетику языка, не нарушая стилистики, как музыки, так и манеры пения, и "не попадая" в оригинал вокала в РТ - это вам... если не Нобелевка, то десяток патентов точно!

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

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

Таким образом, наш новый Suno трек - это "отрисовка" новой композиции по правилам реальной существующей (РТ). Т.е. все буквально повторяется:

  • если часть припева пел мужчина, а часть женщина, то так и будет сгенерировано. См. мой пример ("Странная девушка" v9.0), хотя указано было [Male vocals];

  • И соло будет не [Distortion Guitar], как указано, а Saxophone, если так в Модели;

  • И вступления НЕ БУДЕТ (хотя вы его указали), если его нет в Модели;

  • Да, будет модуляция, которая вам "не очень", но которая есть в Модели...

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

Правда, Suno умеет и "смешивать" разный материал - об этом чуть позже.

Так что здесь, как и на реальной рыбалке - гарантий нет... Если придерживаться данной концепции устройства Suno, то очень многие вопросы снимаются, правда?

Насчет подробного описания. Слушаю чей-то классный пример, думаю "Вот я сейчас его prompt скопирую и ... А что же там в стиле?" Смотрю, а там просто [Pop] или [EDM] ! Нет, есть, конечно, интересные примеры, где в Style целый абзац. Также есть много примеров, в которых вообще нет того, что указано в стиле (такое часто и в моих).

В случае, когда мы не прописываем Style детально, у Suno намного больше свободы - больше Моделей подходит, т.к. меньшему числу параметров надо соответствовать. Может и текст легче "вписать", может меньше модификаций структуры потребуется. Правда, этот стиль может вам не подходить, но ... Надо просто больше генерить вариантов. В общем, "истина" где-то посередине - если один параметр, то выбор Моделей очень широк, если много параметров, по подходящих вариантов меньше. Вроде второе "хорошо", но ведь только в том случае, если описание Модели у Suno совпадает с нашим Style, но как мы это узнаем? А если и совпадает, то одинаковый ли смысл, который мы вложили в наше описание и тот, который был у разработчиков Модели в Suno?

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

Небольшая "статистика" по этому примеру ("Странная девушка" 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.

Еще опыты

  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 мажор (Gb это V ступень, доминанта для B) и только в одном минор.

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

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

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

Теперь (15 авг. 2024) не только эти, но и др. примеры в разделе на моем сайте.

ВЫВОДЫ

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

Два подхода

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

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

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

А вишенка?

Это насчет смены гендера в одной песне (Male / Female singer) и дуэта. Спасибо Алексею (Ametrin) - подкинул идею. Cегодня, 9.08.24, с утра ее проверил. Если в Audio Input загружена полноценная "заготовка" стиля, то может быть Suno не будет применять Модель со строгим указанием голоса? Может тогда при генерация вокала система будет лучше соблюдать переключения М/Ж? В общем в Lyrics вбил:

[Strictly follow the lyrics below]
[Verse 1]
[Male singer] Я пою мужским голосом, да?
[Female singer] А я женским пою, наверное
[Male singer] Что, точно, мужской, да ?
[Female singer] Что, точно, женский, верно ? ...,

а Style вообще оставил пустым! Сгенерил 10 треков, в 50% получилось неплохо. Вот 2 примера - хороший в целом и где М/Ж перепутаны .

Не идеально, но, ... это все-таки похоже на свет в конце туннеля. Будем копать дальше.


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

Приложение к данной статье (Примеры, "исходники", анализ/выводы по каждому).

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

P.S.

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

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

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

  4. (15 авг. 2024) Собрал раздел на сайте почти со всеми примерами генерации в режиме Audio Input, которые я получил в процессе тестирования. Можно считать это "приложением" к данной статье.

  5. (19 авг. 2024) Suno, в определенном смысле, делает и гармонизацию, и Autotune вокального трека, фактически - аранжировку на основе спетой мелодии. Провел тестирование, выложил примеры в разделе на сайте.

  6. (7 сент. 2024) Первый раз получилось сгенерировать песни с детскими голосами. См. заметку в Дневнике.

  7. (25 сент. 2024) Только что закончил 1-й раздел по теме Suno, как аранжировщик (Тест #1) .

  8. (29 сент. 2024) Выложил 2-й раздел по теме Suno, как аранжировщик (Тест #2) .

  9. (8 окт. 2024) Выложил 3-й раздел по теме Suno, как аранжировщик (Тест #3) .

Теги:
Хабы:
Всего голосов 6: ↑6 и ↓0+9
Комментарии16

Публикации

Истории

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань