Digital Singer
/install digital-singer
🎤 Digital Singer — NuwaAI Avatar Singing
Turn your NuwaAI digital avatar into a singing performer with lip-synced mouth movements.
How It Works
Audio files → FFmpeg PCM conversion → NuwaAI humanctrl avatar messages → Avatar sings with lip-sync
+ Browser \x3Caudio> plays accompaniment in sync
Key concept: Two audio streams work together:
- speech (vocal-only): Drives the avatar's mouth movements via NuwaAI
avatarcontrol messages - music (accompaniment): Plays simultaneously via browser
\x3Caudio>element
Battle Flow
- Avatar greets user, lists available songs
- User picks a song
- Avatar sings the upper half (vocal drives lip-sync + accompaniment plays in sync)
- Avatar says "your turn" → accompaniment for lower half plays → user sings along (ASR captures voice)
- Battle scoring + blind box reward
- Ask to continue
User Preparation (What You Need Before Using)
1. NuwaAI Account (Required)
Sign up at nuwaai.com (free) and create a digital avatar. You need:
- API Key — from your NuwaAI dashboard
- Avatar ID — the avatar you want to sing
- User ID — your NuwaAI user ID
Enter these in the browser interface, or pre-configure in .nuwa-config.json:
{
"avatarId": "your-avatar-id",
"apiKey": "your-api-key",
"userId": "your-user-id"
}
2. LLM API (Required)
The singing host (conversation agent) needs an OpenAI-compatible LLM API. Configure in server.mjs or via environment variables:
DASHSCOPE_BASE_URL— API endpoint (default: Dashscope)DASHSCOPE_API_KEY— API keyQWEN_MODEL— Model name (default:qwen-plus)
3. Song Audio Files (Required)
Each song needs 3 audio files placed in the skill directory:
| File | Purpose | Example |
|---|---|---|
{song}高潮上清唱.wav |
Upper half vocal (a cappella) — drives avatar lip-sync | 十年高潮上清唱.wav |
{song}高潮上伴奏.MP3 |
Upper half accompaniment — plays in sync with avatar | 十年高潮上伴奏.MP3 |
{song}高潮下伴奏.MP3 |
Lower half accompaniment — plays when user sings | 十年高潮下伴奏.MP3 |
How to prepare these files:
- Use any audio editing tool (e.g. Audacity, Adobe Audition) to split songs into upper/lower halves
- Use vocal separation tools (e.g. UVR, Demucs) to extract a cappella (vocal-only) from the upper half
- Export accompaniment as MP3, vocal as WAV (any FFmpeg-supported format works)
- Place all files in the skill directory (same folder as
server.mjs)
4. Song Registry (Required)
After preparing audio files, register each song in server.mjs SONGS object:
const SONGS = {
"十年": {
artist: "陈奕迅",
acappella_upper: "十年高潮上清唱.wav",
accomp_upper: "十年高潮上伴奏.MP3",
accomp_lower: "十年高潮下伴奏.MP3",
},
// Add more songs...
};
5. FFmpeg (Required)
Install FFmpeg for audio format conversion:
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg
6. Node.js 18+ (Required)
node --version # must be >= 18
Quick Start
- Complete all preparation steps above
- Copy example song files from
assets/songs/to the skill directory:
This includes a ready-to-use demo song: 十年 (陈奕迅) with vocal, upper and lower accompaniment files.cp \x3Cskill-dir>/assets/songs/* \x3Cskill-dir>/ - Start the server:
node \x3Cskill-dir>/server.mjs - Open
http://localhost:3098in browser - Enter NuwaAI credentials (if not pre-configured)
- Pick a song and start singing!
Included Example Song
The skill ships with one demo song in assets/songs/:
十年高潮上清唱.wav— vocal (a cappella)十年高潮上伴奏.MP3— upper half accompaniment十年高潮下伴奏.MP3— lower half accompaniment
Copy them to the skill root directory to use. The song "十年" is pre-registered in server.mjs.
NuwaAI Integration
Uses humanctrl WebSocket with ASR enabled. Avatar control message format:
{
"type": "avatar",
"data": {
"content": "",
"audio": {
"segment": 0,
"speech": "\x3Cbase64 PCM>",
"music": "\x3Cbase64 PCM>"
}
}
}
speech: Vocal-only PCM driving lip-sync (≤10KB per chunk)music: Same as speech for a cappella modesegment: Chunk index, -1 = last chunk- Audio: 16kHz mono PCM, base64 encoded
Features
- 🎤 Avatar lip-sync singing via NuwaAI humanctrl
- 🎵 Synchronized accompaniment playback
- 🗣️ ASR voice capture for user singing
- 🎯 Fun battle scoring system
- 🎁 Blind box rewards
- ⏸️ Interruptible speech (not during singing)
- 📱 Responsive web interface
Requirements
- Node.js 18+
- FFmpeg (for audio → PCM conversion)
- NuwaAI account with avatar
- Modern browser (WebRTC + microphone)
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install digital-singer - After installation, invoke the skill by name or use
/digital-singer - Provide required inputs per the skill's parameter spec and get structured output
What is Digital Singer?
Turn your NuwaAI digital avatar into a singing performer! The avatar sings with lip-synced mouth movements driven by vocal audio, with synchronized backgroun... It is an AI Agent Skill for Claude Code / OpenClaw, with 75 downloads so far.
How do I install Digital Singer?
Run "/install digital-singer" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Digital Singer free?
Yes, Digital Singer is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Digital Singer support?
Digital Singer is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Digital Singer?
It is built and maintained by jianglingling007 (@jianglingling007); the current version is v1.3.0.