lyra-studio / README.md
hkblockchaintechnology's picture
LYRA update: anthem 《香港嘅女孩》 + 2:29 showcase reel + HQ 44.1k audio
eaca2c2 verified
|
Raw History Blame Contribute Delete
4.6 kB
---
library_name: lyra-studio
license: apache-2.0
language: [yue, zh, en]
tags: [text-to-image, text-to-speech, music-generation, lip-sync, virtual-idol, cantonese, cantopop, digital-human]
---
# 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)
```python
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 sets
> `PYTHONSAFEPATH=1` (hides your script dir). Current `torchaudio` demands TorchCodec, so YuE's
> four save/load sites were patched to `soundfile`.
## ⚖️ 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 Voice `yue`
- **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.