Files
ManySkills/plugins/eapil-voice/skills/eapil-voice/SKILL.md
T

4.1 KiB

name, description
name description
eapil-voice Build, test or use EAPIL audio API calls for speech design and cloning, transcription, denoising, music, sound effects and lyric-conditioned songs; includes sequential batch speech export.

EAPIL audio service

Use the hosted service at https://ades.playones.com, or the deployment chosen by the user. Keep the historical skill/plugin ID for compatibility; this guide covers the whole audio service.

Need Route Read when relevant
Describe a voice and speak text /v1/voice/design Speech
Ordinary Qwen text reading /v1/voice/synthesize Speech
Clone from reference speech /v1/voice/clone Speech
Transcribe speech /v1/asr/transcribe ASR and enhancement
MossFormer2 enhancement / alias /v1/audio/enhance, /v1/audio/denoise ASR and enhancement
RE-USE denoising /v1/audio/reuse ASR and enhancement
Instrumental music or sound effects /v1/audio/music, /v1/audio/sfx Stable Audio
Songs from lyrics or ABC arrangement /v1/audio/music/yue2 Yue2
Directory-scale ASR/clone/export Sequential calls Batch audio

Read transport and errors for client integration or troubleshooting. Consult /openapi.json and /models when deployment facts matter; a registered route or healthy service does not prove a model can infer. Dated evidence is in verification. Read only the mode needed.

Call the actual contract

Use AUDIO_API_BASE and AUDIO_API_TOKEN; old QWEN3_VOICE_API_BASE_URL and OPENAI_API_KEY remain fallback aliases. Explicit flags take precedence. An available legacy key is not proof of authorization on this deployment. Inference requires Bearer authentication; health/models are public. Obtain missing credentials from the provider without putting them in chat or tracked files.

Speech design/synthesis, music/SFX and Yue2 take JSON. Clone, ASR and enhancement use multipart with file field file; let the client create the boundary. Audio success is complete WAV bytes, not JSON/Base64/a URL or inference streaming. ASR returns JSON. Preserve explicit false/0; keep provider and endpoint controls separate.

call_voice_api.py makes one validated request. Existing command names remain; new commands are reuse, music, sfx, yue2. Dry run prints the payload without a key/network call, so share only synthetic inputs. Resolve the actual skill directory:

python '<skill-dir>/scripts/call_voice_api.py' design --text '你好。' --instruct '温暖自然、清晰的女声。' --language Chinese --max-tokens 512 --out voice.wav
python '<skill-dir>/scripts/call_voice_api.py' asr --file speech.wav --language zh

Prefix external commands with rtk proxy in this repository.

Verify and deliver

Check status/media type and complete WAV structure, then verify what matters: spoken content, accurate reference transcript, intelligibility/noise or musical content/duration. A valid WAV alone does not prove voice similarity or listening quality. Read actual rate/channels from the header; MP3 requires local transcoding.

Do not invent transcripts from filenames, manufacture speech after empty ASR, silently rewrite requested text or treat ASR timestamps as source separation. Punctuation normalization, gain and overlays apply only when requested.

Requests wait for the final result. There is no job ID, polling/cancel endpoint or idempotency key. Timeout/504 may leave inference running: do not automatically resubmit. Keep calls sequential initially; only an explicit busy rejection is eligible for bounded backoff.

Return usable local audio, endpoint/provider and limitations. In Codex, preview delivered audio with an absolute path. Record actual coverage; keep credentials, probe outputs and private transcripts outside the repository.