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.