# Tanod mlpeek Text-to-Speech

> Tanod mlpeek Text-to-Speech is a paid API for AI agents from tanod.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-29).

Converts text to spoken audio using Kokoro TTS, returning MP3/WAV/OGG audio in base64 or as a download URL

## Facts

- Endpoint: POST https://tanod.dev/v1/audio/speak?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-29
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-mlpeek-text-to-speech-cfaa3041
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_kyV812IIs_5iv1hkEmuDJ

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tanod-mlpeek-text-to-speech-cfaa3041 -d '<json body>'
```

Example prompt: Can you convert this text to speech using a warm female US English voice at normal speed and give me back the audio as an MP3: 'Welcome to our platform, we're glad you're here.'

## When to prefer this

Choose this endpoint when you need offline, pay-per-call TTS synthesis with a wide selection of voices across six languages (US English, UK English, Spanish, French, Hindi, Italian, Brazilian Portuguese) and flexible output modes (base64 inline or 24-hour URL). Prefer it over cloud-dependent TTS services when latency and privacy matter, or when you need tight per-call cost control at $0.005 USDC with no signup required.

## Known failure modes

- Text exceeds 2000 character limit — request rejected
- Speed outside 0.5–2.0 range — validation error
- Unsupported voice identifier provided — enum validation error
- Text not written in the voice's expected language — degraded or garbled output
- Invalid format or output enum value — schema error
- Service temporarily unavailable — HTTP 5xx
- Payment not processed — HTTP 402 if x402 payment fails

## How this service works

Text to speech API: offline speech in 41 voices and 6 languages (English, Spanish, French, Hindi, Italian, Portuguese), MP3, WAV or Ogg audio (Kokoro-82M, CPU) (mlpeek, Tanod). Use when an agent must turn text into spoken audio in English, Spanish, French, Hindi, Italian or Portuguese.

## Output

Returns a JSON object containing the audio encoded as base64 (default) or a temporary download URL valid for 24 hours, along with metadata: voice used, engine name (kokoro-82m offline), format, duration in seconds, sample rate (24000 Hz), byte count, character count, speaking speed, and content type.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "text": {
   "type": "string",
   "maxLength": 2000,
   "minLength": 1,
   "description": "Text to speak, 1 to 2,000 characters, in the language of the chosen voice (English, Spanish, French, Hindi, Italian or Brazilian Portuguese)."
  },
  "speed": {
   "type": "number",
   "default": 1,
   "maximum": 2,
   "minimum": 0.5,
   "description": "Speaking rate, 0.5 to 2.0 (1.0 is normal)."
  },
  "voice": {
   "enum": [
    "af_heart",
    "af_alloy",
    "af_aoede",
    "af_bella",
    "af_jessica",
    "af_kore",
    "af_nicole",
    "af_nova",
    "af_river",
    "af_sarah",
    "af_sky",
    "am_adam",
    "am_echo",
    "am_eric",
    "am_fenrir",
    "am_liam",
    "am_michael",
    "am_onyx",
    "am_puck",
    "am_santa",
    "bf_alice",
    "bf_emma",
    "bf_isabella",
    "bf_lily",
    "bm_daniel",
    "bm_fable",
    "bm_george",
    "bm_lewis",
    "ef_dora",
    "em_alex",
    "em_santa",
    "ff_siwis",
    "hf_alpha",
    "hf_beta",
    "hm_omega",
    "hm_psi",
    "if_sara",
    "im_nicola",
    "pf_dora",
    "pm_alex",
    "pm_santa"
   ],
   "type": "string",
   "default": "af_heart",
   "description": "Voice (41): the first letter is the language: a US English (af_heart default, af_bella, am_adam), b UK English (bf_emma, bm_george), e Spanish (ef_dora), f French (ff_siwis), h Hindi (hf_alpha, hm_omega), i Italian (if_sara, im_nicola), p Brazilian Portuguese (pf_dora, pm_alex); f = female, m = male. Write the text in the voice's language."
  },
  "format": {
   "enum": [
    "mp3",
    "wav",
    "ogg"
   ],
   "type": "string",
   "default": "mp3",
   "description": "Audio format: mp3, wav (16-bit PCM) or ogg (Opus)."
  },
  "output": {
   "enum": [
    "base64",
    "url"
   ],
   "type": "string",
   "default": "base64",
   "description": "base64 (default): the file comes back inline as base64. url: the file is stored for 24 hours and the reply carries a download link (url, expires_at, bytes, content_type, sha256) instead of the base64, which keeps the file out of your context window."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "bytes": 21504,
  "chars": 22,
  "speed": 1,
  "voice": "af_heart",
  "engine": "kokoro-82m (offline)",
  "format": "mp3",
  "duration_s": 1.34,
  "data_base64": "//uQxAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAAFAAAEEAA...",
  "sample_rate": 24000,
  "content_type": "audio/mpeg"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-mlpeek-text-to-speech-cfaa3041/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from tanod.dev](https://www.zero.xyz/host/tanod.dev/llms.txt)
