Как всегда не претендую на полноту и надеюсь, что кому-то поможет. (Предыдущие мои статьи о Suno 1, 2.)
Да, важная, непростая и "больная тема". Многие жаловались на непредсказуемость генерации, о сложности получить то, что хочется. Еще в первой статье о Suno я пытался разобраться, как работает система, дать определение стиля в музыке, понять, как составлять Prompt - набор ключевых параметров генерации... Прошло 3,5 мес., 9 июля Suno support поздравил с преодолением порога в 500 генераций ... стала ли мне понятнее система?
До ИИ систем все было проще - почти на всех устройствах значения параметров определяли результат. И, естественно, мы ожидали аналогичного или даже большего "понимания" от ИИ сервисов - там же "интеллект", но на практике ситуация часто близка к "моя твою не понимает". Мне кажется, для преодоления эффекта новизны и принятия этой особенности ИИ сервисов, полезно потренироваться в создании картинок по тексту.
Вот, пишу, по шагам подбираю prompt (лучше на английском):
Девушка пьет на балконе кофе - итог: да, но грустная девочка, китаянка или филиппинка, снято издалека, на столе в полутьме стоит стакан.
Молодая европейка улыбается и пьет кофе на балконе. Светит солнце. Средний план. - итог: уже лучше, но брюнетка, смотрит в сторону, света очень много, в каждой руке по чашке, за ее спиной стена.
Молодая женщина-блондинка европейка улыбается и пьет кофе на балконе. В одной руке женщина держит фарфоровую чашку. Женщина смотрит в фотоаппарат. За спиной женщины перила балкона и вид города. Вдали над крышами домов светит вечернее солнце, закат. Средний план. - итог: почти то, что хотелось.
Даже этот простой пример (число итераций я сократил) требует терпения, а вы попробуйте получить картинку на которой "мужчина и женщина обнимаются и женщина смотрит в камеру, а у мужчины видна только спина" - ИИ порой такую жуть выдает ...
В начале 90-х пресса стала посвободнее и в "Советской молодежи" (Новосибирск) и др. газетах стали модными конкурсы красоты - девушки присылали фото, а читатели голосовали... Утром в наш офис приходят сотрудники, 3 программиста по очереди смотрят газету (там 3 новые девушки) и каждый произносит что-то вроде "ну, одна то ничего, красивая, а другие ..." ... Они все говорили о разных девушках!
Все дело в семантике. Смысловое содержание одних и тех же слов у людей часто бывает разным. Дайте двум людям 2 одинаковых пирожных и попросите описать вкус. Можете получить различные, даже противоположные описания.
Но в графике проще - мы же описываем предметы и семантика здесь более явная. К слову, в некоторых сервисах можно указать и конкретного художника, например, Куинджи, Моне. В Suno это соответствовало бы командам, вроде [Snoop Dogg] или [Joe Cocker]. Полагаю, что технически это возможно (пояснение ниже), но такая опция сделает вопросы по авторскому праву еще больше напряженными.
Что в описании музыки имеет явную смысловую нагрузку? Вот (на мой взгляд), параметры по степени убывания:
Темп и его (агогика и пр.).
Тональность, гармоническая последовательность.
Размер (4/4,.. 12/8, ..) и характер ритмики.
Состав инструментов (соло, дуэт, ансамбль, оркестр и т.п.).
Отдельные инструменты / голос (тут еще и множество приемов извлечения и манер исполнения).
Жанры (в первую очередь ритм-основа) - здесь как разновидности одного жанра, так и сочетания с другими.
Вот, использование 1 и 2 в параметрах Style в Suno напрямую невозможно, а остальные имеют уже и не такой точный смысл. Я о том, что описать музыку словами и дать верное задание ИИ алгоритму, похоже, сложнее, чем сформулировать задание для генерации изображения.
Анализ и систематизация
Я честно пытался разобраться с заданием Style и дополнительными командами в Lyrics:
Для каждой генерации я сохранял prompt'ы в отдельном файле. (Треки в Suno удаляю, чтобы не усложнять себе работу).
Смотрел, что задают др. пользователи, копировал интересные для меня prompt'ы.
Анализировал 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. Система выбирает Модели с наиболее подходящими параметрами, затем "прикидывает", как в этих Моделях "ложится" текст и выбирает 2 Модели для генерации. К слову, "подогнать" текст к структуре, генерируя собственно мелодию, соблюдая фонетику языка, не нарушая стилистики, как музыки, так и манеры пения, и "не попадая" в оригинал вокала в РТ - это вам... если не Нобелевка, то десяток патентов точно!
При генерации система может комбинировать и модифицировать отдельные части Модели (Verse, Chorus и пр.). Думаю, темп и последовательность аккордов сохраняются от исходного РТ. Хотя без особых искажений можно слегка "подвигать" и тональность, и темп. Например, +- 2 полутона и +- 10% от bpm.
Система проверяет результат генерации на % совпадений с исходным РТ и если он велик, то выбирает другую Модель (или 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 как альтернатива
Ограничения
При загрузке фрагмента (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.
А вишенка?
Это насчет смены гендера в одной песне (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.
Какие-то собранные мной Prompt'ы, отдельные команды, может и примеры генерации с 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. Пока нет времени для работы с ним.
Комментарии (10)
AlexHanguery Автор
08.08.2024 10:58Это и подтверждает предположение, что для каждой генерации Suno выбирает 2 новые Модели, т.к. к одному и тому же Style подходят многие.... Насчет языка - кроме Ru/En пробовал корейский и турецкий - все ОК, правда, какой - М/Ж, меня не интересовало. Как то, когда композиция понравилась, но был Ж вместо М - разделил вокал и музыку, понизил на октаву (с компенсацией спектра) - кривовато, но ... Есть идея, но нужно тестировать: подгружать в Audio Input полноценную, 1 мин, в нужном стиле "заготовку", чтобы Suno инструменты не добавлял, т.е. не использовал нормальную Модель (а только голос), а в Style писать минимум, вроде [Pop, Female vocals] ... Мне кажется, их системе абсолютно все-равно, на каком языке генерить вокал. Просто в Моделях, которые она подбирала для ваших текстов, был изначально женский.
emusic
08.08.2024 10:58Подбор prompt'ов чем-то напоминает попытки объяснить оркестру, что и как нужно играть, не имея нот. :)
ru1z
08.08.2024 10:58Мда, не очень управляемо выглядит пока. А есть какой-нибудь способ заставить обходить стороной любой реп/начитку/подобное и генерировать только настоящее пение?
AlexHanguery Автор
08.08.2024 10:58+1у меня на сайте более 300 моих композиций Suno, в " репе/начитке ", может всего 8-10. Все дело в Style, кот. вы задаете, пишите [Pop, make vocals, lyrical singer] и т.п. Вполне возможно, что команда [sing continually] поможет или [resonant singer] ... см. suno wiki по певцам комменты
Ametrin
Еще интересное наблюдение (если было в этой или прошлой статьях, извините, упустил видимо) - очень сильно влияет язык текста песни Lyrics. С одним и тем же Style и одним по смыслу текстом (русский и японский, почти дословный перевод) Suno выдает совсем разные по характеру композиции.
Ну и у меня совсем не получается заставить петь его нужным вокалом) причем, тоже зависит от языка. Было такое, что на русском почти все генерации выдавал мужским вокалом, а японские - женским, при явном указании вокала в Style или тегах в Lyrics. А комбинации вокалов и дуэты у меня вообще ни разу не получилось сделать.
AlexHanguery Автор
Взял 1 мин. заготовку для Audio Input. В стиле [Male Vocals], в тексте: Я люблю Suno!
" Я люблю Suno!
I love Suno!
I love Suno!
私は愛する Suno!
私は愛する Suno!
좋아요 Suno!
좋아요 Suno! "
т.е. Ru, En, корейский, японский. В итоге 2 трека мужских, вроде все ок :-)
https://suno.com/song/769c6b3a-c034-4b0a-a980-8bf311a57a00
https://suno.com/song/998df486-ef66-4e83-9058-e9a52b9a375e
AlexHanguery Автор
поменял в стиле на [Female vocals] и получил 2 женских трека :-)
https://suno.com/song/fbb71cbc-86fb-4692-95c1-fa5cb89e661c
https://suno.com/song/b3f47a02-1d16-4516-9166-2dc31b9d8f51
Ametrin
Покопался в своей куче мусора, и понял, что ввел всех в заблуждение(
Уточненная у меня ситуация: в Style указано "male vocal, female vocal, duet" и вот на этот промт в зависимости от языка идет уклон в мужской или женский голос (условно 8/10 мужской на русском, и 9/10 женский на японском). По крайней мере дуэт так мне получить не удалось, и смену вокалов в одной песне тоже). Но, может, выборка у меня тупо маленькая.
Попробую ваш лайфхак из того, что вы дописали в статье, возможно он меня спасет, спасибо)
AlexHanguery Автор
Спасибо, натолкнули на идею - дописал в статье про переключение вокала Female / Male :-)