Use speech when a product demo or narration already has a script. This standalone version uses built-in voices through a bundled helper and supports single clips or batches. Specify pacing, pauses and emphasis separately from text that must remain verbatim, so performance directions do not accidentally rewrite the message.
Install and prepare
This guide covers the standalone Skill retained in openai/skills. That repository is deprecated and current examples have moved to openai/plugins; the instructions here describe the linked standalone version, not the latest plugin.
Enter this line in the Codex conversation, not a terminal. If the installed Skill does not appear, restart Codex.
$skill-installer speech
- Final text, intended language and output format
- Python and the openai package
- A local OPENAI_API_KEY and access to the audio API
Keep pronunciation, pacing and emotional directions separate from the script. API documentation requires a clear disclosure to listeners that the voice is AI-generated. This Skill covers built-in voices; other API voice capabilities should not be assumed to exist in this retained version. [4]
Try a first task
Start by listening to a short script, for example:
$speech
Generate an MP3 voiceover for this exact product-demo script:
“Welcome to our reporting tool. Choose a date range, then select Generate report.”
Use a built-in voice, clear and steady delivery, and a short pause before the second sentence. Preserve every word. First check dependencies and API configuration, then state the model and voice without revealing the key. Save output/speech/report-demo.mp3 and record the final text and parameters.
Work through the task
-
Lock the input. Specify the exact script, voice preference, format and output destination. Assign stable filenames for multiple jobs.
-
Generate a sample. Use a representative passage to confirm voice and rhythm before producing the full script or batch. Check that the old helper’s default model remains available.
-
Change one thing and listen. Adjust pacing, pronunciation guidance or voice independently so you can understand why the result changed.
Produce a short sample first
Give the agent the final text, language, audience, voice preference, delivery and output format. For a product introduction, generate the opening two or three sentences first and listen for names, numbers and pauses before making the full recording. Avoid generating a large batch only to discover a pronunciation problem. Configure OPENAI_API_KEY locally; do not paste it into a prompt or commit it to the repository.
A practical request is: “Use an available built-in voice for a short Chinese narration sample, with a natural pace and English pronunciation for the product name. Return one WAV sample and its file path; wait for my review before generating the full script.” This is a suggested input, not a promised outcome. Split long text at paragraph boundaries to respect API limits, use stable filenames and listen to the joins after assembly. Available models, voices and formats depend on the current API project.
Check the audio before handoff
Return the audio file path, final script, voice and generation settings. Listen to the start, end, names, numbers and joins; check for omissions, repetition and truncation, then ask intended listeners to confirm comprehension when useful. If delivery is too fast, change one factor at a time to compare results. A successful file write does not establish that the voiceover fits the video timing. Disclose the AI-generated voice to end listeners when publishing.
Another case: a batch of phone prompts
Do not combine many clips into one long request. The Skill’s batch workflow accepts one JSONL job per line. Two prompts can specify their own text, voice, format and filename:
{"input":"Thank you for calling. Please hold.","voice":"cedar","response_format":"mp3","out":"hold.mp3"}
{"input":"For sales, press 1. For support, press 2.","voice":"marin","response_format":"wav","out":"menu.wav"}
These are sample inputs, not clips that have been generated or reviewed. Ask the agent to run the bundled script and match each delivered file to its final text. If one clip misreads a number, regenerate that clip while keeping approved clips unchanged. Check request rate, input length and available models against the current API project.
Common blockers
The script is too long. This Skill limits a request to 4096 characters. Split at meaningful boundaries and keep voice and instructions consistent.
A specialized term sounds wrong. Provide pronunciation guidance and regenerate a short sample. Confirm any proposed text changes before altering verbatim content.
You want to clone a person’s voice. Custom voice creation is outside this standalone Skill; use a built-in voice or choose a separate suitable workflow.
Preview phrase clips before assembling a track
Batch speech can also serve language practice. One user used the same underlying OpenAI TTS API to create separate English–French phrase MP3s, then used FFmpeg to insert practice pauses and assemble a roughly ten-minute track. With this skill, start by generating a few named phrase files and checking pronunciation and order. Adding silence and merging files are later audio-editing steps, not an automatic feature of the skill. Listen through the boundaries, repetitions, and omissions in the final track.