AI Text to Speech Voiceover - MP3, WAV, Opus and AAC avatar

AI Text to Speech Voiceover - MP3, WAV, Opus and AAC

Pricing

from $40.00 / 1,000 voiceover generateds

Go to Apify Store
AI Text to Speech Voiceover - MP3, WAV, Opus and AAC

AI Text to Speech Voiceover - MP3, WAV, Opus and AAC

Turn any text or script into a voiceover file you can download. Choose MP3, WAV, Opus or AAC. Voices come from OpenAI TTS. Good for faceless YouTube narration, IVR menus, audiobooks and batch prompts. $40.00 per 1,000 voiceovers ($0.04 each).

Pricing

from $40.00 / 1,000 voiceover generateds

Rating

5.0

(3)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

3

Monthly active users

15 hours ago

Last modified

Share

AI Text-to-Speech Voiceover: turn a script into an audio file you can download

Paste a script, or a whole list of them, and you get one audio file per item in MP3, WAV, Opus or AAC. Each file lands in the run's key-value store with a direct link, next to a row telling you the voice, the length and how many characters were read.

The part to know before you start: this runs on your own OpenAI key. You paste the key in, OpenAI bills you for the synthesis, and without a key the run hands back a free demo record instead of audio.

InputA script in text, or a list of them in texts
OutputOne audio file and one row per item
CeilingNo item cap. Long scripts are split and rejoined, so the run timeout is the real limit
Account neededYour own OpenAI API key
Price$0.04 per voiceover, flat on every plan

🔊 What AI Text-to-Speech Voiceover does

It reads your text out loud and hands you the file. Six voices, four formats, and a speed dial from 0.25 to 4.0.

A long script does not need splitting by hand. Anything over about 3,500 characters is cut at sentence boundaries, each piece is synthesised on its own, and the pieces are joined back into a single file without re-encoding. The row tells you how many pieces went into it, in chunks, so you can see when that happened.

texts is the batch door. Give it an array of strings and you get one file per string. Give it an array of objects and it reads whichever of script, scriptText, text or narration is present. An object with none of those four keys is dropped quietly, which is worth knowing if a batch comes back shorter than you sent.

Items are done one after another rather than all at once, so a long list takes a while.

📥 What you give it

{
"text": "Welcome back to the channel. Today we are looking at one of the strangest mysteries of the deep ocean.",
"voice": "onyx",
"format": "mp3",
"speed": "1.0"
}
FieldDefaultWhat it is
textnoneOne script, as a single string. The form opens with an example sentence filled in, which is a starting point rather than a default.
textsnoneBatch mode. An array of strings, or of objects keyed script, scriptText, text or narration. One audio file per item.
voiceonyxOne of alloy, echo, fable, onyx, nova, shimmer. onyx is the deep male one, nova and shimmer are female.
modeltts-1tts-1 is quick, tts-1-hd sounds better and costs you more on your own OpenAI bill.
formatmp3mp3, wav, opus or aac.
speed1.0Playback speed between 0.25 and 4.0. It is a text field, so type a number: anything that is not one quietly becomes 1.0.
openaiApiKeynoneYour own OpenAI key. Marked secret, so it is not written into the run's visible input.
baseUrlnoneAdvanced. Any OpenAI-compatible /audio/speech host. Left empty it uses https://api.openai.com/v1.

Run it with no key at all and you get a single labelled demo record in the key-value store, so you can see the shape before you wire anything up. Give it a key but no text and no texts and the run fails, because there is nothing to read.

📤 What you get back

One dataset row per finished voiceover, and the audio itself in the run's key-value store under a key like voiceover-1-1757000000000.mp3.

FieldWhat it is
oktrue on a delivered voiceover.
indexWhich item this was, counting from 1.
voice, model, formatWhat actually got used, after defaults are applied.
charactersHow long the input text was.
chunksHow many separate pieces were synthesised and joined. 1 means it fitted in one.
durationSecondsMeasured off the finished file. It reads 0 when that measurement failed, not when the audio is empty.
audioKeyThe key-value store key the file is saved under.
audioUrlA direct link to the file.
textPreviewThe first 160 characters of what was read, so you can tell rows apart.

No example row is printed here. No run on record has produced one with a working customer key, and a plausible row typed out by hand is worse than none.

🧾 Reading the output

Three kinds of record come out of a run, and only one of them is in the dataset.

RecordWhere it landsBilled
A finished voiceoverA dataset row, ok: trueyes
The keyless demoKey-value store, SAMPLE_AND_NOTICESno
An item that failedKey-value store, SAMPLE_AND_NOTICES, ok: falseno

So everything in the dataset is audio you can use. One failed item does not stop the batch: it is recorded in the store and the run moves to the next item.

Worth knowing, because it is the thing that confuses people: if every item fails, the run still finishes green with an empty dataset. The reasons are all sitting in SAMPLE_AND_NOTICES in the key-value store. An empty dataset on this actor means look there, not that your text was empty.

The Overview table shows index, voice, format, durationSeconds, characters, audioUrl and textPreview. model and chunks are real fields but are not among the columns, so open the row itself or download the JSON if you want them.

▶️ How to run it

  1. Open AI Text-to-Speech Voiceover and click Try for free to see the demo record.
  2. Paste your OpenAI key into OpenAI API key (BYO).
  3. Put your script in Text / script, or a list of scripts in Texts (batch).
  4. Pick the voice and format, then click Start.
  5. Take the files from the run's Storage tab, or follow audioUrl from each dataset row.

💰 How much does it cost?

$0.04 per voiceover. Flat on every Apify plan, no volume tiers. Fifty narration blocks in one batch run come to $2.00.

You pay per delivered file. The keyless demo record and any item that failed are not charged. OpenAI bills your own key separately for the synthesis itself, and tts-1-hd costs you more there than tts-1.

💡 What people use it for

  • Narration for faceless video channels, where a week of scripts goes in as one texts batch.
  • Audiobook and long-article reading, leaning on the automatic splitting so nothing has to be cut up by hand.
  • IVR and phone-menu prompts, where WAV is usually the format the phone system wants.
  • Trying the same script in several voices before committing to one.

🚧 What it does not do

  • No voice cloning, and no custom voices. Six voices, listed above, and that is the list.
  • No SSML. There are no tags for pauses, emphasis or pronunciation. Punctuation and speed are the only controls over delivery.
  • A rejected key stops the batch, rather than retrying its way down your whole list.
  • durationSeconds can read 0 when the finished file could not be measured. The audio is still there.
  • Joined opus and aac files are less proven than MP3. Long scripts in those two formats are stitched the same way, but MP3 is the one with playback evidence behind it. Use MP3 or WAV if a long script has to be right first time.
  • No video, no captions, no music bed. This is the audio track only.

🧭 Which AI media actor do you need?

If you wantUse
A script read out loud as an audio fileThis one
A finished vertical video with script, voice and captionsAI Faceless Video Generator
An existing video re-voiced in another languageAI Video Dubber
Scene images for a story before you voice itAI Storyboard Generator
Word-by-word captions burned onto a video you already haveAuto Caption Burner

❓ Questions people ask

Do I need my own OpenAI key? Yes. There is no shared key behind this, and without one you get the demo record rather than audio.

Is my key safe here? It is a secret field, so it is not stored in the run's visible input. Use one you can revoke, as with anything you paste into a tool you did not write.

How long can a script be? There is no fixed character ceiling. Long text is split at sentence boundaries and joined back together, so the practical limit is how long the run is allowed to take.

Can I use something other than OpenAI? If it speaks the same /audio/speech shape, point baseUrl at it. Anything else will not work.

Why is my dataset empty when the run went green? Every item failed. The reasons are in SAMPLE_AND_NOTICES in the run's key-value store.

Can I run it on a schedule? Yes, through Apify's scheduler, or start it from the API and read the dataset when it finishes.

🆘 If something breaks

Open the Issues tab on the actor page. Include the run ID and which format and voice you used, and check SAMPLE_AND_NOTICES in the run's key-value store first, since the per-item reason is usually already written there.