LYRA — an AI-native Cantopop idol
莉拉 · 一個喺機器入面出世嘅香港女仔
LYRA is an original AI-native character, built end-to-end on a single GPU by a studio of specialist models cooperating like a small animation/music house — the same methodology behind characters like Yuri (AI.TALK), not a copy of one.
She is a Hong Kong girl chasing her dream to become a Cantopop star, who exists to give positive energy back to the people of Hong Kong.
The lesson we took from the reference: the moat is not the models — everyone has the models. The moat is forming a character: one face, one voice, one tone, one timeline, never drifting. One bible drives every specialist. See
character/studio_core.py.
🎬 Watch — assets/video/lyra_showcase.mp4 (2:29)
| # | Song | Video |
|---|---|---|
| 1 | 《霓虹裡的我》 Me in the Neon — 58.7 s | neon_me_mv.mp4 |
| 2 | 《香港嘅女孩》 The Hong Kong Girl — 84.3 s | hongkong_girl_mv.mp4 |
| ★ | Both, back to back | assets/video/lyra_showcase.mp4 |
Each is a title card → LYRA lip-syncing her own sung vocal → full Cantopop song. All 44.1 kHz.
| Asset | Path |
|---|---|
| 🎬 Showcase / MVs | assets/video/lyra_showcase.mp4, neon_me_mv.mp4, hongkong_girl_mv.mp4 |
| 🎞️ Isolated performances | assets/video/lyra_perf_song1.mp4, lyra_perf_song2.mp4 |
| 🗣️ Talking clip | assets/video/lyra_talk_sig.mp4 |
| 🎵 Songs (44.1k) | assets/music/song1_mix.mp3, song2_mix.mp3 |
| 🎤 Stems | song1_vocal.wav / song1_instrumental.wav (+ song2) |
| 🎨 Renders (10) | assets/img/*.png |
| 🗣️ Cantonese voice lines | assets/audio/*.wav |
Lyrics — 《香港嘅女孩》
我係香港嘅女孩 追住嗰道光 / 就算跌低 都要唱落去 我係香港嘅女孩 唔怕天黑 / 因為我哋一齊 就會有光
👥 The studio (one GPU, five departments)
| Dept | Model | Role |
|---|---|---|
| 🧠 Director | Qwen2.5-VL-7B-Instruct | writes lyrics, scripts, shot prompts; judges |
| 🎨 Concept Artist | Qwen-Image 20B | renders her face, outfits, scenery, title cards |
| 🧑🎨 Vision Critic | Qwen2.5-VL-7B-Instruct | scores each frame vs the bible, returns fixes |
| 🗣️ Voice Actor | Qwen3-TTS 1.7B + HK-Cantonese LoRA (jmtl/hk-cantonese-cc0-qwen3-tts) |
true Hong Kong Cantonese |
| 🎵 Composer | YuE 7B + 1B | lyrics-to-song, dedicated Cantonese tag |
| 🎞️ Animator | Wav2Lip | lip-sync to her own voice |
| ✂️ Editor | ffmpeg | title card + performance + song |
Self-improving loop: the Critic's fixes are fused back into the prompt and persisted
(character/refinements.json) — she sharpens every run.
Verified, not assumed: her Cantonese was round-tripped through Whisper — intended
我唔係真人,但我一樣會唱到你心入面。 returned as 我不是真人但我一样会唱到你心里面.
🧬 Her bible (single source of truth)
CHARACTER = {
"name": "LYRA", "home": "Hong Kong", "look_age": "19",
"primary_language": "Cantonese (yue-HK)",
"dream": "to become a Cantopop star",
"mission": "to give positive energy back to the people of Hong Kong",
"values": ["resilience", "warmth", "home", "never stop believing"],
"origin": "grew up in a Mong Kok walk-up, watching the harbour lights from the rooftop",
}
🛠️ Reproduce
scripts/setup_voice.sh → merge_voice.sh → setup_music.sh → yue_sing.sh →
setup_lipsync.sh → studio_daemon.py → edit_mv.sh
Traps we hit: molab exports
PYTHONPATH(breaks every isolated venv — clear it) and setsPYTHONSAFEPATH=1(hides your script dir). Currenttorchaudiodemands TorchCodec, so YuE's four save/load sites were patched tosoundfile.
⚖️ Credits & licenses
No model weights are shipped here — artefacts and orchestration code only.
- Qwen-Image, Qwen2.5-VL-7B, Qwen3-TTS-12Hz-1.7B — Apache-2.0 (Qwen/Alibaba)
- hk-cantonese-cc0-qwen3-tts LoRA — Apache-2.0 (
jmtl), CC-0 Common Voiceyue - YuE — see upstream licence · Wav2Lip — research/non-commercial · ffmpeg — LGPL/GPL
LYRA is an original fictional character. Not Yuri, not affiliated with AI.TALK, not a likeness of any real person. Released as a technical demo.