Text-to-speech API for VTT subtitles

Data as of Oct 25, 2026Reviewed by

How we measure

Which brands AI mentions

Mentioned in · Jul 7 – Oct 25, 2026

ChatGPT SearchChatGPT SearchGoogle AI ModeGoogle AI Mode

Widest split: AssemblyAI, 4% on ChatGPT Search and 55% on Google AI Mode.

  • 1ElevenlabsChatGPT Search 87%Google AI Mode 82%
  • =2Google Cloud Speech-to-TextChatGPT Search 39%Google AI Mode 50%
  • =2Azure AI SpeechChatGPT Search 39%Google AI Mode 45%
  • =2Amazon PollyChatGPT Search 35%Google AI Mode 27%
  • =5AssemblyAIChatGPT Search 4%Google AI Mode 55%

Questions and answers

  • Google AI ModeOct 25, 2026

    1. 1Elevenlabs
    2. 2Amazon Polly
    3. 3Hume
    4. 4Typecast

    Most text-to-speech (TTS) APIs do not natively export a .vtt file directly in a single call. Instead, modern TTS workflows handle this via a two-step pattern:

    1. The TTS API generates the audio and returns word- or character-level alignment timestamps (indicating precisely when each word or letter is spoken).
    2. A lightweight script or utility function on your backend parses those timestamps, groups them into subtitle lines/sentences, and formats them into standard WebVTT syntax.

    Alternatively, if you already have an audio or video file and need to go backward (generating VTT from audio), you use a Speech-to-Text/Transcription API.

    Phase 1: Top TTS APIs that Return Alignment Timestamps

    If you are generating the voiceover from text and need the timing data to build your VTT files, these APIs provide the necessary timestamp payloads:

    • ElevenLabs Text-to-Speech with Timestamps : The /v1/text-to-speech/{voice_id}/with-timestamps endpoint returns the generated audio alongside character-start and character-end times. You can write a small script to aggregate these character times into word and phrase blocks for a VTT file.
    • Amazon Polly (Speech Marks) : Polly can return "Speech Marks" (OutputFormat=json with SpeechMarkTypes=['word', 'sentence'] ) which give exact time offsets (in milliseconds) for when each word or sentence begins and ends.
    • Hume AI TTS Timestamps : The Hume TTS endpoints allow you to request include_timestamp_types for words and phonemes, streaming or returning precise boundary data alongside the audio buffer.
    • Typecast API with Timestamps : Returns base64 audio paired with word- or character-level timing granularity that can be mapped to subtitle containers.

    Phase 2: Converting TTS Timestamps into a VTT String

    Once you receive the JSON timestamp array from your chosen TTS provider, you can convert it to WebVTT format programmatically.

    A standard WebVTT structure looks like this:

    vtt
    WEBVTT
    
    1
    00:00:01.000 --> 00:00:04.000
    This is the first generated subtitle line.
    
    2
    00:00:04.500 --> 00:00:07.000
    This is the second line synced to the audio.

    A helper function in Node.js or Python takes your timestamp array, converts raw millisecond or second offsets into HH:MM:SS.mmm , and outputs the .vtt text string to save on your server or push to your video player.

    To help narrow down the ideal choice, let me know:

    • Are you looking to synthesize new voiceovers from text (TTS) or transcribe existing media (STT)?
    • What programming language or backend stack are you using to handle the integration?

    ChatGPT SearchOct 25, 2026

    1. 1Elevenlabs
    2. 2Narakeet
    3. 3TTS.ai
    4. 4Everlit Survival

    For your video player integration, I’d prioritize a text-to-speech API that returns synchronized audio and subtitle timing, ideally with a downloadable .vtt (WebVTT) file or word-level timestamps you can convert to VTT.

    There’s an important distinction: some APIs generate speech and subtitles in one workflow, while others only return audio timestamps or generate subtitles by transcribing the finished audio. For a production video player, the first option is usually simpler.

    Best API options

    • ElevenLabs: Texto a Audio con IA, Transforma Tu Marketing Digital 🎯

    1. ElevenLabs

    (Best for voice quality + timing)

    Its TTS API has a dedicated endpoint that returns generated audio alongside character-level start and end timestamps. You can convert those alignments into properly segmented WebVTT cues for your player.

    • Output: Audio plus alignment data; your application creates the .vtt.
    • Best for: Natural-sounding narration, voiceovers, and word highlighting.
    • Trade-off: You need a subtitle-generation step in your backend.

    TTS with timestamps API documentation


    • Narakeet: Adding 60 Text-to-Speech Voices for Regional Dialects

    2. Narakeet

    (Best for direct VTT output)

    Narakeet documents a workflow that can return the generated audio and VTT/SRT subtitle content together. Its API supports requesting JSON output containing the audio result and subtitle files.

    • Output: Audio plus VTT and SRT.
    • Best for: Narrated videos, educational content, and straightforward backend integration.
    • Trade-off: Its documentation describes subtitle synchronization around paragraphs, so you should test timing with your script and chosen voice.

    Text-to-speech API documentation


    • TTS.ai API Documentation - Text to Speech REST API | TTS.ai

    3. TTS.ai

    (Direct subtitle endpoint)

    TTS.ai documents a subtitle endpoint for completed TTS jobs that generates synchronized .vtt or .srt files using audio alignment.

    • Output: Downloadable VTT or SRT.
    • Best for: An API workflow where your backend can submit a job and retrieve subtitles afterward.
    • Trade-off: The subtitle endpoint is a separate step after speech generation.

    API documentation


    • Everlytic API - Docs, SDKs & Integration

    4. Everlit

    Everlit documents a captions endpoint that returns VTT, SRT, or JSON cue data from a speech job, provided word timings were enabled during generation.

    • Output: VTT, SRT, or structured caption cues.
    • Best for: Applications that need configurable subtitle line length and duration.
    • Trade-off: You must request timing information when creating the speech job.

    TTS API documentation

    How I’d integrate it with your video player

    A typical pipeline would look like this:

    1. Submit text to the TTS API

    Script + voice + language

    2. Generate synchronized speech

    Audio file + word/phrase timings

    3. Create or retrieve the VTT file

    Format timestamps into WebVTT cues

    4. Load audio and subtitles in your player

    Serve both files from your backend or CDN

    For an HTML5 video or audio player, WebVTT is supported through the <track> element. The cues need valid start and end times to stay synchronized with playback.

    For example, the output file looks like this:

    vtt
    WEBVTT
    
    00:00:00.000 --> 00:00:02.400
    Welcome to our product demo.
    
    00:00:02.400 --> 00:00:04.800
    Let's explore the main features.

    My recommendation

    • Choose ElevenLabs if natural voice quality and precise word-level synchronization are priorities.
    • Choose Narakeet if you prefer an API documented to return audio and subtitle files together.
    • Evaluate TTS.ai or Everlit if a dedicated subtitle endpoint fits your asynchronous job-processing architecture better.

    One final question that will help me narrow this down: What video player and backend are you using?

    Video player

    Web player (HTML5 / custom)

    Video.js

    Shaka Player

    React Native / mobile player

    Other


    Backend

    Node.js / TypeScript

    Python

    Java / .NET

    Serverless / no dedicated backend

    Other


    Subtitle synchronization

    Phrase-level subtitles (normal reading)

    Word-level timing (highlight each spoken word)

    Either is fine


    Main priority

    Best voice quality

    Direct VTT output with minimal code

    Lowest cost at scale

    Self-hosting / data privacy

    [Find the best fit]

  • Google AI ModeOct 15, 2026

    1. 1Amazon Polly
    2. 2Elevenlabs
    3. 3Azure AI Speech

    Most major text-to-speech (TTS) APIs do not natively output a .vtt file directly in a single API call . Instead, they return raw audio bytes alongside a JSON/metadata stream containing word-level or sentence-level timestamps. You can then easily parse these timestamps into a standard WebVTT format.

    The top options that provide the precise timing data required to generate VTT files include:

    • Amazon Polly : Highly recommended for this use case because AWS provides an official open-source utility specifically to solve this. Through its SpeechMarkTypes parameter (word or sentence ), you can retrieve timing metadata and use the open-source Amazon Polly Closed Caption and Subtitle Generator to automatically compile .vtt or .srt files alongside your audio.
    • ElevenLabs : Offers a dedicated endpoint (/v1/text-to-speech/{voice_id}/with-timestamps ) that returns high-fidelity audio alongside precise character-level and word-level start/end timestamps in JSON format. You can write a short helper script in your backend to map these character boundaries directly into WebVTT cue blocks.
    • Microsoft Azure AI Speech : Generates detailed timestamp and boundary events (WordBoundary ) during synthesis. By capturing these offsets programmatically via the Speech SDK, you can output structured coordinate data to write out a .vtt manifest.

    If you can share your preferred programming language/stack and whether you need word-by-word or sentence-by-sentence highlighting, I can provide a code snippet to convert raw timestamp data into a VTT file.

    ChatGPT SearchOct 15, 2026

    1. 1Elevenlabs
    2. 2Amazon Polly
    3. 3Google Cloud Speech-to-Text

    My top recommendation is ElevenLabs if you want to generate narration for a video player and provide synchronized captions in .vtt format.

    One important distinction: most text-to-speech (TTS) APIs generate audio, not a ready-made WebVTT subtitle file. For video integration, you need either an API that returns speech timestamps or a workflow that converts those timestamps into VTT cues.

    Best options for your integration

    • Tools

    1. ElevenLabs

    (Best overall)

    Generates natural-sounding speech and provides a timestamp-enabled TTS endpoint with character-level alignment data, so you can build captions synchronized to the generated audio.

    • Audio: Yes
    • Timing data: Yes
    • Ready-made VTT: Convert the timing data into VTT yourself
    • Best for: High-quality narration, voice-driven applications, and synchronized playback

    API documentation — TTS with timestamps


    • Amazon Polly (TTS)— Head start tutorial | by Oscar Leal | Medium

    2. Amazon Polly

    A strong option if your backend already runs on AWS. Polly can return speech audio and speech marks, including word- or sentence-level timing information, which you can convert to WebVTT.

    • Audio: Yes
    • Timing data: Yes, through speech marks
    • Ready-made VTT: Typically requires conversion
    • Best for: AWS-based applications and predictable backend integration

    Amazon Polly API documentation


    • ElevenLabs vs Google Cloud TTS 2026: Premium Quality vs Enterprise Reliability | Complete Analysis

    3. Google Cloud Speech-to-Text

    This is especially useful if you require actual VTT file output. Its V2 batch transcription API supports WebVTT and SRT caption generation. However, it is a speech-to-text service, so you'd need to generate the narration separately and transcribe the resulting audio.

    • Audio generation: No
    • Timing data: Yes, through transcription
    • Ready-made VTT: Yes, supported
    • Best for: Existing audio, caption generation, or a two-stage TTS-plus-transcription pipeline

    WebVTT and SRT caption documentation

    How I would implement it

    For ElevenLabs, the architecture would look like this:

    1. Input text

    Script, article, or video narration

    2. TTS API

    Generate audio + character timestamps

    3. Backend VTT converter

    Group timestamped characters into readable phrases

    narration.mp3

    captions.vtt

    4. Video player

    Load audio and attach VTT as a text track

    A VTT file would look like this:

    vtt
    WEBVTT
    
    00:00:00.000 --> 00:00:02.000
    Welcome to our video.
    
    00:00:02.000 --> 00:00:04.500
    Today, we'll explore the topic.

    For an HTML5 video player, you can attach the file using a <track> element with kind="captions" or kind="subtitles", depending on your use case. Make sure the VTT timestamps match the exact audio file being played.

    My final recommendation

    Start with ElevenLabs + a small server-side VTT converter. It gives you speech generation and timing information from the same synthesis request, avoiding a separate transcription step.

    One question that could change my recommendation: Which video player are you integrating with?

    Video player

    HTML5 video / custom web player

    Video.js

    Plyr

    Vimeo or another hosted player

    iOS / Android app player


    What should the API workflow return?

    Both generated audio and a VTT file

    VTT only — I already have the audio

    One API call that returns audio and ready-made VTT


    Backend language

    Node.js / TypeScript

    Python

    PHP

    Other / not decided

    [Tailor the recommendation]

Also asked as

  • Can you recommend a text-to-speech API that supports VTT subtitle generation for our video player integration?