Skip to content

Releases: pytraveler/YuE2-ComfyUI

YuE2-ComfyUI 0.14.1

Choose a tag to compare

@github-actions github-actions released this 22 Oct 19:59

Fixed

  • YuE2 Edit Track sang a long list of edits again on every Render
    (#13). The node
    keeps the takes it has sung in memory, up to 1 GB, and every take is the
    whole song: about 90 MB for four minutes. A run goes through its list from
    the first edit, and once a list's takes passed that gigabyte the node
    dropped the first edit to make room for the last; the next run sang the
    first again and dropped the second for it, and so on down the list, so
    every Render sang every edit and looked like a render of the whole song.
    On a four-minute song that began around the sixth edit with two takes
    each, and at the third or fourth with four. An edit on the list is now
    never dropped to make room. The takes of edits that are no longer on the
    list go first, then every edit but the last keeps only the take that was
    kept, and past that the list stays in memory over the gigabyte. On a song
    of 3:51 with four takes an edit, on an RTX 5090: three edits took 142
    seconds, a fourth 58, and Render again on all four took 3 seconds and sang
    nothing. An undo that makes a trimmed edit the last again shows its other
    takes as Sing it. See The track window.

Исправлено

  • YuE2 Edit Track перепевал длинный список правок на каждом Render
    (#13). Нода держит
    спетые дубли в памяти, до 1 ГБ, и каждый дубль -- целая песня: около 90 МБ
    на четыре минуты. Запуск проходит список с первой правки, и когда дубли
    списка перерастали этот гигабайт, нода выбрасывала первую правку, чтобы
    освободить место последней; следующий запуск перепевал первую и выбрасывал
    ради неё вторую, и так по всему списку, так что каждый Render перепевал
    каждую правку и выглядел как рендер всей песни. На четырёхминутной песне
    это начиналось примерно с шестой правки по два дубля и с третьей-четвёртой
    по четыре. Теперь правка из списка никогда не выбрасывается ради места.
    Первыми уходят дубли правок, которых в списке уже нет, затем у всех правок,
    кроме последней, остаётся только выбранный дубль, а дальше список остаётся
    в памяти сверх гигабайта. На песне 3:51 с четырьмя дублями на правку, на
    RTX 5090: три правки заняли 142 секунды, четвёртая -- 58, а повторный
    Render всех четырёх -- 3 секунды и ничего не перепел. Undo, после которого
    урезанная правка снова становится последней, показывает её остальные дубли
    с кнопкой Sing it. См. Окно трека.

YuE2-ComfyUI 0.14.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 18:29

Added

  • Part of a song in another style. Style... in the track window of
    YuE2 Edit Track sings the selected bars in another style -- other
    instruments, another singer, another manner of singing -- with the same
    words, and leaves the rest of the song as it was to the sample. A panel in
    the words column holds the style, filled in with the song's own to be
    changed, and three choices:

    • Same notes, the song's tune, on any bars; or New melody, a tune the
      model writes for the new style over whole sections -- a rapper's
      recitative, say;
    • the voice where it is, An octave down or An octave up, since a voice
      sits where the notes are whatever the style says: for a man in a woman's
      song, an octave down;
    • when the selected section's name comes again, a tick that sings the other
      choruses too, from the same take, so one singer sings them all.

    Every take sings the song again in the new style as far as the selection
    and lays its bars in, the bar before each seam sung again as a move does,
    so a take costs about as long as singing the song that far: two takes of
    both choruses of a ballad, rapped to a new melody, took 199 seconds on an
    RTX 5090. With Qwen3-ASR already on the machine the take that sings the most
    of the words is kept. A new melody finds the words of its sections by their
    names, so where the model sang its sections in another order than the
    lyrics give them, the sections from there on are refused, with the bar
    named. The list writes the edit as {"op": "restyle", "style": ..., "melody": "same" or "new", "octave": -1, 0 or 1, "also": [...]}, and
    Saved songs... marks a song made by it as style. See
    What an edit can do.

  • Measured before it was built, on the second verse of three songs,
    English and Russian, and both choruses of a Russian ballad. A retake told
    the new style in its prompt kept the old one: an audio tagger put it 0.24
    of the way from the song to a song sung in the new style, where a plain
    retake is 0.14, and a stronger text guide made it a lottery. The song sung
    again in the new style and laid in reached 0.77, which is as close as two
    songs sung in that style come to each other. Its words were sung 87 to 91
    times in 100, against 90 for a retake, and the beat after the seams was 0
    to 26 ms off. "Male vocal" in the style left a woman's song in her register
    in 6 songs of 6, and the notes moved an octave toward the new voice moved
    the voice in all 6; to the ear, the singer changed and no seam was heard.

Changed

  • The tooltip of edits on YuE2 Edit Track describes restyle, and
    break, which it had left out.

Добавлено

  • Кусок песни в другом стиле. Style... в окне трека YuE2 Edit Track
    поёт выделенные такты в другом стиле -- другие инструменты, другой певец,
    другая манера -- с теми же словами, а всё остальное в песне остаётся как
    было, с точностью до сэмпла. В колонке слов открывается панель со стилем --
    в ней уже стоит стиль самой песни, его остаётся поменять -- и тремя
    выборами:

    • Same notes -- мелодия песни, на любых тактах; или New melody --
      мелодия, которую модель пишет под новый стиль на целые секции, скажем
      речитатив рэпера;
    • голос на своём месте, An octave down или An octave up: голос сидит
      там, где ноты, что бы ни говорил стиль, и чтобы женскую песню спел
      мужчина, нужна октава вниз;
    • если имя выделенной секции повторяется, галочка, которая поёт и
      остальные припевы, из того же дубля, -- один певец на все.

    Каждый дубль поёт песню заново в новом стиле до выделения и вклеивает его
    такты, перепевая такт перед каждым швом, как при переносе, поэтому дубль
    стоит примерно столько, сколько спеть песню до этого места: два дубля обоих
    припевов баллады, отданных рэперу с новой мелодией, заняли 199 секунд на
    RTX 5090. Если Qwen3-ASR уже есть на машине, остаётся дубль, в котором
    слышно больше всего слов. Новая мелодия находит слова своих секций по их
    именам, поэтому там, где модель спела секции не в том порядке, в каком их
    даёт текст, секции с этого места и дальше получают отказ с номером такта.
    Список пишет правку как {"op": "restyle", "style": ..., "melody": "same" или "new", "octave": -1, 0 или 1, "also": [...]}, а Saved songs...
    помечает сделанную ею песню как style. См.
    Что умеет правка.

  • Замерено до того, как это было построено, на втором куплете трёх
    песен, английских и русских, и на обоих припевах русской баллады.
    Перепевка, которой в подсказке сказали новый стиль, оставила старый:
    аудиотеггер поставил её на 0,24 пути от песни к песне, спетой в новом
    стиле, а простую перепевку -- на 0,14, и более сильный текстовый guide
    превращал это в лотерею. Песня, спетая заново в новом стиле и вклеенная,
    дошла до 0,77 -- так же близко друг к другу две песни, спетые в этом
    стиле. Слова в ней пелись 87-91 раз из 100 против 90 у перепевки, а доля
    после швов уходила на 0-26 мс. "Male vocal" в стиле оставил женскую песню
    в её регистре в 6 песнях из 6, а ноты, сдвинутые на октаву к новому голосу,
    сдвинули голос во всех 6; на слух певец сменился, и швов слышно не было.

Изменено

  • Подсказка edits у YuE2 Edit Track описывает restyle, а заодно и
    break, который в ней был пропущен.

YuE2-ComfyUI 0.13.3

Choose a tag to compare

@github-actions github-actions released this 18 Oct 20:11

Fixed

  • Switching audio off on YuE2 Edit Track opened another song. The
    square beside audio switches the input off, and the node then edits the
    song named in its hidden song_key field. Only Saved songs... wrote that
    field, so a user who edited a song from Load Audio, unticked the square
    and pressed Render was handed whatever song had been picked there before,
    with their edits laid on it: in their log a song of 186 seconds was edited,
    and the next run opened one of 282. Every run on a song joined to audio
    now writes that song into the field, so with the square unticked the node
    goes on with the song it was editing; a song opened with Saved songs...
    since then still comes first. See YuE2 Edit Track.
  • A list of edits made on one song is no longer laid on another. The edits
    are bars, seconds and lines of the song they were made on, and on another
    song they cut and sang whatever stood in those places, without a word. The
    track window now writes the list together with the song it was made on, and
    the node refuses it on any other song. The refusal names both songs by
    length, the time each was made and the start of its style, and says to
    press Reset track or to join the first song again. A list written by
    0.13.2 or earlier names no song and is read as before.

Changed

  • Saved songs... opens a song while one is joined to audio. Its button
    was greyed out then, and the window explained that the square on the node
    had to be unticked first. The button now reads Switch 'audio' off and open
    and does both; ticking the square again goes back to the joined song.
    Choosing the song the node is already on only unticks the square and keeps
    its edits. See Saved songs.
  • Break... names both sections, and a selected section gets the break
    after it.
    The list named only the section the break went before, and a
    section selected on the strip got the break in front of it, where a user
    who selects a chorus means after it; the break seemed to land at random. A
    selection now gets the break at its end, or at the section line nearest its
    end; with nothing selected it still goes before the first chorus. Each entry
    of the list names the section before the break and the one after it, with
    the time, and the line under the list says it in words: Plays 4 bars after the chorus, before the verse. See
    What an edit can do.

Исправлено

  • Выключенный audio у YuE2 Edit Track открывал другую песню. Квадратик
    рядом с audio выключает вход, и тогда нода правит песню, записанную в её
    скрытом поле song_key. Это поле писала только кнопка Saved songs..., так
    что пользователь, который правил песню из Load Audio, снял галочку и нажал
    Render, получил песню, выбранную там когда-то раньше, и на неё легли его
    правки: в его логе правилась песня на 186 секунд, а следующий запуск открыл
    песню на 282. Теперь каждый запуск на песне, подключённой к audio, пишет её
    в это поле, и со снятой галочкой нода продолжает ту песню, которую правила;
    песня, открытая с тех пор через Saved songs..., по-прежнему главнее. См.
    YuE2 Edit Track.
  • Список правок, сделанный на одной песне, больше не ложится на другую.
    Правки -- это такты, секунды и строки той песни, на которой их сделали, и на
    другой песне они молча вырезали и перепевали то, что стояло на этих местах.
    Окно трека теперь пишет список вместе с песней, на которой он сделан, и на
    любой другой песне нода его не примет. Отказ называет обе песни по длине,
    времени, когда каждая сделана, и началу стиля и предлагает нажать
    Reset track или снова подключить первую песню. Список, записанный 0.13.2
    или раньше, песни не называет и читается как прежде.

Изменено

  • Saved songs... открывает песню, пока к audio подключена другая. Кнопка
    тогда была серой, а окно объясняло, что сначала надо снять галочку на ноде.
    Теперь кнопка называется Switch 'audio' off and open и делает и то и
    другое; галочка, поставленная обратно, возвращает подключённую песню. Если
    выбрать песню, на которой нода уже стоит, галочка просто снимается, а правки
    остаются. См. Saved songs.
  • Break... называет обе секции, а выделенная секция получает проигрыш после
    себя.
    Список называл только секцию, перед которой встаёт проигрыш, а
    секция, выделенная на полосе, получала его перед собой -- тогда как, выделяя
    припев, имеют в виду после него; проигрыш будто вставал куда попало. Теперь
    выделение получает проигрыш в своём конце или на ближайшей к концу границе
    секций; без выделения он, как и раньше, встаёт перед первым припевом. В
    каждой строке списка -- секция до проигрыша и секция после, chorus → verse,
    и время, а строка под списком говорит это словами: Plays 4 bars after the chorus, before the verse. См. Что умеет правка.

YuE2-ComfyUI 0.13.2

Choose a tag to compare

@github-actions github-actions released this 14 Oct 14:51

Added

  • Taller rows in the score editor. The roll's - and + zoomed in time
    only, and on a large screen the note names and the words under the notes
    stayed small. A second pair beside them, marked with an up-down arrow,
    makes the rows taller or lower, from 8 to 48 pixels in eleven steps, and
    Alt+wheel does the same with the note under the pointer kept in place. The
    note names, the words and the names on the keyboard grow with the rows;
    rows lower than the old ones leave the note names to the keyboard. The
    browser remembers the height for every score window. At the old height the
    roll is drawn exactly as before. See
    The score editor.

Changed

  • The grid list on the roll's toolbar keeps its width. On a score written
    in sixteenth notes it offers Thirty-second notes (rewrites the score), and
    the closed list grew to that length, about 100 pixels more than the grids
    themselves need. It is now as wide as its longest grid and opens in full,
    so the toolbar with the new buttons takes no more room than it did.

Добавлено

  • Высота строк в редакторе партитуры. − и + на роле меняли масштаб
    только по времени, и на большом экране названия нот и слова под нотами
    оставались мелкими. Вторая пара рядом, со стрелкой вверх-вниз, делает
    строки выше или ниже, от 8 до 48 пикселей за одиннадцать шагов, а
    Alt+колесо делает то же, оставляя ноту под курсором на месте. Названия нот,
    слова и подписи клавиш растут вместе со строками; на строках ниже прежних
    названия нот остаются только на клавиатуре. Высоту помнит браузер, для всех
    окон партитуры. На прежней высоте рол рисуется точно так же, как раньше.
    См. Редактор партитуры.

Изменено

  • Список сетки на панели рола больше не раздувается. На партитуре в
    шестнадцатых он предлагает Thirty-second notes (rewrites the score), и
    закрытый список растягивался под этот пункт, примерно на 100 пикселей
    шире, чем нужно самим сеткам. Теперь он шириной в самую длинную сетку и
    раскрывается целиком, так что панель с новыми кнопками занимает не больше
    места, чем раньше.

YuE2-ComfyUI 0.13.1

Choose a tag to compare

@github-actions github-actions released this 12 Oct 20:12

Fixed

  • YuE2 Edit Track lost its place in a long song. To light the words in
    the track window, and to find the stretch a change of words is sung over,
    the node asks Qwen3-ForcedAligner when each word is sung. It gave the
    aligner the whole song as mixed in one pass, and in a song of more than
    about two minutes the aligner lost lines and spread their words evenly over
    the gap. In a song of 312 seconds a line of the second verse stood 15
    seconds early, on an interlude -- a change of its words was sung there and
    the line itself left as it was -- and the four lines of the outro stood on
    one instant. The song is now heard a section at a time: each section of the
    lyrics on the seconds its section of the score is sung in, on the separated
    voice. A section whose answer comes back out of order is heard again with
    the section before it: the model sometimes sings a verse's first line on a
    phrase left over at the end of the chorus. Measured on 28 songs of 38 to
    312 seconds. Of 323 lines with a note for every syllable, 304 now start
    within half a second of their phrase in the score, where 219 did. With no
    score in it, Qwen3-ASR hearing each line where its times put it, 1915 of
    the songs' 2300 words are heard, where 1731 were. Through the node, that
    line of the second verse was rewritten where it is sung, and both takes
    came back with all five new words. A song of under two minutes was right
    before and is right now; a song with no score, or with lyrics that cannot
    be paired with the sections of its score, is heard in one pass as before.
    More
  • Word times kept beside a song are measured again the first time it is
    opened, when they were kept by 0.13.0 or earlier and the song can be heard
    by sections: 12 seconds for the song of 312, once. Opening a song for the
    first time costs what it did, since the voice the bars are placed by is the
    one its words are timed on. After an edit only the sections it reached are
    heard, 2 to 3 seconds a take.

Исправлено

  • YuE2 Edit Track терял место в длинной песне. Чтобы подсветить слова в
    окне трека и найти кусок, на который перепевается смена слов, нода
    спрашивает у Qwen3-ForcedAligner, когда поётся каждое слово. Она отдавала
    выравнивателю всю песню как есть, одним проходом, и в песне длиннее
    примерно двух минут он терял строки и раскладывал их слова равномерно по
    промежутку. В песне на 312 секунд строка второго куплета стояла на 15
    секунд раньше, на проигрыше -- смена её слов пелась туда, а сама строка
    оставалась как была, -- а четыре строки концовки стояли в одной точке.
    Теперь песня слушается по разделам: каждый раздел слов -- на тех секундах,
    где поётся его раздел партитуры, на отделённом голосе. Раздел, ответ по
    которому пришёл не по порядку, слушается ещё раз вместе с предыдущим:
    модель иногда поёт первую строку куплета на фразе, оставшейся в конце
    припева. Замерено на 28 песнях от 38 до 312 секунд. Из 323 строк, где на
    каждый слог есть нота, 304 теперь начинаются в пределах полусекунды от
    своей фразы в партитуре, раньше -- 219. Без партитуры, когда Qwen3-ASR
    слушает каждую строку там, куда её ставят времена, слышно 1915 слов из
    2300, раньше -- 1731. Через ноду та строка второго куплета переписана там,
    где она поётся, и в обоих дублях распознаны все пять новых слов. Песня
    короче двух минут стояла верно и раньше; песня без партитуры или со
    словами, которые не удаётся сопоставить с разделами партитуры, слушается
    одним проходом, как прежде.
    Подробнее
  • Времена слов, сохранённые рядом с песней, измеряются заново при первом
    её открытии, если их сохранила версия 0.13.0 или старше и песню можно
    слушать по разделам: 12 секунд для песни на 312, один раз. Первое открытие
    песни стоит столько же, сколько стоило: слова ставятся по тому же голосу,
    по которому ставятся такты. После правки слушаются только разделы, которых
    она коснулась, 2 или 3 секунды на дубль.

YuE2-ComfyUI 0.13.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 18:32

Added

  • Words under the notes. A score has notes and no words: which syllable
    lands on which note the model decides as it sings, and the score editor
    could not show it. A words box on the roll's toolbar, on at first and
    remembered in the browser, draws the lyrics under the voice's notes in
    order, a syllable a note -- the sections of the lyrics on the sections of
    the score, a section's lines cut where the tune rests. A syllable stands on
    the row under its note, or a row lower while the one before it is still
    running; the first syllable of a line is bold, and a word that goes on to
    another note ends in a hyphen. A line with more or fewer syllables than
    notes is drawn in amber, its left-over syllables together under its last
    note and a dash under each note left without one, and the facts above the
    roll count the lines: words fit, or 23 of 33 lines fit with the others
    named in the tooltip. The words are laid again after every edit of the
    notes, after a run and when the lyrics on the node change, so a line can be
    fitted to its phrase, or a phrase to its line, before anything is sung.
    They are drawn in the windows of YuE2 Generate Song, YuE2 Render Plan
    and YuE2 Transcribe and in Notes... of YuE2 Edit Track. Lyrics that
    arrive through a wire are shown after one run. A score that names no
    section, as YuE2 Load MIDI hands one on, is left without words: its
    lyrics are laid along the tune only when it is sung. Nothing sung changes:
    the words are a picture of the score and the lyrics, and every seed sings
    as before. See The score editor.
  • Measured before it was built, on 28 songs, English and Russian, with
    Qwen3-ForcedAligner hearing the separated voice a section at a time and a
    word counted only when a second hearing put it on the same note. YuE2 writes
    a note for every syllable: under its own words 154 lines of 184 had exactly
    as many notes as syllables. On such lines the word was sung on the note it
    is drawn under 92 times in 100 in the songs sung for the measurement, 84 in
    songs the pack had kept and 91 under other words of the same length, and
    within one note 99 in all three. On lines with syllables left over it was
    65, and on lines with notes left over 57: there the model sings its own
    way, which is why those lines are marked and not guessed at. Words drawn
    from what was heard would not be better -- two hearings of one song agreed
    on the note for 71 to 78 words in 100.
  • Syllables cut for the drawing (yue2_comfy/syllables.py): a word is
    split into the pieces of its own letters that are sung -- Russian by its
    vowels, English by rules for the silent e, -ed and -es, contractions
    and the words songs shorten. 448 English song words counted by hand all
    come out right. The count that lays lyrics along a MIDI tune is another one
    and was left as it is.

Добавлено

  • Слова под нотами. В партитуре есть ноты, но нет слов: какой слог
    попадёт на какую ноту, модель решает, пока поёт, и редактор партитуры
    показать этого не мог. Флажок words на панели ролла -- сначала включён,
    выбор помнит браузер -- рисует слова под нотами голоса по порядку, слог на
    ноту: разделы текста на разделах партитуры, строки раздела режутся там, где
    в мелодии пауза. Слог стоит на строке под своей нотой или строкой ниже,
    пока не кончился предыдущий; первый слог строки жирный, а слово, которое
    продолжается на следующей ноте, кончается дефисом. Строка, в которой слогов
    больше или меньше, чем нот, рисуется оранжевым: лишние слоги стоят вместе
    под её последней нотой, под каждой нотой без слога -- чёрточка, а сведения
    над роллом считают строки: words fit или 23 of 33 lines fit, и
    остальные названы в подсказке. Слова раскладываются заново после каждой
    правки нот, после прогона и при смене слов на ноде, так что строку можно
    подогнать под фразу, а фразу -- под строку, прежде чем что-то спето.
    Рисуются они в окнах YuE2 Generate Song, YuE2 Render Plan и
    YuE2 Transcribe и в Notes... у YuE2 Edit Track. Слова, пришедшие по
    проводу, видны после одного прогона. Партитура, в которой не назван ни один
    раздел, -- какой её отдаёт YuE2 Load MIDI -- остаётся без слов: её слова
    раскладываются по мелодии только при пении. В пении ничего не меняется:
    слова -- это картинка партитуры и текста, и каждый seed поёт как раньше.
    См. Редактор партитуры.
  • Измерено до того, как это было построено, на 28 песнях, английских и
    русских: Qwen3-ForcedAligner слушал отделённый голос по разделам, а слово
    считалось, только если второе прослушивание ставило его на ту же ноту. YuE2
    пишет ноту на каждый слог: под собственными словами модели в 154 строках из
    184 нот ровно столько же, сколько слогов. В таких строках слово спето на
    ноте, под которой оно нарисовано, в 92 случаях из 100 в песнях, спетых для
    замера, в 84 в песнях, которые пак хранил, и в 91 под другими словами той
    же длины, а в пределах одной ноты -- в 99 во всех трёх. В строках с лишними
    слогами -- в 65, с лишними нотами -- в 57: там модель поёт по-своему,
    поэтому такие строки помечаются, а не угадываются. Слова, нарисованные по
    услышанному, лучше бы не были: два прослушивания одной песни сходились в
    ноте для 71-78 слов из 100.
  • Слоги, нарезанные для рисунка (yue2_comfy/syllables.py): слово
    делится на куски собственных букв, которые поются, -- русское по гласным,
    английское по правилам для немой e, -ed и -es, сокращений и слов,
    которые в песнях укорачивают. 448 английских песенных слов, сосчитанных
    руками, выходят верно все. Счёт, по которому слова раскладываются по
    MIDI-мелодии, -- другой, и он оставлен как был.

YuE2-ComfyUI 0.12.1

Choose a tag to compare

@github-actions github-actions released this 09 Oct 20:15

Added

  • Text on the node. A user who rewrites lyrics dozens of times asked to
    type them on the node, as on any other. A Text on node switch beside
    Edit song... and Edit lyrics... shows text boxes instead of the summary:
    ComfyUI's own style and lyrics boxes on YuE2 Generate Song,
    YuE2 Plan and YuE2 Plan Batch, the lyrics growing with the node; on
    YuE2 Transcribe and YuE2 Load MIDI a lyrics box that keeps what is
    typed as Apply does, for the recording or file it was typed on, under a
    line saying whether the node sends on its own lyrics or the edit. A box
    whose input is wired stays hidden. The switch is off at first and kept in
    the node's properties, not in a widget, so saved workflows do not change
    and the widget values keep their places. Delete, Backspace and Ctrl+Z in a
    box stay with the box.
  • Windows that size and fill the tab. The song editor, the score editor
    and the track window are dragged larger or smaller from any edge or
    corner, and a square button at the top right fills the browser tab. The
    size is remembered for each kind of window, and no window shrinks below
    what its content needs.
  • The song editor opens as it was left. Edit as text is remembered, so
    lyrics edited again and again are one click away, and the text box takes
    the window's whole height instead of sixteen lines. The style folds into
    one line to give the lyrics more.
  • The track window gives its height to the wave once it has a height of
    its own, and the words column beside it has a splitter that remembers its
    width.

Fixed

  • A token count that arrived after Edit as text was pressed drew the
    text box anew under the person typing: the caret jumped to the start, and
    what was typed next landed there. The answer now repaints the count alone.
  • The piano roll ran over the status line in a short browser window. The
    roll had a floor of its own while the part of the window holding it could
    shrink to nothing, so the roll and its scroll bar covered "No changes...".
    The floor now sits on the part that holds the roll.

Добавлено

  • Текст прямо на ноде. Пользователь, который правит слова десятки раз,
    попросил печатать их на ноде, как в любой другой. Переключатель
    Text on node рядом с Edit song… и Edit lyrics… показывает вместо
    сводки текстовые поля: на YuE2 Generate Song, YuE2 Plan и
    YuE2 Plan Batch -- собственные поля ComfyUI style и lyrics, и поле
    текста растёт вместе с нодой; на YuE2 Transcribe и YuE2 Load MIDI --
    поле слов, которое хранит набранное так же, как Apply, для той записи или
    того файла, на которых его набрали, а строка над ним говорит, что отдаёт
    нода: свои слова или правку. Поле, к которому подведён провод, не
    показывается. Сначала переключатель выключен; он хранится в свойствах
    ноды, а не в виджете, поэтому сохранённые воркфлоу не меняются и значения
    виджетов остаются на своих местах. Delete, Backspace и Ctrl+Z внутри поля
    работают с текстом, а не с графом.
  • Окна тянутся и разворачиваются на всю вкладку. Редактор песни, редактор
    партитуры и окно трека можно тянуть за любой край или угол, а квадратная
    кнопка в правом верхнем углу разворачивает окно на всю вкладку браузера.
    Размер запоминается для каждого вида окна, а меньше, чем нужно
    содержимому, окно не становится.
  • Редактор песни открывается таким, каким его оставили. Edit as text
    запоминается, так что к словам, которые правят снова и снова, ведёт один
    клик, а поле текста занимает всю высоту окна вместо шестнадцати строк.
    Стиль сворачивается в одну строку, чтобы отдать место словам.
  • Окно трека отдаёт высоту волне, как только у него появляется своя
    высота, а у колонки слов рядом появился разделитель, который помнит её
    ширину.

Исправлено

  • Счётчик токенов, пришедший после нажатия Edit as text, рисовал поле
    текста заново прямо под пальцами: курсор прыгал в начало, и то, что
    печаталось дальше, попадало туда. Теперь ответ обновляет только счётчик.
  • Пиано-ролл наезжал на строку состояния в невысоком окне браузера. Нижний
    предел высоты стоял у самого ролла, а часть окна, в которой он лежит, могла
    сжаться до нуля, и ролл вместе с полосой прокрутки закрывал «No changes…».
    Теперь предел стоит у этой части окна.

YuE2-ComfyUI 0.12.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 16:51

Added

  • The language a song is sung in, on YuE2 Transcribe (language,
    auto at first): a name or a code, and several with commas. Left to tell
    the language itself, Qwen3-ASR wrote a Russian duet the pack sang down as an
    English translation ("Look out the window, there's a rich light..."); told
    the language, it cannot. A song in several languages is told the first one
    the speech model knows that is not English: told English, it translated the
    rest, while told Russian it left the English lines English, on three songs
    the pack sang in both. A name that is no language is refused before the run;
    one the speech model does not know, such as Ukrainian, is left for it to
    tell, with a notice; and the node says when the language the speech model
    names and the letters of its words disagree. The caption ends on the
    language the words were heard in.
  • A second hearing (second_hearing, off at first): Whisper large-v3
    turbo hears the words again, and the language model in model writes the
    lyrics from both hearings, taking each word from whichever makes sense.
    Measured on the node with Qwen3.6-27B Q5, the share of words wrong went from
    0.152 to 0.094 on four real Russian songs and from 0.478 to 0.040 on three
    Russian songs the pack sang -- one of them the speech model had written down
    in English -- while English songs stayed about where they were, 0.091 and
    0.086, and songs in two languages did not change. The answer is checked
    before it is used and set aside, with the reason, when it runs much longer
    or shorter than the hearings or brings in words neither has; the caption
    says how many words came from Whisper. With language at auto, Whisper
    also names the language from the whole song, and Qwen3-ASR hears the song
    again when its words are not in it. It costs a 1.62 GB download (MIT) once
    and 10 to 17 seconds a run on an RTX 5090, and the language model is loaded
    once for both the choice and the layout. See
    YuE2 Transcribe.
  • Whisper, the pack's own implementation (yue2_comfy/whisper/), in plain
    torch, its decoding step replayed from a CUDA graph and checked against the
    plain step as Qwen3-ASR's is. Checked against transformers 5.8: every thirty
    seconds both decoded greedily from the same point gave the same tokens, 78
    of 78, and fourteen songs took 8.9 s against 41.8. Unload Models releases
    it, and with low_vram it takes turns with the speech model on the card.

Changed

  • Template 8, Cover a song, hears the words twice: second_hearing is
    on, and its note says what that costs and where to turn it off.

Fixed

  • The last stage on RTX 20 and GTX 16 cards runs in FP16 now. In BF16,
    which neither of torch's streaming attention kernels takes below Ampere,
    its attention fell to one that builds the whole matrix: 15 minutes of a
    99-second song on an RTX 2060 SUPER in one user's log, and a longer song
    that never finished. In FP16 the streaming kernel takes it, and the card's
    tensor cores do the multiplies. Measured on an RTX 5090 with the stage
    forced down the same path, on five songs of 38 to 312 seconds, each against
    the same stage in FP32: FP16 lay 40 to 45 dB from it, and the BF16 every
    newer card sings 15 to 33 dB, so the older card now renders the more exact
    of the two. low_vram works there too. Newer cards sing every seed as
    before, to the bit. The speed on an RTX 20 card is not measured: there is
    none here.
  • A song cancelled as it started could bring ComfyUI down on the next
    run.
    Cancelled while its step was being recorded as a CUDA graph, about
    a second into Composing, the next run stopped with "address returned by
    cudaMallocAsync already exists in ptr_info", and ComfyUI died after it.
    Under the cudaMallocAsync allocator, ComfyUI's default with CUDA 13, a
    graph let go of before it has ever run gives its memory back while torch
    still counts it as taken. Every graph the pack records -- YuE2's, Qwen3-ASR's
    and Whisper's -- now runs once as soon as it is recorded. A stand that
    cancelled at that moment failed the same way every time and now runs clean;
    songs and recognised words come out the same to the bit.

Добавлено

  • Язык, на котором поют, в YuE2 Transcribe (language, сначала
    auto): название или код, несколько -- через запятую. Если язык не назван,
    Qwen3-ASR определяет его сам и записал русский дуэт, спетый паком, английским
    переводом («Look out the window, there's a rich light...»); с названным языком
    так не бывает. Песне на нескольких языках называется первый неанглийский из
    тех, что знает речевая модель: с названным английским она переводила всё
    остальное, а с названным русским оставляла английские строки английскими --
    на трёх песнях, спетых паком на обоих языках. Имя, которое не язык,
    отклоняется до запуска; язык, которого речевая модель не знает, например
    украинский, она определяет сама, с извещением; а нода говорит, когда язык,
    который называет речевая модель, расходится с буквами её слов. Подпись ноды
    кончается языком, на котором услышаны слова.
  • Второе прослушивание (second_hearing, сначала выключено): Whisper
    large-v3 turbo слушает слова ещё раз, а языковая модель из model пишет
    слова по обоим прослушиваниям, беря каждое слово оттуда, где оно
    осмысленнее. Измерено на ноде с Qwen3.6-27B Q5: доля неверных слов упала с
    0.152 до 0.094 на четырёх настоящих русских песнях и с 0.478 до 0.040 на трёх
    русских песнях, спетых паком, -- одну из них речевая модель записала
    по-английски, -- а английские песни остались почти там же, 0.091 и 0.086, и
    песни на двух языках не изменились. Ответ проверяется перед тем, как его
    взять, и откладывается с причиной, если он заметно длиннее или короче
    прослушиваний или приносит слова, которых нет ни в одном; подпись говорит,
    сколько слов взято у Whisper. При language = auto Whisper ещё и называет
    язык по всей песне, и Qwen3-ASR слушает песню заново, если его слова не на
    этом языке. Это стоит загрузки на 1,62 ГБ (MIT) один раз и 10-17 секунд на
    запуск на RTX 5090, а языковая модель загружается один раз и для выбора, и
    для раскладки. См. YuE2 Transcribe.
  • Whisper -- собственная реализация пака (yue2_comfy/whisper/), на
    чистом torch, с шагом декодирования, записанным CUDA-графом и сверяемым с
    обычным шагом, как у Qwen3-ASR. Сверено с transformers 5.8: все
    тридцатисекундные куски, которые обе декодировали жадно с одной точки, дали
    те же токены, 78 из 78, а четырнадцать песен заняли 8,9 с против 41,8. Unload
    Models его отпускает, а при low_vram он занимает карту по очереди с речевой
    моделью.

Изменено

  • Шаблон 8, Cover a song, слушает слова дважды: second_hearing
    включён, а в заметке сказано, сколько это стоит и где это выключить.

Исправлено

  • Последняя стадия на RTX 20 и GTX 16 теперь идёт в FP16. В BF16,
    которого ни одно из потоковых ядер внимания torch до Ampere не берёт, её
    внимание падало в ядро, строящее всю матрицу: 15 минут на песню в 99 секунд
    на RTX 2060 SUPER в логе одного пользователя, а песня подлиннее не
    закончилась вовсе. В FP16 его берёт потоковое ядро, а умножения делают
    тензорные ядра карты. Замерено на RTX 5090, со стадией, пущенной тем же
    путём, на пяти песнях от 38 до 312 секунд, каждая против той же стадии в
    FP32: FP16 легла от неё в 40-45 дБ, а BF16, которым поёт любая карта новее,
    -- в 15-33 дБ, так что старая карта теперь считает точнее из двух.
    low_vram там тоже работает. Новые карты поют каждый seed как раньше, до
    бита. Скорость на RTX 20 не измерена: такой карты здесь нет.
  • Песня, отменённая на старте, могла уронить ComfyUI на следующем
    прогоне.
    Отменённая, пока её шаг записывался CUDA-графом, примерно через
    секунду после начала Composing, она ломала следующий прогон с «address
    returned by cudaMallocAsync already exists in ptr_info», после чего ComfyUI
    падал. Под аллокатором cudaMallocAsync, который у ComfyUI с CUDA 13 стоит по
    умолчанию, граф, отпущенный до первого запуска, отдаёт свою память, а torch
    всё ещё считает её занятой. Теперь каждый граф пака -- YuE2, Qwen3-ASR и
    Whisper -- один раз запускается сразу после записи. Стенд, отменявший
    ровно в этот момент, падал так каждый раз, а теперь проходит чисто; песни и
    распознанные слова выходят те же до бита.

YuE2-ComfyUI 0.11.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 20:49

Added

  • Chords as notes in the piano roll. A Chords part joins
    Voice | Instrument | Both: every chord symbol stands on the roll as the
    notes it is made of, held until the next chord, laid out as
    Save as MIDI... writes it. A click on an empty place starts a chord of the
    kind the key gives that row; dragging the root moves the chord whole --
    up or down to another root, sideways to another moment -- and dragging its
    right end moves the next one. Dragging any other note, or Ctrl+click on a
    row, changes the chord note by note, and the chord is renamed from its
    notes by the rule YuE2 Load MIDI reads a Chords track with, checked equal
    on 5,340 sets of notes in 30 keys; a set of notes the score has no name for
    is refused. repeats too makes each edit in the other sections of the same
    name that still have this section's chords as well. It was measured before it
    was built: with eight bars of chords changed in three songs at two seeds,
    SheetSage2 heard the new chord on 171 and 161 of the 192 changed beats and
    the old one on 8 and 16, and the voice kept its melody. See
    The score editor.
  • The key as a list. Beside the tempo in the score window, the twelve keys
    of the song's mode, each with the semitones it lies away. Picking one moves
    the whole score there -- both parts, every chord and the key -- as
    transpose does, and Ctrl+Z moves it back. Typing another K: into the ABC
    text never did this: the letters are read again in the new key, so an
    F-sharp in F-sharp minor became an F in A minor.
  • A strings sound for the chords, now what they play in the window unless
    you picked another: three detuned voices, a slow attack and a vibrato that
    comes in late, held the way a string section holds a chord. Like every sound
    in the window it is for your ear only; YuE2 never hears it.
  • Copy, Cut, Paste and Duplicate in the piano roll (issue #9): buttons after
    Undo and Redo, and Ctrl+C, Ctrl+X, Ctrl+V, and Ctrl+D or Ctrl+B. Paste puts
    the copy into the bar the playhead is in, at the same places in the bar, and
    replaces the notes under it; Duplicate puts it right after the selection, and
    again after that, which is the quick way to make a tune longer. A paste past
    the end of the song adds the bars it needs. What is copied follows the part --
    one part's notes, both parts with their chords, or the chords as blocks --
    and the copy is kept for every score window on the page.
  • Keep for new words (issue #10), beside Apply: an edit kept so is sung
    when the lyrics or the style change, instead of a new score being written
    for the new words, and the node says in yellow that the words changed.
    Ticked with nothing edited, it keeps the model's own tune while only the
    words are rewritten. Measured on three songs at two seeds, by the lyrics
    Qwen3-ASR heard in order: words changed within their lines, 0.95, as over a
    new score written for them; every line new, 0.92 against 0.95; a line added
    to each verse, 0.85 against 0.96, because the song keeps the edit's length
    and the chorus after it loses its last line.
  • Template 12, An instrumental: music with no voice in it. YuE2 sings
    whatever the style says, and "instrumental" or "no vocals" there does not
    stop it. The template puts Mothersuperior's instrumental adapter in front of
    the song node, set up as the adapter's card says: AR at 1, cot at full,
    the lyrics [instrumental]. Set up that way it gave 17 songs of 17 with no
    voice, 100 to 180 seconds long; cot at melody, words in the lyrics or an
    AR strength of 0.5 brought the voice back. The adapter is not downloaded by
    the pack: its note says where to get it. See
    Music with no voice.

Changed

  • YuE2 Load MIDI reads a track named Chords chord by chord. With mode
    at full the chords were guessed half a bar at a time from every track, the
    Chords track of a Save as MIDI... file among them, so chords set right by
    ear in a DAW came back as a guess. Such a track is now read where each chord
    begins and named exactly from its notes, and it is neither sung nor played
    as the instrument line. On twelve scores saved and read back, the chords agreed
    beat for beat, 6,314 of 6,314, where the guess agreed on 92.8 percent.
    Files without a Chords track are read as before. See
    YuE2 Load MIDI.
  • An edit typed in the ABC tab stays tied to its words. Any change typed
    there took the mark of the words off, so such an edit was sung with any
    words while one made on the roll was not.
  • A LoRA row that names a bare file finds it in any folder. A row named
    its file by the path under a loras folder, so a template naming a file
    could not know where each person keeps it. A name with no folder in it is
    now also the file of that name in any folder, as long as only one file has
    it; two such files are refused with both paths.

Fixed

  • Keys pressed in the pack's windows no longer reach the graph behind them.
    Ctrl+C, Ctrl+X and Ctrl+V in the score window copied, cut and pasted the
    graph's selected nodes under it, and Ctrl+Z in any of the pack's windows
    undid the last change to the graph as well as the edit. The windows now tell
    ComfyUI they are modal, and the score window keeps the clipboard keys to
    itself; checked against the ComfyUI frontend itself, where Ctrl+Z inside the
    window had taken a node off the graph.
  • Ctrl+Z, Ctrl+Y and Ctrl+A work with a Cyrillic keyboard layout. The
    browser reports those keys by the letter of the layout, and the score window
    knew them only by the Latin one.
  • Chord names no longer run into each other on the chord lane. Two chords
    close together were written over each other, and a click could pick the one
    behind; a name now stops where the next chord begins.

Добавлено

  • Аккорды нотами в piano roll. К Voice | Instrument | Both добавилась
    партия Chords: каждый аккорд стоит на роле нотами, из которых он состоит,
    держится до следующего и разложен так, как его пишет Save as MIDI.... Клик
    по пустому месту ставит аккорд того вида, какой тональность даёт этой строке;
    перетаскивание корня двигает аккорд целиком -- вверх и вниз к другому корню,
    вбок к другому моменту, -- а перетаскивание его правого конца двигает
    следующий. Перетаскивание любой другой ноты или Ctrl+клик по строке меняют
    аккорд по нотам, и аккорд получает имя своих нот -- по тому же правилу, по
    которому YuE2 Load MIDI читает трек Chords, проверено на 5340 наборах нот в
    30 тональностях; набор нот, которому в партитуре нет имени, отклоняется.
    Флажок repeats too повторяет каждую правку в других секциях с тем же
    именем, где ещё стоят аккорды этой секции. Измерено до того, как это
    построено: когда в трёх песнях по два seed изменили аккорды восьми тактов,
    SheetSage2 услышал новый аккорд на 171 и 161 из 192 изменённых долей, а
    старый -- на 8 и 16, и голос сохранил мелодию. См.
    Редактор партитуры.
  • Тональность списком. Рядом с темпом в окне партитуры -- двенадцать
    тональностей лада песни, у каждой -- на сколько полутонов она отстоит. Выбор
    переносит туда всю партитуру -- обе партии, каждый аккорд и тональность, --
    так же, как transpose, а Ctrl+Z возвращает обратно. Вписанный в текст ABC
    другой K: этого никогда не делал: буквы перечитываются в новой
    тональности, и фа-диез в фа-диез миноре становился фа в ля миноре.
  • Звук strings для аккордов -- теперь они звучат им в окне, если вы не
    выбрали другой: три расстроенных голоса, медленная атака и позднее вибрато,
    выдержанные так, как держит аккорд струнная группа. Как и любой звук окна, он
    только для вашего уха; YuE2 его не слышит.
  • Copy, Cut, Paste и Duplicate в piano roll (issue #9): кнопки после Undo и
    Redo и клавиши Ctrl+C, Ctrl+X, Ctrl+V и Ctrl+D или Ctrl+B. Paste кладёт копию
    в такт, где стоит курсор воспроизведения, на те же места в такте, и заменяет
    ноты под ней; Duplicate ставит её сразу за выделением, и ещё раз за ней, --
    так быстрее всего удлинить мелодию. Вставка за конец песни добавляет нужные
    такты. Что копируется, зависит от партии -- ноты одной партии, обе партии с
    аккордами или аккорды блоками, -- а копия общая для всех окон партитуры на
    странице.
  • Keep for new words (issue #10) рядом с Apply: правка с этим флажком поётся,
    когда меняются текст или стиль, вместо новой партитуры под новые слова, а
    нода жёлтой строкой говорит, что слова сменились. Отмеченный без правок,
    флажок держит собственную мелодию модели, пока переписываются только слова.
    Измерено на трёх песнях по два seed, по доле слов, которые Qwen3-ASR услышал
    по порядку: слова, заменённые внутри строк, -- 0,95, как и на новой
    партитуре для них; все строки новые -- 0,92 против 0,95; строка, добавленная в
    каждый куплет, -- 0,85 против 0,96, потому что песня сохраняет длину правки и
    следующий припев теряет последнюю строку.
  • Шаблон 12, An instrumental: музыка без голоса. YuE2 поёт, что бы ни
    было написано в стиле, и "instrumental" или "no vocals" там её не
    останавливают. Шаблон ставит перед нодой песни инструментальный адаптер от
    Mothersuperior, включённый так, как сказано в его карточке: AR на 1, cot
    на full, в тексте [instrumental]. Так он дал 17 песен из 17 без голоса
    длиной от 100 до 180 секунд; cot на melody, слова в тексте или сила AR
    0,5 голос возвращали. Пак адаптер не скачивает: в заметке шаблона сказано,
    где его взять. См. Музыка без голоса.

Изменено

  • YuE2 Load MIDI читает трек по имени Chords аккорд за аккордом. При
    mode = full аккорды угадывались по половинам тактов из всех треков, в
    том числе из трека Chords файла от Save as MIDI..., так что аккорды,
    поправленные на слух в DAW, возвращались догадкой. Теперь такой трек
    читается ...
Read more

YuE2-ComfyUI 0.10.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 19:35

Added

  • A list of language models to write with, and a window to keep it.
    YuE2 Write Song and YuE2 Transcribe offered only the GGUFs already on the
    machine -- on most machines the one 4B the pack downloads for itself, which a
    video review of the pack took for all it could use. The model list now
    also offers eight models from the pack's own list, from Qwen3.5-9B to
    Gemma 4 26B-A4B and Qwen3.8-27B, each marked on disk or with its download
    size, and with the card it needs; one that is not here downloads on the first
    run that picks it. Model list... on both nodes opens the list: add a model
    from Hugging Face or a file on this machine, edit, delete, bring back the
    pack's entries, and Check it before saving -- a file on this machine is
    read, a file on Hugging Face is looked up and its size filled in, and a
    repository alone lists its models to pick from. The list is kept in
    ComfyUI/user/yue2_comfy/writers.json and outlives updates; an update adds
    the pack's new entries without bringing back ones you deleted. A workflow
    saved with any label an entry has had keeps running, and an open graph
    follows every edit. See The model list.

Changed

  • A GGUF copied into a model folder appears without restarting ComfyUI.
    The folders were read once per process; they are read again whenever the
    list is more than two seconds old, which costs about 4 ms.
  • What cannot write is no longer offered as a writer: embedding models and
    the draft heads some repositories ship to speed a model up, told apart by
    their headers rather than their names.
  • A model that is gone is refused when the workflow is queued, with the
    reason, instead of ComfyUI's "Value not in list".

Fixed

  • Models split into parts are offered even when their first part holds no
    tensors.
    Three such models sat in one real model folder and had never
    appeared: the check for a cut-off download took the header-only first part
    for one. A split model is listed once, with the size of all its parts, and
    one picked from the list downloads every part.

Добавлено

  • Список языковых моделей для текстов и окно, чтобы его вести.
    YuE2 Write Song и YuE2 Transcribe предлагали только GGUF, уже лежащие на
    машине, -- на большинстве машин это одна 4B, которую пак качает сам, и в
    видеообзоре пака её приняли за всё, чем он умеет пользоваться. Теперь список
    model предлагает ещё восемь моделей из списка пака, от Qwen3.5-9B до
    Gemma 4 26B-A4B и Qwen3.8-27B, с пометкой on disk или размером закачки и с
    нужной картой; модель, которой здесь нет, качается при первом запуске, который
    её выбрал. Model list… на обеих нодах открывает список: добавить модель с
    Hugging Face или файл с этой машины, поправить, удалить, вернуть записи пака и
    перед сохранением нажать Check it -- файл на этой машине читается, файл на
    Hugging Face ищется в репозитории и его размер подставляется, а по одному
    репозиторию показываются его модели на выбор. Список хранится в
    ComfyUI/user/yue2_comfy/writers.json и переживает обновления; обновление
    добавляет новые записи пака и не возвращает удалённые вами. Workflow,
    сохранённый с любой подписью, которая была у записи, продолжает работать, а
    открытый граф следует за каждой правкой. Подробнее -- в
    Списке моделей.

Изменено

  • GGUF, скопированный в папку моделей, появляется без перезапуска
    ComfyUI.
    Папки читались один раз за процесс; теперь они перечитываются,
    когда списку больше двух секунд, и это стоит около 4 мс.
  • То, что не умеет писать, больше не предлагается писателем: модели
    эмбеддингов и «головы» для ускорения, которые кладут в репозитории рядом с
    моделью. Их узнают по заголовку, а не по имени.
  • Модель, которой больше нет, отклоняется при постановке workflow в
    очередь
    с понятной причиной вместо «Value not in list» от ComfyUI.

Исправлено

  • Модели, разрезанные на части, предлагаются, даже если в первой части нет
    тензоров.
    Три такие модели лежали в настоящей папке моделей и ни разу не
    появлялись в списке: проверка недокачанного файла принимала первую часть, в
    которой один заголовок, за обрезанную. Разрезанная модель показывается один
    раз, с размером всех частей, а выбранная из списка качает все части.