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)
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install digital-singer - 安装完成后,直接呼叫该 Skill 的名称或使用
/digital-singer触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
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... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 75 次。
如何安装 Digital Singer?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install digital-singer」即可一键安装,无需额外配置。
Digital Singer 是免费的吗?
是的,Digital Singer 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Digital Singer 支持哪些平台?
Digital Singer 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Digital Singer?
由 jianglingling007(@jianglingling007)开发并维护,当前版本 v1.3.0。