Suno поёт моим голосом? Ну, … да
![4fd3a241d1e669fe9759f7066321c1cd.jpg](https://habrastorage.org/getpro/habr/upload_files/4fd/3a2/41d/4fd3a241d1e669fe9759f7066321c1cd.jpg)
Доброго дня/вечера! Статья по использованию опции 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.