Text to Speech API — Batch, 30+ Languages, Pay per Character avatar

Text to Speech API — Batch, 30+ Languages, Pay per Character

Pricing

from $5.00 / 1,000 100 characters, standard voices

Go to Apify Store
Text to Speech API — Batch, 30+ Languages, Pay per Character

Text to Speech API — Batch, 30+ Languages, Pay per Character

Text-to-speech (TTS) API: turn one or many texts into MP3 or WAV voiceover files and get, for each text, a dataset item with the audio URL, duration and character count. English, French, Spanish, German and 30+ languages, auto-detected. No API key, pay per character.

Pricing

from $5.00 / 1,000 100 characters, standard voices

Rating

0.0

(0)

Developer

Sherwood

Sherwood

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

3

Monthly active users

3 days ago

Last modified

Share

Text to Speech API — batch, 36 languages, pay per character

Give it one text or a thousand, get one voice-over file per text (MP3 or WAV) and, if you ask for it, a subtitle file (SRT or VTT) timed on the audio. One dataset item per text: the audio URL, its duration, the character count, the price tier used, or a clear error. English, French, Spanish, Italian, Portuguese, Hindi, Japanese and Chinese run on Kokoro (standard: fast, cheap); German, Dutch, Polish, Arabic, Korean and 28 other languages run on MiniMax Speech 2.8 with natural voices (premium). Language is detected automatically, per text. No API key, no subscription. From $0.05 per 1,000 characters, failures are free.

Built for automation and AI agents: every input alias is accepted (texts, text, prompts, prompt, sentences), nothing is required, and the default input runs on its own so you can see the output shape before sending your own texts.

What you get

One item per text, in your dataset:

{
"index": 1,
"text": "Bienvenue dans notre boutique. Votre commande a été expédiée.",
"characters": 61,
"outputUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/speech-0001.mp3",
"subtitlesUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/speech-0001.srt",
"subtitlesError": null,
"durationMs": 4310,
"format": "mp3",
"language": "French",
"tier": "standard",
"voice": "ff_siwis",
"model": "fal-ai/kokoro/french",
"processingMs": 3800,
"status": "ok",
"error": null
}

A text that fails (empty, over 5,000 characters, model error) comes back with "status": "error" and the reason in error. It is never charged. subtitlesUrl is null unless you ask for subtitles.

Use cases

  • Voice product descriptions, notifications or order updates in the customer's language.
  • Turn articles, scripts or lessons into audio versions in bulk.
  • Generate voice-overs with captions for short videos (TikTok, Shorts, Reels) from a content calendar.
  • Give an AI agent a single call that turns a list of lines into a list of audio files.

Input

FieldTypeDefaultNotes
textsarraytwo sample sentencesUp to 5,000 characters each. For a single text, use text.
text, prompts, prompt, sentencesaliases—Merged with texts.
languageauto or a language nameautoDetected per text when auto. Eight languages run on the standard model, the others on premium (see Languages).
voicefemale, male, or a model voice idfemaleKokoro ids for standard (af_heart, am_michael, bf_emma, ff_siwis, ef_dora, if_sara, pf_dora, hf_alpha, jf_alpha, zf_xiaoxiao…); MiniMax ids for premium (Wise_Woman, Deep_Voice_Man, Friendly_Person…). A Kokoro id from another language falls back to that language's default voice.
qualitystandard, premiumstandardpremium forces MiniMax for every text, with pauses <#1.5#> and tags like (laughs).
speed0.5 to 2.01.0
outputFormatmp3, wavmp3MP3 at 64 kb/s mono (about 80 KB for 10 seconds) or 16-bit WAV, for both tiers.
generateSubtitlesbooleanfalseOne SRT or VTT file per text, timed on the generated audio.
subtitleFormatsrt, vttsrtSRT works everywhere (CapCut, Premiere, YouTube); VTT is for web players.
subtitleGranularitysentence, wordsentenceword gives one cue per word, for animated captions.
maxTextsinteger200Stop after this many texts.

Minimal call:

{ "texts": ["Your package has been delivered.", "Votre colis a été livré."] }

With captions for a video:

{ "texts": ["Three tips to sleep better tonight."], "generateSubtitles": true, "subtitleGranularity": "word" }

Languages

Standard (Kokoro): English (American and British voices), French, Spanish, Italian, Portuguese (Brazilian voices), Hindi, Japanese, Chinese (Mandarin). Kokoro has one French voice, female: a male French text is voiced by the premium model.

Premium (MiniMax): all 36 languages: English, French, Spanish, German, Italian, Portuguese, Dutch, Polish, Russian, Turkish, Arabic, Hindi, Japanese, Korean, Chinese (Mandarin), Cantonese, Indonesian, Malay, Vietnamese, Thai, Swedish, Danish, Norwegian, Finnish, Greek, Czech, Slovak, Romanian, Hungarian, Ukrainian, Bulgarian, Croatian, Slovenian, Catalan, Hebrew, Afrikaans.

Each text is detected on its own when language is auto; Malay and Cantonese must be forced, because detection cannot tell them apart from Indonesian and Mandarin. A language detected outside this list is still voiced by the premium model, which then detects it itself. Close languages can be confused (Croatian is often detected as Slovenian): force language when you know it. The tier field of every item tells you which model, and which price, was used.

Subtitles

generateSubtitles: true adds speech-0001.srt (or .vtt) next to each audio file and puts its URL in subtitlesUrl. Cues are timed by Whisper on the delivered audio, with your text passed as a guide so the words match your script. If the subtitles fail, the audio is still delivered and subtitlesError says why; only produced files are charged.

Pricing

Charged per started 100 characters of text actually voiced:

  • Standard (Kokoro, 8 languages) — $0.005 per 100 characters, i.e. $0.05 per 1,000.
  • Premium (MiniMax, 36 languages) — $0.012 per 100 characters, i.e. $0.12 per 1,000.
  • Subtitles — $0.005 per subtitle file.
  • Failed texts and failed subtitles: free.

Set a maximum cost per run in Apify and the Actor stops cleanly when it is reached; remaining texts are reported, not processed.

Via API, n8n, Make or MCP

Call it like any Apify Actor: POST https://api.apify.com/v2/actors/sherwood~text-to-speech-batch/run-sync-get-dataset-items with the JSON input above, or add it as a tool through the Apify MCP server. Results are plain dataset items, so get-dataset-items returns the URLs directly.

Limits

  • 5,000 characters per text; split longer scripts into paragraphs (one item each).
  • Generation is typically 2 to 6 seconds per text, plus 2 to 4 seconds when subtitles are on; the standard model can take longer on its first call of a run while it warms up. 4 texts are processed in parallel.
  • Output files live in the run's key-value store and follow your account's data retention.