Scrapers / Developer & File Tools

Text to Speech
hipersoft/text-to-speech
Convert any text to natural-sounding speech as an MP3 download. 300+ premium neural voices across 70+ languages, adjustable rate, pitch and volume. Great for voiceovers, videos, accessibility and audio content. No setup.
Total users
22Monthly users
5Total runs
278Per audio generated
$0.01Last rebuilt
Oct 26, 2026Overview
Turn any text into natural-sounding speech and get a ready-to-use MP3. Powered by premium neural voices — 300+ voices across 70+ languages — with adjustable speed, pitch and volume. Perfect for video voiceovers, YouTube/TikTok, audiobooks, accessibility, IVR and e-learning. No account, no API key.

Features
- 🎙️ 300+ neural voices — lifelike male & female voices in 70+ languages and accents
- 🌍 Multilingual — English (US/UK/AU/…), Spanish, French, German, Portuguese, Hindi, Japanese, Chinese, Arabic and many more
- 🎚️ Full control — adjust speaking rate, pitch and volume
- 📥 MP3 output — a downloadable audio file per run, in your chosen quality
- 📝 Any length — long text is auto-chunked and joined into one seamless file
- 🔎 Voice browser — list every voice, or filter to one language/accent (e.g. only Spanish, only British English)
- ⚡ Fast & free voices — no API key, no per-voice licensing
Browse & filter voices by language
Set List voices only to true to get the full catalog instead of audio. Add Filter by language / locale to narrow it — by language (es, ja, de) or by exact locale/accent (en-GB, pt-BR, es-MX):
{ "listVoicesOnly": true, "language": "es" }

Each voice row looks like:
{
"shortName": "es-MX-DaliaNeural",
"language": "es",
"locale": "es-MX",
"gender": "Female",
"name": "Microsoft Dalia Online (Natural) - Spanish (Mexico)"
}
Output schema
| Field | Type | Description |
|---|---|---|
shortName |
string | Voice short name to paste into the voice field (e.g. es-MX-DaliaNeural). |
locale |
string | Full locale/accent code of the voice (e.g. es-MX). |
gender |
string | Voice gender (Male or Female). |
name |
string | Human-friendly display name of the voice. |
language |
string | Language code of the voice (e.g. es). |
When synthesizing audio, each run instead returns the input text, the voice used, characters, audioBytes, a direct audioUrl to the MP3 and its format.
Copy the shortName into the Voice field to synthesize with it. Leave the language filter empty to see all 300+ voices across 70+ languages.
What you get
{
"text": "Hello! This is a natural sounding neural voice…",
"voice": "en-US-AriaNeural",
"characters": 61,
"audioBytes": 40320,
"audioUrl": "https://api.apify.com/v2/key-value-stores/<id>/records/audio.mp3",
"format": "audio-24khz-48kbitrate-mono-mp3"
}
The MP3 is saved to the run's key-value store — download it from audioUrl.
Input
{
"text": "Welcome to our channel. Today we'll explore…",
"voice": "en-US-GuyNeural",
"rate": "+10%",
"pitch": "+0Hz"
}
| Field | Description |
|---|---|
text |
The text to convert (any length). |
voice |
Voice short name (e.g. en-GB-SoniaNeural). Use listVoicesOnly to see all. |
rate / pitch / volume |
Speaking rate, pitch and volume. |
format |
MP3 quality. |
listVoicesOnly |
Output the voice catalog instead of synthesizing. |
language |
When listing voices, filter to one language or locale (e.g. es, en-GB, ja). |
Use cases
- Video voiceovers — narration for YouTube, TikTok, Reels, explainers
- Audiobooks & articles — turn text into listenable audio
- Accessibility — read-aloud versions of your content
- IVR & assistants — generate phone/system prompts
- E-learning — narrated lessons in many languages
FAQ
Do I need an API key? No. Just provide text and get an MP3 — no account or key required.
How many voices and languages are there?
300+ neural voices spanning 70+ languages and regional accents. Run with listVoicesOnly: true to get the full list.
How do I find voices for a specific language?
Run with listVoicesOnly: true and set language to a code like es (all Spanish), en-GB (British English) or ja (Japanese). You'll get just the matching voices, each with its shortName, locale, gender and friendly name. Then paste the shortName into the voice field.
What languages are supported? English (US, UK, AU, IN, CA…), Spanish (ES, MX, AR…), Portuguese (BR, PT), French, German, Italian, Dutch, Polish, Russian, Arabic, Hindi, Japanese, Korean, Chinese (Mandarin & Cantonese), Turkish, Vietnamese, Thai, Indonesian and many more — 70+ in total.
Can it handle long text? Yes. Long text is automatically split into chunks and merged into a single MP3.
Can I change the speed or pitch?
Yes — set rate (e.g. +15%), pitch (e.g. -10Hz) and volume.
Where's the audio file?
Saved to the run's key-value store; the output record includes a direct audioUrl to download the MP3.
Can I integrate this with other tools? The Text to Speech Actor can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. It works with Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API, JavaScript/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.
Notes
You are responsible for the text you submit and for complying with applicable terms and licensing for its use. This is an independent tool; generated audio is provided as-is.
Input
| Field | Type | Description |
|---|---|---|
textText | string | The text to convert to speech. Long text is automatically split and joined into one audio file. |
voiceVoice | string | Voice short name, e.g. en-US-AriaNeural, en-US-GuyNeural, en-GB-SoniaNeural, es-ES-ElviraNeural, fr-FR-DeniseNeural, de-DE-KatjaNeural, ja-JP-NanamiNeural, hi-IN-SwaraNeural. Set listVoicesOnly to browse all 300+. Default: "en-US-AriaNeural" |
rateSpeed | string | Speaking rate, e.g. -20%, +0%, +25%. Default: "+0%" |
pitchPitch | string | Voice pitch, e.g. -10Hz, +0Hz, +20Hz. Default: "+0Hz" |
volumeVolume | string | Volume, e.g. +0%, -20%, +50%. Default: "+0%" |
formatAudio format | string · audio-24khz-48kbitrate-mono-mp3, audio-24khz-96kbitrate-mono-mp3, audio-48khz-96kbitrate-mono-mp3, audio-16khz-32kbitrate-mono-mp3 | MP3 quality. Default: "audio-24khz-48kbitrate-mono-mp3" |
listVoicesOnlyList voices only | boolean | Instead of synthesizing, output the catalog of available voices (shortName, language, locale, gender, name). Combine with 'Filter by language' to narrow it down. Default: false |
languageFilter by language / locale | string | When listing voices, return only voices for this language or locale. Examples: es (all Spanish), en-GB (British English), ja (Japanese), pt-BR (Brazilian Portuguese). Leave empty to list every voice. |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~text-to-speech/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello! This is a natural sounding neural voice, generated from your text."
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/text-to-speech").call(run_input={
"text": "Hello! This is a natural sounding neural voice, generated from your text."
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/text-to-speech').call({
"text": "Hello! This is a natural sounding neural voice, generated from your text."
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Audio generated One MP3 audio file generated from your text | $0.01 | $0.005 |
| Characters (per 1,000) Per 1,000 characters of text synthesized | $0.005 | $0.005 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Bulk Image Downloader
Download thousands of images from a list of URLs and store each in the key-value store with a public link. Returns content type, size, dimensions and SHA-256 per image. Bulk-ready. Great for datasets, backups and media pipelines.
8,102 runs · 103 users · $0.056 / url processedGoogle Maps Email Extractor
Search Google Maps for businesses, then crawl each business website to extract emails, social profiles and extra phone numbers. Turns any Maps search into a ready lead list. No setup.
159 runs · 8 users · $0.006 / business lead scrapedWebsite Screenshot
Capture full-page or viewport screenshots of any URL as PNG or JPEG, at any device size. For monitoring, previews, thumbnails and automation workflows.
156 runs · 3 users · $0.004 / screenshot capturedBulk URL Status Checker
Check thousands of URLs over plain HTTP: status codes, broken links (404/410/5xx), full redirect chains, response time, content type, page title and SSL certificate expiry.
154 runs · 13 users · $0.002 / url checkedGoogle Search Scraper
Scrape Google Search results (organic listings) for any query: title, URL, displayed URL, snippet and position. Multi-query, per-country/language, pagination. Uses Google SERP proxy — reliable, no captcha, no setup.
121 runs · 8 users · $0.001 / result scrapedcrates.io Scraper
Search crates.io or look up exact Rust crates and get description, downloads, versions, license, keywords, categories, repository and documentation links.
118 runs · 1 users · $0.004 / crate scrapedSend the site and the fields. We build it and you get it first.