A voiceover studio your content team runs without Azure access

By General Input

Audition neural voices on two sentences, render the full script once you are happy, and deliver finished audio straight to a shared Drive folder.

Integrations

  • Azure AI Speech
  • Google Drive
  • Slack

Type

App

Categories

  • Marketing

Build me a narration studio app my content team opens whenever they need voiceover audio. It runs on Azure AI Speech for the synthesis, Google Drive for scripts and finished files, and Slack for sharing. The people using it are writers and content producers who should never have to see the Azure portal.

The main screen is a script editor beside a voice picker. The voice picker is populated from the Azure AI Speech List Voices operation and is filterable by language or locale, by gender, and by speaking style, since many neural voices ship with styles like cheerful or newscast. Show the voice display name, locale, gender and its available styles so somebody can narrow a long list down fast. Alongside the voice there are speed and pitch controls.

Every voice in the list has a Preview button. Preview must render only the first two sentences of the current script, never the whole thing, so that auditioning six voices does not burn six full renders. Preview always uses the real time Synthesize Speech operation and plays the audio back inline in the browser. Do not save previews to Drive or write them into the render history.

Scripts can be typed straight into the editor or loaded from Google Drive. A Load from Drive control uses List Files with a Drive query filtered to the Google Docs mime type so the writer can find an existing doc, then Export Google Workspace File pulls it down as plain text into the editor, where it stays fully editable before rendering. Google Docs cannot be downloaded directly, which is why the export step is required rather than a plain file download.

Speed and pitch are applied as SSML prosody rate and pitch wrapped around the script text, because real time synthesis expects an SSML body sent as application/ssml+xml. Pick the output audio format with the X-Microsoft-OutputFormat header for real time renders and the outputFormat body property for batch renders, defaulting to an MP3 format that is good enough for published narration.

Pressing Render routes on estimated audio length. Estimate duration from the script word count at roughly 150 spoken words per minute. Anything estimated under ten minutes goes through Synthesize Speech and comes back in the same request. Anything longer must go through Create Batch Synthesis, because real time synthesis silently truncates its output audio at ten minutes and would quietly cut the end off a long script. Batch synthesis needs a client chosen synthesis id in the path, so generate one that is 3 to 64 characters, uses only letters, digits, hyphen, underscore and dot, and starts and ends with a letter or digit.

A batch render shows up immediately as a job row with its script name, voice and a running status. The row polls Get Batch Synthesis until the job reports Succeeded or Failed, showing the current state as it goes so nobody wonders whether it is stuck, and surfacing a readable error on failure with the option to retry.

When audio is ready, upload it to a Drive folder the user chooses, defaulting to a configurable team folder. Use Upload File (Multipart) for files up to 5MB and Upload File (Resumable) for anything larger, since a ten minute MP3 will usually exceed the multipart limit and that is exactly the case the batch path exists to serve. Then call Create Permission to make a shareable link and store that link on the render. Copying the audio into Drive is deliberate and not optional: batch synthesis results expire after their time to live, which defaults to about a week, so a link back to Azure would eventually break while a Drive copy will not.

Underneath the studio is a history table of every completed render, showing the script or its first line, the voice used, the speed and pitch, when it was rendered, and the Drive link. Each row has a Re-render button that reloads that script and its settings back into the editor for a fresh render, and a Share to Slack button that posts the audio to a chosen channel using the Slack Upload a File operation, with a short message naming the script and voice.

Users can save a voice together with its speed and pitch as a named preset, such as Product demo or Course module, so audio stays on brand across a series. Presets are shared across the team, appear as one click options above the voice picker, and can be renamed or deleted. Persist presets, render history and the default Drive folder.

Each person sees their own renders in the history table by default, with a toggle to show the whole team's renders instead, so someone can find a colleague's work and reuse its settings.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredChat quality review board for LiveChat support leadsWin back no-show and cancelled appointments every morningLive Loop returns analytics with product-level drill-downNewsletter pre-flight and approval board for Mailjet sendsTurn a prospect spreadsheet into personalized sequence enrollmentsMailjet email delivery lookup console for support teamsCatch feature flags that never got switched on in productionKajabi customer support console for member access fixes