This skill is for building low-cost, high-immersion voice assets for games and interactive worlds.
It treats voice as part of the world model, not just a final rendering step.
You can use it to give each NPC:
Generate:
with one consistent NPC voice.
Use the same NPC voice but adjust line style based on:
This makes the world feel reactive without needing fully hand-authored voice libraries.
Use AudioClaw ASR to transcribe a player's spoken line, then generate a relation-aware NPC reply.
This is the bridge from:
to:
Generate voiced lines for:
Generate short lore or ambient narration using one narrator voice or one faction-specific voice.
Define the NPC profile:
voice_idChoose one of two paths:
scripts/senseaudio_asr.py, then build NPC reply lines from the transcriptDefine the current scene:
Run either scripts/build_npc_scene_manifest.py or scripts/build_npc_reply_from_player.py.
Review the generated lines.
Run scripts/batch_tts_scene.py with the fixed voice_id.
voice_id.vc-..., and can be passed directly with --clone-voice-id.vc-..., scene synthesis now auto-routes to SenseAudio-TTS-1.5.If the user wants to hear the NPC lines directly in Feishu or AudioClaw, run scripts/send_npc_scene_to_feishu.py, or add --send-feishu-audio to scripts/run_player_voice_npc_pipeline.py.
.mp3 lines into .ogg/.opus and sends them one by one as real audio messages.scripts/run_player_voice_npc_pipeline.py can now take either --input-audio or --input-text, so ongoing NPC dialogue does not need to drop back to text just because the player typed instead of speaking.Attach the resulting assets to your runtime, editor tooling, or content review flow.
Use this skill as a mode-based session.
Recommended user trigger:
text
进入 NPC 模式,用 $senseaudio-game-npc-director。
NPC:雾港档案官阿砚
关系:trusted
地点:北码头
目标:找回失踪账册
clone voice_id:your_clone_voice_id
后面我发语音,你都按这个设定回复。
After mode entry, the agent should keep session state with:
voice_idvoiceFor each new player turn:
scripts/run_player_voice_npc_pipeline.py --input-audio ....scripts/run_player_voice_npc_pipeline.py --input-text ... so the reply stays on the same voice pipeline.--send-feishu-audio so the generated NPC lines are sent one by one as Feishu audio messages.NPC mode should be sticky inside the same session:
If the user asks to switch voice, only swap the configured voice_id; keep the same NPC profile and relationship state.
voice_id hereFor the NPC generation side of this skill:
SENSEAUDIO_API_KEYPractical rule:
scripts/batch_tts_scene.py and scripts/run_player_voice_npc_pipeline.py now default to SENSEAUDIO_API_KEYSENSEAUDIO_API_KEY as a login token such as v2.public..., the shared bootstrap replaces it with the real sk-... value from ~/.audioclaw/workspace/state/senseaudio_credentials.json before the TTS stage startsscripts/build_npc_scene_manifest.py
scripts/senseaudio_asr.py
sense-asr-deepthink modelscripts/build_npc_reply_from_player.py
scripts/run_player_voice_npc_pipeline.py
--input-audio, --input-text, --stream-asr, --clone-voice-id, and --send-feishu-audioscripts/batch_tts_scene.py
scripts/send_npc_scene_to_feishu.py
references/npc_voice_design.md
references/asr_player_loop.md