Pull to refresh

Suno споёт моим голосом? Ну, … да

Level of difficultyMedium
Reading time10 min
Views19K

Доброго дня/вечера! Статья об использовании опции 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 инструменталки, запрет не распространяется. А вот если обнаружен вокал, то публикации нет (есть примечание при загрузке материала - видимо, сразу не заметил)... Ок, спасибо, что хоть не отказывается генерить.

*** написал о проблеме Keenan Freyberg, без расчета на ответ :-) и в Suno Support

Что дальше? Буду тестировать разные подходы в создании Dataset, проверю можно ли управлять "способом извлечения" / вокальными приемами: "с опорой", "на придыхе", крик, шепот, что с другими языками и т.п.


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

Мои заметки по экспериментам с Suno.
Каталог моих Suno треков.
Предыдущая моя статья о Suno на Хабре.

P.S.

1) Еще месяц назад я пытался сделать в песне Suno "свой" тембр с помощью RVC, но ... вокал в Suno всегда немного "хоровой, ансамблевый", порой зашумленный, ну, и конечно, с эффектами - Reverb, Delay. В RVC и с идеальными Reference Tracks бывают проблемы, а здесь... В общем, попробовал пару песен и бросил затею с RVC.

2) От МакКинли (9 июля 2024, из переписки) : "... Добавление этой функциональности в Suno было бы интересным, поскольку технология, похоже, готова к внедрению. Среди моих знакомых мнения неоднозначны... Будь то RVC или другая реализация голосового dataset, я считаю, что Suno получит от этого большую выгоду, поскольку эти характеристики уже могут быть реализованы в Suno генерации... Тем не менее, некоторые люди могут быть не в восторге от этой функции, поскольку технология ИИ может быть поляризованной, и у всех будут разные мнения о ней. Я думаю, что если Suno не предпримет решительный шаг в разработке такого рода функционала, в конечном итоге другая компания восполнит этот пробел."

3) (11 июля 24) Suno Support: сначала формальный ответ, потом, что "... если в загружаемом материале обнаружен вокал, то генерация остается приватной", т.е. Public'а нет. Там действительно есть такое упоминание. Не знаю, может 10 дней назад я его не заметил, а может они добавили при обновлении дизайна 8 июля. Главное: с 3-й попытки, сказали, что легальная функция использования своего вокала должна появиться в след. версиях.

4) (11 июля 24). Процедура (ответ на вопрос в переписке):
a) Загрузить Dataset 60 с. (не превышая длительность). Название лучше дать короткое, например, DS1; 
b) На нём (no style) выбрать [Extend];
с) Идем от макс. длины (пусть 00:59);
d) Вставляем текст песни - до слов желательно что-то еще [Instrumental Intro], [Short Scat] или просто: Ла,ла,ла,ла,ла ... Т.к. часто начальные слова зажевывает.
e) Вставляем Style, лучше попроще. И(!) без указания голоса, вокала.
f) Жмем [Extend] - генерится 2 трека, в них нет исходной загрузки (т.е. Dataset). Это и есть готовые песни.
g) Если в целом вариант удачный, но есть косяки, то: можно взять уже его и с какого-то времени продлить [опять Extend], вставив нужные Lyrics и такой же Style, как у удлиняемого трека.
h) Нарезать и пересобрать все удачные треки одного стиля/варианта в DAW. Честно говоря, я почти не пользуюсь объединением в Suno.

5) (13 июля 24). Снова Copyright. Оказывается, (из статей L.A.Times, Wired за 24-26 июня, спасибо R.P.) у RIAA (Recording Industry Association of America), как и других гигантов муз. индустрии, снова претензии к Suno (и Udio)... вставили в стиль [1950s rock and roll, rhythm & blues, 12 bar blues, rockabilly, energetic male vocalist, singer guitarist]  и несколько строк из "Johnny B. Goode" Чака Берри в Lyrics и получили почти оригинал 1958 г. ! ...

Как уже писал, сам по себе стиль, манера, на мой взгляд, не имеет материальной фиксации (как мелодия/партитура или аранжировка/трек) и вряд ли есть случаи, когда какую-то группу наказали за то, что их песни похожи на Beatles или ACDC. Но, вот когда на джазовом факультете в Беркли студенты слушают и разбирают импровизацию G.Benson'а, например, то на это у учебного учреждения есть разрешение. А вот у Suno и Udio подобного для тренировки алгоритмов, похоже, нет. И, вроде, за каждое нарушение хотят до $150K ... Я на стороне прогресса и надеюсь, ребята в Suno отобьются :-) // Кому нужны подробности наберите в поиске suno sued.

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


Панграммы

Аэрофотосъёмка ландшафта уже выявила земли богачей и процветающих крестьян. Бегом марш! У месторождения кварцующихся фей без слёз хочется электрическую пыль и Блеф. Борец за идею Чучхэ выступил с гиком, шумом, жаром и фырканьем на съезде — и в ящик № 1234 5678 90 В чащах юга жил бы цитрус? Да, но фальшивый экземпляр! Всё ускоряющаяся эволюция компьютерных технологий предъявила жёсткие требования к производителям как собственно вычислительной техники, так и периферийных устройств. Вступив в бой с шипящими змеями — эфой и гадюкой, — маленький, цепкий, храбрый ёж съел их. Государев указ: душегубцев да шваль всякую высечь, да калёным железом по щекам этих физиономий съездить! Друг мой эльф! Яшке б свёз птиц южных! Завершён ежегодный съезд эрудированных школьников, мечтающих глубоко проникнуть в тайны физических явлений и химических реакций. Здесь фабула объять не может всех эмоций — шепелявый скороход в юбке тащит горячий мёд.

Tags:
Hubs:
Total votes 3: ↑2 and ↓1+1
Comments4

Articles