HE-L2M
Hierarchical Editable Lyric-to-Melody Generation with Structural Conditioning

Accepted at ACM MM 2026
Framework

Lyric-to-melody generation is an important yet highly challenging task in automatic songwriting. We study the problem of editable lyric-to-melody generation, motivated by the iterative nature of real-world music creation, where lyrics and melodies are frequently revised while preserving surrounding musical context. However, existing methods primarily focus on generation from scratch and lack support for flexible editing, leaving this problem under-explored. In this paper, we propose HE-L2M, a novel hierarchical editable lyric-to-melody generation framework that provides a unified formulation for lyric-to-melody generation and editing by modeling melody editing as a lyric-conditioned infilling problem, enabling flexible modifications across multiple structural levels (word, phrase, sentence, section, and song) while maintaining global musical coherence and accurate lyric-melody alignment. Specifically, we introduce a hierarchical lyric-melody alignment modeling approach to capture accurate lyric-melody alignment, and develop a lyric-conditioned melody infilling Transformer that leverages bidirectional melodic contexts via a reordered decoding strategy. We further incorporate structural conditioning with reference phrases and phrase-level musical attributes to enhance controllability and structural consistency, and adopt a curriculum learning strategy to effectively train the model across diverse hierarchical editing tasks. Extensive experiments demonstrate that HE-L2M achieves superior performance in both melody generation and editing across objective and subjective evaluations. We have publicly released a subset of our high-quality lyric–melody dataset, including fine-grained alignment annotations and structural labels, to support future research.


Hierarchical Editing
Our HE-L2M supports flexible multi-level editing (word, phrase, sentence, section, and song) under user-specified modifications (lyric revisions, melody refinements, and musical attribute adjustments), while preserving global musical coherence and accurate lyric-melody alignment.
Lyric Revisions

Demo 1:

Original song
Lyrics:

<Verse>
当故事慢慢都被讲成回忆 爱情它渐渐的沦为成伤心
如果剧情早已经是注定 又何必再费力气
曾经的你现在会是在哪里 此刻的你是否还在想起
美好的回忆像电影划过 为何就此的放手
<Chorus>
如果说你说爱我时说的那么用心 那么说在你离开我时走的太狠心
你走了以后我还在这里 只是一个被遗弃的道具
如果说你给了太多忘不了的甜蜜 错只错在分开时抱你抱的太用力
我走了以后你还在这里 和他开始了另一场电影
🎹 Melody:
🎤 Singing:
Word-level editing
Lyrics:

<Verse>
当故事慢慢都被讲成回忆 爱情它渐渐的沦为成伤心
如果剧情早已经是注定 又何必再费力气
曾经的你现在会是在哪里 此刻的你是否还总会想起
美好的回忆像电影划过 为何就此的放手
<Chorus>
如果说你说爱我时说的那么用心 那么说在你离开我时走的太狠心
你走了以后我还在这里 只是一个被遗弃的道具
如果说你给了太多忘不了的甜蜜 错只错在分开时抱你抱的太用力
我走了以后你还在这里 和他开始了另一场电影
🎹 Melody:
🎤 Singing:
Phrase-level editing
Lyrics:

<Verse>
当故事慢慢都被讲成回忆 爱情它渐渐的沦为成伤心
如果剧情早已经是注定 又何必再费力气
曾经的你现在会是在哪里 你是否还记得过去的我们
美好的回忆像电影划过 为何就此的放手
<Chorus>
如果说你说爱我时说的那么用心 那么说在你离开我时走的太狠心
你走了以后我还在这里 只是一个被遗弃的道具
如果说你给了太多忘不了的甜蜜 错只错在分开时抱你抱的太用力
我走了以后你还在这里 和他开始了另一场电影
🎹 Melody:
🎤 Singing:
Sentence-level editing
Lyrics:

<Verse>
当故事慢慢都被讲成回忆 爱情它渐渐的沦为成伤心
如果剧情早已经是注定 又何必再费力气
曾经的你笑着说我是唯一 后来的我哭着信了这命运
如果誓言注定会下落不明 又何必说得那么好听
<Chorus>
如果说你说爱我时说的那么用心 那么说在你离开我时走的太狠心
你走了以后我还在这里 只是一个被遗弃的道具
如果说你给了太多忘不了的甜蜜 错只错在分开时抱你抱的太用力
我走了以后你还在这里 和他开始了另一场电影
🎹 Melody:
🎤 Singing:
Section-level editing
Lyrics:

<Verse>
当故事慢慢风干成回忆 爱情也渐渐凝结成伤心 如果剧情早注定是别离 又何必再苦等回音 从前的你现在又在哪里 这一刻你是否还会想起 美好像电影无声地放映 为何却松开了手心
<Chorus>
如果说你说爱我时说的那么用心 那么说在你离开我时走的太狠心 你走了以后我还在这里 只是一个被遗弃的道具 如果说你给了太多忘不了的甜蜜 错只错在分开时抱你抱的太用力 我走了以后你还在这里 和他开始了另一场电影
🎹 Melody:
🎤 Singing:
Lyrics:

<Verse>
当故事慢慢都被讲成回忆 爱情它渐渐的沦为成伤心 如果剧情早已经是注定 又何必再费力气 曾经的你现在会是在哪里 此刻的你是否还在想起 美好的回忆像电影划过 为何就此的放手
<Chorus>
你说爱我时总是说得那么用心 为何离开时你却走得那么狠心 你走了以后我就站在原地 像一个被遗弃的孤单道具 你给过我太多那忘不了的甜蜜 错只错在分开时抱你都太用力 我走了以后你仍守在这里 陪他悄悄上演另一场电影
🎹 Melody:
🎤 Singing:
Song-level editing
Lyrics:

<Verse>
往事它慢慢风干成遗憾 眼泪也渐渐习惯了孤单
若缘分早就写好了那答案 又何必再苦苦纠缠
此刻的你会停留在哪站 是否偶尔也翻看过片段
曾闪光的画面像碎纸飘散 为何你轻易就转弯
<Chorus>
若当初你说爱我的语气是那么温暖 为何转身离开时的背影却那么冷淡
你走了以后我停在原地等 活成了那一个多余的背景
若当初你给了我那么多发光的甜意 错只错在分开时我抱你抱得太用力
我走了以后你还在那屋檐 和他写下另一页新的开篇
🎹 Melody:
🎤 Singing:

Demo 2:

Original song
Lyrics:

<Verse>
我真的想要相信你 无关和她暧昧关系
你又何必去苦苦解释 那衣领上的唇印
我真的想好好爱你 爱到不再睁开眼睛
可是在心底总抹不去 你那说谎的表情
<Insertion>
不是不愿清醒 只是脑中太多回忆
何不痛快承认 这一场戏 已到了结局
<Chorus>
别口是心非 掩饰你的罪 反覆安慰 直到我崩溃
越说得甜美 越在我的背后 为所欲为
别口是心非 说已经后悔 你的安慰 只让人心碎
流一滴眼泪 装饰你的慈悲 受骗的是谁
🎹 Melody:
🎤 Singing:
Word-level editing
Lyrics:

<Verse>
我真的想要相信你 无关和她暧昧关系
你又何必去苦苦解释 那衣领上的唇印
我真的想好好爱你 爱到不再睁开眼睛
可是在心底总抹不去 你那说谎的表情
<Insertion>
不是不愿清醒 只是脑中太多回忆
何不痛快承认 这一场戏 已到了结局
<Chorus>
别口是心非 掩饰你的罪 反覆安慰 直到我崩溃
越说得甜美 越在我的背后 为所欲为
别口是心非 说已经后悔 你的安慰 只让人心碎
流一滴眼泪 装饰你的慈悲 被玩弄的是谁
🎹 Melody:
🎤 Singing:
Phrase-level editing
Lyrics:

<Verse>
我真的想要相信你 无关和她暧昧关系
你又何必去苦苦解释 那衣领上的唇印
我真的想好好爱你 爱到不愿再清醒
可是在心底总抹不去 你那说谎的表情
<Insertion>
不是不愿清醒 只是脑中太多回忆
何不痛快承认 这一场戏 已到了结局
<Chorus>
别口是心非 掩饰你的罪 反覆安慰 直到我崩溃
越说得甜美 越在我的背后 为所欲为
别口是心非 说已经后悔 你的安慰 只让人心碎
流一滴眼泪 装饰你的慈悲 受骗的是谁
🎹 Melody:
🎤 Singing:
Sentence-level editing
Lyrics:

<Verse>
我真的想要相信你 无关和她暧昧关系
你又何必去苦苦解释 那衣领上的唇印
我真的想好好爱你 爱到不再睁开眼睛
可是在心底总抹不去 你那说谎的表情
<Insertion>
不是不愿清醒 只是脑中太多回忆
不如就干脆放手 这场梦 早该到尽头
<Chorus>
别口是心非 掩饰你的罪 反覆安慰 直到我崩溃
越说得甜美 越在我的背后 为所欲为
别口是心非 说已经后悔 你的安慰 只让人心碎
流一滴眼泪 装饰你的慈悲 受骗的是谁
🎹 Melody:
🎤 Singing:
Section-level editing
Lyrics:

<Verse>
我多想再信你一场 无关她身上的芬芳
你又何必反复说谎 衣领唇印怎么隐藏
我多想爱你到天荒 爱到闭眼不再张望
可心里有道墙无法忘 是你撒谎时的模样
<Insertion>
不是不愿清醒 只是脑中太多回忆
何不痛快承认 这一场戏 已到了结局
<Chorus>
别口是心非 掩饰你的罪 反覆安慰 直到我崩溃
越说得甜美 越在我的背后 为所欲为
别口是心非 说已经后悔 你的安慰 只让人心碎
流一滴眼泪 装饰你的慈悲 受骗的是谁
🎹 Melody:
🎤 Singing:
Song-level editing
Lyrics:

<Verse>
我真的快信你以为 无关她那些是与非
你又何必反复去挽回 那领口边的香水味
我真的想陪你到黑 爱到连梦都不破碎
可惜心底总有一根刺 是你那说谎的眼神
<Insertion>
不是不懂放手 只是回忆太厚
不如干脆认了 这一场梦 早就该剧终
<Chorus>
别嘴上甜蜜 藏心里算计 你的欺骗 让我快窒息
你说得越美 背对我越虚伪 放肆狼狈
别嘴上忏悔 说已经枯萎 你的靠近 只让我更累
掉一滴眼泪 装你的慈悲 上当的是谁
🎹 Melody:
🎤 Singing:

Demo 3:

Original song
Lyrics:

<Verse>
流水潺潺牧笛悠悠几许风在吹
古道巷陌看不尽憔悴
残院深深断垣层层斑驳谁的泪
满地荒叶片片沉默了年岁
<Chorus>
道离别离别时重温酒一杯
就算粉身碎骨我也不后悔
说伤悲伤悲后笑着化成灰
北风吹落花美无悔
🎹 Melody:
🎤 Singing:
Word-level editing
Lyrics:

<Verse>
流水潺潺牧笛悠悠几许风在吹
古道巷陌写满憔悴
残院深深断垣层层斑驳谁的泪
满地荒叶片片沉默了年岁
<Chorus>
道离别离别时重温酒一杯
就算粉身碎骨我也不后悔
说伤悲伤悲后笑着化成灰
北风吹落花美无悔
🎹 Melody:
🎤 Singing:
Phrase-level editing
Lyrics:

<Verse>
流水潺潺牧笛悠悠几许风在吹
古道巷陌看不尽憔悴
残院深深断垣层层斑驳谁的泪
满地荒叶片片沉默了年岁
<Chorus>
道离别离别时重温酒一杯
纵然万劫不复我也奉陪
说伤悲伤悲后笑着化成灰
北风吹落花美无悔
🎹 Melody:
🎤 Singing:
Sentence-level editing
Lyrics:

<Verse>
流水潺潺牧笛悠悠几许风在吹
古道巷陌看不尽憔悴
空庭黯黯朽壁离离霜凝谁的悔
碎叶萧萧葬送了光阴
<Chorus>
道离别离别时重温酒一杯
就算粉身碎骨我也不后悔
说伤悲伤悲后笑着化成灰
北风吹落花美无悔
🎹 Melody:
🎤 Singing:
Section-level editing
Lyrics:

<Verse>
流水潺潺牧笛悠悠几许风在吹
古道巷陌看不尽憔悴
残院深深断垣层层斑驳谁的泪
满地荒叶片片沉默了年岁
<Chorus>
敬离愁离愁后摔碎这酒杯
纵使万劫不复我亦不皱眉
将心碎碾成粉扬了随风吹
寒枝抖落残红无怨无悔
🎹 Melody:
🎤 Singing:
Song-level editing
Lyrics:

<Verse>
流水无声牧笛已冷风吹旧柴门
古道尽头爬满憔悴的皱纹
残墙半塌断瓦层层苔痕锁泪痕
满地荒叶替岁月守着孤坟
<Chorus>
若离别先饮尽这杯断肠酒
哪怕碎成灰我也绝不回首
若伤悲就让我笑着烧成秋
北风卷落花不回头也无悔
🎹 Melody:
🎤 Singing:


Iterative Songwriting Editing Demo

Starting from the original song, this demo illustrates a practical iterative songwriting workflow. The user progressively refines lyrics, lyric-to-note alignment, rhythm, and pitch, while preserving the surrounding musical context. Each stage provides both audio playback and the corresponding MIDI file.

Original Lyrics
<Verse>
风花雪月孤独终老 春雨淋湿那座荒岛
寂寞却把我紧紧围绕
玫瑰开在冬季多好 留下美丽瞬间死掉
我陷入时间不对的牢
<Chorus>
怎奈何旧人哭新人笑 泪在掉却忘不了
曾经我对你也还算挺重要
我只能不打扰别嘲笑 只剩孤独的拥抱
轻信你的话会陪我到老
🎤 Original Singing
🎹 Original Melody
Stage 1: Phrase-level Lyric Refinement
Edit: polish one lyric phrase in context ("留下美丽瞬间死掉" → "用一瞬美丽换枯萎死掉").
🎤 Singing
🎹 Melody
Stage 2: Word-level Alignment Editing
Edit: change the alignment of one word ("开") from one-to-one lyric-to-note alignment (one note) to one-to-many alignment (two notes).
🎤 Singing
🎹 Melody
Stage 3: Sentence-level Rhythm Editing
Edit: adjust the rhythm within a sentence ("玫瑰开在冬季多好,用一瞬美丽换枯萎死掉").
🎤 Singing
🎹 Melody
Stage 4: Section-level Pitch Editing
Edit: adjust the chorus pitch while preserving the lyrics and rhythm.
🎤 Singing
🎹 Melody