Доброго дня/вечера! Статья по использованию опции Audio Input (в продолжение предыдущей статьи о Suno).
Кратко. Вы загружаете короткий (6-60 сек) фрагмент аудио, задаете Стиль, текст (если песня) или нет (если Instrumental), а Suno его "дописывает", доигрывает. С опцией "Get Whole Song", как и ранее, можно объединить исходное и новое в одну композицию.
Суть (как я понимаю) в том, что алгоритм пытается распознать закономерности в загруженном фрагменте, я бы даже сказал "музыкальное содержание" не в эмоциональном человеческом понимании - грустно, весело, трагично и т.п., а в формальном смысле - какая ритмическая структура, какая гармоническая последовательность, где мелодические линии, какие штрихи, тембры, какая форма. Хотя это тоже "человеческое", робот, скорее, ищет закономерности в графическом (спектральном) представлении всего этого. В итоге это берется за основу, чтобы продолжить "рисовать".
Кажется есть одна близкая аналогия: если вам дадут обрывок картинки и попросят дорисовать, что получится? Чем больший фрагмент вам выдан, тем меньше будет ошибок, "произвола" в дорисовке. Также и Suno. Я пробовал и 6 сек., и 60. В первом случае было мало чего "повторять", а при максимальной длине у системы есть что анализировать - по хорошему, в 1 минуту можно вложить короткий инструментальный проигрыш, куплет и припев - т.е. почти весь значимый материал песни.
Важный момент: чужие фрагменты подгружать нельзя (т.е. те, на которые у вас нет прав) - появляется Pop-Up окошко. А как хочется "скормить" 60 сек. чего-то вроде "Stairway To Heaven" / Led Zeppelin - и "доиграть" уже со своими словами!
В моих инструментальных фрагментах Suno повторял (а также развивал, варьировал) все близко к исходнику, если я указывал в Promt'е [The same style]. Кстати, очень полезная функция: может вы не умеете делать вариации, импровизировать, или может вам лениво, или хочется глянуть, что выдаст робот...
Однако, как мне показалось, у Suno тут есть определенные ограничения. Система плохо справляется с явно нестандартной гармонией, т.е. если это не Western Pop, Jazz Standard и не европейский шансон, то доигрывание происходит уже не в исходной гармонии, а в чем-то ином. Почти как у музыкантов: "Я ваших джазовых мудреных аккордов не знаю, давайте на 3-х основных ... ". Относительно нестандартная гармония была в песне "Милый идиот" и Suno отработал(о) исходник с умеренными косяками. А вот когда я ему нарочно подсунул бред в псевдо-классическом стиле (такое в реальной музыке встречается), то сдался и продолжил играть что-то своё. Но! Именно это и полезно при решении задачи - Создание песни Suno со своим (или произвольного человека) голосом.
Один знакомый высказал пожелание: "Вот мне бы мои ноты, озвучить симфоническим оркестром", ну т.е. не возиться самому, когда каждую ноту надо редактировать и даже дорогие семплы не спасают. Скорее всего уже есть алгоритмы восстанавливающие старые фотографии - не только ретушь, но и отсутствующие фрагменты, де-фокус и пр. Почему бы не подсунуть фрагмент симфонии, отрендеренной из midi с недорогим GM модулем и не "перерисовать" скрипочки и все остальное? Вот, взял подобный фрагмент, подгрузил, а в Стиле написал что-то вроде Сохранить ритм, гармонию. Исполнить реальным богатым звучанием .. И? Нет, тембры существенно не поменялись. Может команды не те, а может подобное в принципе тут невозможно, но ...
Свой голос в песнях Suno
Первую неделю июля (2024 г.) я тестировал Audio Input только с одной с целью - добиться того, чтобы Suno спел(о) моим тембром. Я решил все 60 сек. исходного фрагмента заполнить только своим голосом. По сути это Dataset, я делал подобное многократно для RVC. Там, правда, не было такого жесткого ограничения на продолжительность, а это создает весьма существенные трудности. Как и с RVC, надо, по возможности, обеспечить следующее:
наличие всех фонем;
максимально возможный звуковысотный диапазон. К слову, в речи он намного уже, чем в пении;
желательно и присутствие разных певческих, речевых приёмов - "нормальный", "с опорой", "с придыхом";
нежелательно появление порядка в материале - периодичности (явной ритмики, даже сложной), наличие "музыкальной логики", будь то музыкальный лад, "пропетая" по ступеням гармоническая секвенция и т.п. Т.о. четкое произнесенное стихотворение или правильно спетая мелодия будет вредить. Скажем так: надо передать только фонетическую информацию, без примесей чего-то музыкального.
Примечание: Сначала нашел вариант фонетически представительного текста современного русского языка - в нем представлены все фонемы, причем таким образом, чтобы соответствовать статистике обычной речи. Однако, начитка такого текста это более 6 мин. записи. И я не стал его использовать. Потом вспомнил о панграммах - выражениях, фразах, включающих все буквы алфавита. Может это и не слишком научно, но ... я собрал несколько панграмм, которые смогу скороговоркой произнести и уложиться в 1 мин., надеясь, что этот материал сработает.
Мои Datasets. В процессе экспериментов я сделал несколько своих 1-минутных наборов:
AuDS1 - взял вокал на английском из большого (24 мин.) Dataset, что был собран для RVC. Я загружал сет в Suno, вбивал Lyrics, Style и генерил песню. Как ни странно, с ним неплохо получился и английский, и русский.
AuDS2 - взял текст песни "Мне просто не повезло" и наговорил его. Я подумал, а что если "скормить" Suno ровно тот набор фонем, что нужен в этой песне? Записывая этот сет, я специально выходил из высотного и динамического диапазона обычной речи - старался говорить выше и ниже, как в эдакой "линейной" манере - "по-ступенькам", так и большими, не свойственными для речи интервалами, "скачками" вверх-вниз. Ну, и по-громче, и почти шепотом. Честно говоря, это не так уж просто, если ты не артист, озвучивающий мультики и т.п. В принципе этот сет работал, но мне показалось, что его исходная "правильность" вредила, накладывала отпечаток и ограничивала Suno в применении Стиля.
AuDS2i - тот же набор, что и AuDS2, в котором звуковая волна "перевернута во времени", т.е. Reverse - моя попытка нарушить логичность материала. Но! С ним система работать не стала и вместо моего голосового набора применила дефолтный голос. Классно, значит алгоритм понимает фонетическую логику русского языка и не принимает "перевернутые" фонемы.
AuDS2R - то же, что и AuDS2 , но с перепутанной последовательностью фраз и слов - я решил нарушить текст песни (стихотворение) в надежде как-то уменьшить его влияние. Сет в принципе работал нормально, но я стал понимать, что лучше все-таки создавать свой собственный универсальный Dataset, а не возиться с отдельным набором для каждой песни. Так и дошло дело до панграмм.
AuDS3 - скороговоркой записал несколько панграмм (см. текст в конце статьи), при этом менял высоту (тон) большими интервалами - скачками. После обработки записи - удаления пауз, вдохов и сбивок, оказалось, что уложился в 52 сек. Решил добавить пропетые гласные (а,е,о,у...). Записал их в разных регистрах, а затем вставил каждую по отдельности между слов, в разрыв панграмм. Все с той же целью - максимально нарушить логику, чтобы система не нашла в наборе ничего музыкального. (В итоге это набор оказался самым удачным, как для русского, так и английского). Но, меня все-таки не покидала мысль, что не очень правильно не давать Suno образцов моего пения и я собрал следующий набор.
AuDS4 - я пропел те же панграммы (часть), специально блуждая по тону, насколько мне позволяет мой диапазон и абсолютное игнорирование любых вокальных тренировок, распевок и пр. Набор работал, но система явно сопротивлялась отработке Стилей, где вокал достаточно плотный в ритмическом плане - она генерила что-то более медленное, распевное.
Важные моменты в решении задачи
В Style (как я заметил) категорически нельзя включать любое упоминание о голосе, вокале типа: Sultry Singer, Female voice и т.п. Иначе система будет использовать голос по-умолчанию в соответствии со Стилей.
Кто использует Suno и еще не стал Promt-профи для этой системы, знает, что добиться строгого исполнения структуры песни (формы), даже с помощью рекомендуемых команд в Lyrics, как [Verse], [Chorus] и др., удается далеко не всегда. А в режиме Audio Input с этим все еще сложнее. С какого-то момента я стал вписывать [Strictly follow the lyrics below] в самом начале Lyrics. В большинстве случаев это, похоже, работает.
Уже понятно, что почти все результаты в ИИ алгоритмах генерации имеют весьма вероятностную природу. С Suno, используя один и тот же Dataset, вы получите разное звучание в песнях даже с одним и тем же заданием Стиля - где-то ваш тембр будет отчетливо слышен, где-то не очень, а иной раз вы себя не узнаете. Причин тут множество, одна из важных связана с тем, что система для каждый новой генерации выбирает новую модель или новое "семя" (Seed, случайное число) для запуска того же алгоритма.
Особенности интонирования. Здесь что-то явно перекликается с RVC. Манера пения в разных стилях разная. Если Suno "примет" ваш набор, то будет пытаться "вылепить" из него вокальный трек для Стиля, который вы задали - поэтому, все-таки стоит выбирать стиль, соответствующий голосовому набору. Если Dataset собран из "нежного, няшного" женского голоса, а Стиль выбран "Aggressive Rap, Hip-Hop", то рассчитывать на приемлемый результат вряд ли стоит.
Со своим наборами я столкнулся с такими моментами. Мой голос по регистру, скорее баритон, и если я выбирал Soul, стиль, где тесситура обычно выше, то Suno не хватало моих фонем (видимо, даже с изменениями по тону ), и система добавляла чужие - смешивая или просто заменяя. Помимо этого вокал имел заметную подвижность - опевания, мелизмы - то, чем я не владею реально в такой степени. Как результат, голос получался не совсем мой, как будто кто-то, со странной походкой, но в моей одежде. (См. версии песни "Город мой" в каталоге). Вполне возможно, что подобные огрехи можно компенсировать какими-то командами, но я пока не успел этот вопрос исследовать более детально.
Готовая песня. Чтобы собрать финальный вариант песни со своим голосом, я генерировал несколько вариантов, затем выбирал самую убедительный и дорабатывал его. Порой в генерации отсутствовала часть текста вообще - Suno забывал(о) спеть куплет или припев, или спел(о) коряво. В этому случае я дописывал этот же трек (Extend) с новым заданием в Lyrics. Когда все части были в наличии, запускал Reaper, отрезал лишнее (там иногда очень забавные куски появлялись - бормотания и пр.) и собирал окончательный вариант. Плюс немного "мастерил."
Так со своим голосом я собрал версии для "Милый идиот", "Мне просто не повезло", "Город мой". 6 июля 2024 г. сочинил и "исполнил" на английском "песню-подсказку" - "Suno sings in my voice!". Она с кратким характеристикой Dataset, а также репликой к МакКинли Хибиттсу (McKinley Hibbits / California) - коллеге, который в прошлом году познакомил меня с RVC (ИИ технология замены тембра вокалиста). 7 июля 2024 г. сделал версию на русском "Suno поёт моим голосом!". Текст весьма примитивен и я не думал, что напишу что-то подобное, будучи на пенсии и по духу во многом советским человеком... Но мне хочется, чтобы люди, которые не один год мечтали услышать песни на свои стихи, смогли исполнить свои желания ...
Почти все мои песенные примеры в каталоге.
Публикация на/через Suno. Сгенерив, наверное, под 400 треков, я ни разу до вчерашнего дня не включал тумблер "Public", максимум - кидал ссылку друзьям. А вчера решил попробовать это сделать (даже немного заполнил профиль) с песней "Suno sings in my voice!", поскольку из переписки с МакКинли понял, что он еще так свой вокал с Suno не генерил. Oops, именно эти треки опубликовать нельзя ("Unable to be made public due content restriction").
Сначала думал - из-за того, что в тексте есть имя (McKinley Hibbits) или название (Suno)... Оказалось, что на сделанные с Audio Input инструменталки, запрет не распространяется. Нет его и для материала с "нормальным" вокалом. Да, в Lyrics у народа встречается как неформат, так и политика, но у меня ничего подобного в принципе не бывает. Вывод - Suno непонятно содержание подгруженного материала - голосового набора, в том варианте, который нужен для генерации голоса.... Ок, спасибо, что хоть не отказывается генерить.
Статья от 8 июля 2024 г. ИИ технологии развиваются стремительно. С большой вероятностью и функционал Suno всего через 2-3 месяца будет другим.
Мои заметки по экспериментам с Suno.
Каталог моих Suno треков.
Предыдущая моя статья о Suno на Хабре.
P.S. Еще месяц назад я пытался сделать в песни Suno "свой" тембр с помощью RVC, но ... вокал в Suno всегда немного "хоровой, ансамблевый", порой зашумленный, ну, и конечно, с эффектами - Reverb, Delay. В RVC и с идеальными Reference Tracks бывают проблемы, а здесь... В общем, попробовал пару песен и бросил затею с RVC.