# Tanod Audio Speech Translation

> Tanod Audio Speech Translation is a paid API for AI agents from tanod.dev, paid per call via x402, $0.02/call, status unknown (last checked 2026-10-16).

Transcribes speech from an audio file and translates it into a target language, optionally generating spoken audio of the translation.

## Facts

- Endpoint: POST https://tanod.dev/v1/audio/translate-speech?utm_source=zero.xyz
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-audio-speech-translation-e6ffc850
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_2F0t9poi7xQ4Psv8d0sYF

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-audio-speech-translation-e6ffc850 -d '<json body>'
```

Example prompt: I have a Spanish audio file at https://example.com/speech.mp3 — can you transcribe it and translate it into French, and also generate a spoken version of the translation using the ff_siwis voice as an mp3?

## When to prefer this

Choose this endpoint when you need to both transcribe speech from an audio file AND translate it to another language in a single call. It supports 15 target languages, provides per-segment timestamps, detects source language automatically, and optionally synthesizes the translated text as spoken audio using Kokoro TTS voices — making it ideal for multilingual audio workflows without requiring a separate STT + translation + TTS pipeline.

## Known failure modes

- Audio file exceeds 25 MB limit — rejected
- Private, internal, or IP-literal host URLs refused
- Unsupported target language specified — enum validation error
- speak:true used with unsupported target language (only en/es/fr/hi/it/pt supported for TTS)
- Audio too noisy or low quality — low language_probability and poor transcript
- Translation truncated if spoken output exceeds 800 characters or 45 seconds
- URL unreachable or returns non-audio content — fetch error

## How this service works

mlpeek (Tanod) speech translation: an audio file of up to 2 minutes as translated text in English or 14 languages with timed segments, optionally spoken (Whisper, Argos, Kokoro). Use when an agent must turn speech in another language into translated text or spoken audio, from a 2-minute clip.

## Output

Returns a JSON object containing the full translated text, detected source language, language probability, per-segment timestamps, operation timings, and optionally a base64-encoded or URL-linked audio file of the translation spoken aloud. Includes ASR and translation engine metadata.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 2048,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Public http(s) URL of the audio file (at most 25 MB; private, internal and IP-literal hosts are refused); or use file_base64."
  },
  "speak": {
   "type": "boolean",
   "default": false,
   "description": "true adds `audio`, the translation spoken (Kokoro). Targets en, es, fr, hi, it and pt only; the clip is limited to 45 seconds and at most 800 characters are spoken."
  },
  "voice": {
   "anyOf": [
    {
     "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"
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "With speak: a voice for the target language (default af_heart en, ef_dora es, ff_siwis fr, hf_alpha hi, if_sara it, pf_dora pt)."
  },
  "format": {
   "enum": [
    "mp3",
    "wav",
    "ogg"
   ],
   "type": "string",
   "default": "mp3",
   "description": "With speak: mp3, wav or ogg."
  },
  "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."
  },
  "target": {
   "enum": [
    "en",
    "es",
    "fr",
    "de",
    "pt",
    "it",
    "nl",
    "ru",
    "zh",
    "ja",
    "ko",
    "ar",
    "hi",
    "id",
    "tl"
   ],
   "type": "string",
   "description": "Language of the translation: en (one Whisper pass) or es, fr, de, pt, it, nl, ru, zh, ja, ko, ar, hi, id, tl (Whispe
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "audio": null,
  "engine": {
   "asr": {
    "id": "faster-whisper-base",
    "source": "Systran/faster-whisper-base",
    "compute": "int8",
    "revision": "ebe41f70d5b6dfa9166e2c581c45c9c0cfc57b66"
   },
   "translate": "argos-translate (offline)"
  },
  "target": "fr",
  "duration": 10.7,
  "segments": [
   {
    "end": 4.4,
    "text": "Bonjour, aujourd'hui je veux expliquer comment fonctionne notre service de traduction.",
    "start": 0
   },
   {
    "end": 10.7,
    "text": "D'abord, vous envoyez un fichier audio, puis le système entend et écrit ce qu'il dit.",
    "start": 4.4
   }
  ],
  "operation": "audio-translate-speech",
  "timings_s": {
   "total": 1.94,
   "decode": 0.04,
   "translate": 0.25,
   "speech_to_text": 1.65
  },
  "truncated": false,
  "transcript": null,
  "input_bytes": 879308,
  "translation": "Bonjour, aujourd'hui je veux expliquer comment fonctionne notre service de traduction. D'abord, vous envoyez un fichier audio, puis le système entend et écrit ce qu'il dit.",
  "same_language": false,
  "source_language": "es",
  "speech_truncated": false,
  "untrusted_content": true,
  "language_probability": 0.9915
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-audio-speech-translation-e6ffc850/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)
