Repository navigation
Releases: pytraveler/YuE2-ComfyUI
Release list
YuE2-ComfyUI 0.14.1
Fixed
YuE2 Edit Tracksang 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 asSing 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
Added
-
Part of a song in another style.
Style...in the track window of
YuE2 Edit Tracksings 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; orNew 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 downorAn 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 asstyle. 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
editsonYuE2 Edit Trackdescribesrestyle, 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
Fixed
- Switching
audiooff onYuE2 Edit Trackopened another song. The
square besideaudioswitches the input off, and the node then edits the
song named in its hiddensong_keyfield. OnlySaved songs...wrote that
field, so a user who edited a song fromLoad 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 toaudio
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 withSaved 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
pressReset trackor 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 toaudio. Its button
was greyed out then, and the window explained that the square on the node
had to be unticked first. The button now readsSwitch '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
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 offersThirty-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
Fixed
YuE2 Edit Tracklost 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
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. Awordsbox 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, or23 of 33 lines fitwith 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 ofYuE2 Generate Song,YuE2 Render Plan
andYuE2 Transcribeand inNotes...ofYuE2 Edit Track. Lyrics that
arrive through a wire are shown after one run. A score that names no
section, asYuE2 Load MIDIhands 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,-edand-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
Added
- Text on the node. A user who rewrites lyrics dozens of times asked to
type them on the node, as on any other. AText on nodeswitch beside
Edit song...andEdit lyrics...shows text boxes instead of the summary:
ComfyUI's ownstyleandlyricsboxes onYuE2 Generate Song,
YuE2 PlanandYuE2 Plan Batch, the lyrics growing with the node; on
YuE2 TranscribeandYuE2 Load MIDIa 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 textis 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 textwas 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-- собственные поля ComfyUIstyleиlyrics, и поле
текста растёт вместе с нодой; наYuE2 TranscribeиYuE2 Load MIDI--
поле слов, которое хранит набранное так же, как Apply, для той записи или
того файла, на которых его набрали, а строка над ним говорит, что отдаёт
нода: свои слова или правку. Поле, к которому подведён провод, не
показывается. Сначала переключатель выключен; он хранится в свойствах
ноды, а не в виджете, поэтому сохранённые воркфлоу не меняются и значения
виджетов остаются на своих местах. Delete, Backspace и Ctrl+Z внутри поля
работают с текстом, а не с графом. - Окна тянутся и разворачиваются на всю вкладку. Редактор песни, редактор
партитуры и окно трека можно тянуть за любой край или угол, а квадратная
кнопка в правом верхнем углу разворачивает окно на всю вкладку браузера.
Размер запоминается для каждого вида окна, а меньше, чем нужно
содержимому, окно не становится. - Редактор песни открывается таким, каким его оставили.
Edit as text
запоминается, так что к словам, которые правят снова и снова, ведёт один
клик, а поле текста занимает всю высоту окна вместо шестнадцати строк.
Стиль сворачивается в одну строку, чтобы отдать место словам. - Окно трека отдаёт высоту волне, как только у него появляется своя
высота, а у колонки слов рядом появился разделитель, который помнит её
ширину.
Исправлено
- Счётчик токенов, пришедший после нажатия
Edit as text, рисовал поле
текста заново прямо под пальцами: курсор прыгал в начало, и то, что
печаталось дальше, попадало туда. Теперь ответ обновляет только счётчик. - Пиано-ролл наезжал на строку состояния в невысоком окне браузера. Нижний
предел высоты стоял у самого ролла, а часть окна, в которой он лежит, могла
сжаться до нуля, и ролл вместе с полосой прокрутки закрывал «No changes…».
Теперь предел стоит у этой части окна.
YuE2-ComfyUI 0.12.0
Added
- The language a song is sung in, on
YuE2 Transcribe(language,
autoat 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 inmodelwrites 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. Withlanguageatauto, 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 withlow_vramit takes turns with the speech model on the card.
Changed
- Template 8, Cover a song, hears the words twice:
second_hearingis
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_vramworks 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=autoWhisper ещё и называет
язык по всей песне, и 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
Added
- Chords as notes in the piano roll. A
Chordspart 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 ruleYuE2 Load MIDIreads 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
transposedoes, and Ctrl+Z moves it back. Typing anotherK: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,cotatfull,
the lyrics[instrumental]. Set up that way it gave 17 songs of 17 with no
voice, 100 to 180 seconds long;cotatmelody, 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 MIDIreads a track named Chords chord by chord. Withmode
atfullthe chords were guessed half a bar at a time from every track, the
Chords track of aSave 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 alorasfolder, 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, возвращались догадкой. Теперь такой трек
читается ...
YuE2-ComfyUI 0.10.0
Added
- A list of language models to write with, and a window to keep it.
YuE2 Write SongandYuE2 Transcribeoffered 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. Themodellist 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 markedon diskor 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.jsonand 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.
Исправлено
- Модели, разрезанные на части, предлагаются, даже если в первой части нет
тензоров. Три такие модели лежали в настоящей папке моделей и ни разу не
появлялись в списке: проверка недокачанного файла принимала первую часть, в
которой один заголовок, за обрезанную. Разрезанная модель показывается один
раз, с размером всех частей, а выбранная из списка качает все части.