Speech-to-Text API with Word-Level Timestamps

Add start and end times for each word in prerecorded audio or video. Build synchronized transcripts, click-to-seek playback, search, captions, clips, and citations from structured JSON.

segment.words
Every 0.42s word 0.82s keeps 1.20s its 1.60s own 1.86s start 2.22s and 2.62s end 2.86s time. 3.14s
0.00s3.38s
Start
per word
End
per word
JSON
structured

Three Different Timing Levels

Segment Timing, Word Timing, and Subtitle Cues Are Not the Same Thing

Choose the representation that matches the interface or workflow you are building.

Segment Timestamps

Every transcript segment has a start and end time. Use segments for readable transcript blocks, coarse seeking, and chronological indexing.

Per-Word Timestamps

Set can_parse_words to add a words array with individual start, end, and text values inside each segment.

SRT and WebVTT Cues

Request SRT or VTT output for timed subtitle cues. Cue boundaries group text for display and do not expose one timing object per word.

Jobs v2 API Example

Enable Parse Words with One Request Parameter

Set can_parse_words to true when you submit prerecorded media. The completed JSON keeps word timing inside each transcript segment.

Create a Timestamped Job

cURL
curl --request POST \
  --url https://api.speechischeap.com/v2/jobs/ \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "input_url": "https://example.com/product-demo.mp3",
    "can_parse_words": true,
    "webhook_url": "https://your-domain.com/transcription-webhook"
  }'

Completed JSON Excerpt

JSON
{
  "id": "00000000-1111-7222-b333-444444444444-sic",
  "status": "COMPLETED",
  "output": {
    "segments": [
      {
        "id": 1,
        "start": 0.42,
        "end": 3.38,
        "text": "Every word keeps its own start and end time.",
        "words": [
          { "start": 0.42, "end": 0.78, "text": "Every" },
          { "start": 0.82, "end": 1.16, "text": "word" },
          { "start": 1.20, "end": 1.56, "text": "keeps" },
          { "start": 1.60, "end": 1.82, "text": "its" },
          { "start": 1.86, "end": 2.18, "text": "own" },
          { "start": 2.22, "end": 2.58, "text": "start" },
          { "start": 2.62, "end": 2.82, "text": "and" },
          { "start": 2.86, "end": 3.10, "text": "end" },
          { "start": 3.14, "end": 3.38, "text": "time." }
        ]
      }
    ]
  }
}

One Sample, Different Representations

Use JSON for Words and SRT or WebVTT for Subtitle Cues

Switch between the transcript text, per-word JSON timing, and subtitle files generated from the same sample.

Readable Transcript

00:00.420Every word keeps its own start and end time.

00:03.720That makes synchronized playback and media search easier to build.

Every word keeps its own start and end time.
That makes synchronized playback and media search easier to build.

Build Playback, Search, Editing, and Citation Workflows

Per-word start and end times connect transcript text to precise places in prerecorded media.

Synchronized Transcript Highlighting

Compare the playback position with each word start and end time to highlight the current word as the recording plays.

Click-to-Seek Playback

Attach a word or sentence to its timestamp so a reader can jump from transcript text to that point in the audio or video.

Clip Extraction

Use the first and last word timestamps around a selected passage as inputs to a separate audio or video clipping workflow.

Media Search

Index transcript words with their timestamps, then return a seekable moment when a search query matches the recording.

Captions and Subtitles

Use SRT or WebVTT when you need timed subtitle cues. Keep per-word JSON for interfaces that need finer-grained timing.

Transcript Citations

Store a timestamp beside quoted transcript text so reviewers can open the recording near the cited passage.

Combine Word Timing with Other Jobs v2 Add-Ons

Use one asynchronous request when your transcript needs word timing together with speaker or audio metadata.

Speaker Diarization

Set can_parse_speakers with can_parse_words to keep anonymous speaker labels and timed words in the same result.

Audio Labels

Set can_label_audio when you also need segment-level labels for speech, music, silence, and other audio categories.

Multilingual Transcription

Set a supported language or use automatic detection while Parse Words adds timing data to the transcript output.

Parse Words Pricing

Add Per-Word Timestamps by the Audio Minute

Parse Words is an optional add-on. Core transcription is billed separately under your selected plan.

Pay as You Go

$0.001 per audio minute

Enable Parse Words only on the jobs that need per-word timing.

1 hour: $0.06 add-on cost

10 hours: $0.60 add-on cost

Subscriber Rate

Subscriber

$0.0005 per audio minute

The subscriber Parse Words rate is half the pay-as-you-go add-on rate.

1 hour: $0.03 add-on cost

10 hours: $0.30 add-on cost

Clear Boundaries

Timing Data Still Needs Product-Level Testing

Word timestamps help connect transcript text to media playback, but they are not a frame-perfect alignment guarantee.

No Preexisting Transcript Required

Parse Words adds timing to the API's transcription output. This page does not describe forced alignment against a transcript you supply.

No Frame-Perfect Promise

Test seek points, highlights, clips, and citations against your media player and the tolerance your interface needs.

Keep Timing Types Separate

Segment boundaries, word boundaries, and subtitle cue boundaries solve related but different display and data problems.

Word-Level Timestamps API Questions

Request parameters, output formats, pricing, combinations, and timing expectations.

How Do I Enable Word-Level Timestamps?

Create a Jobs v2 request with can_parse_words set to true. The completed JSON output includes a words array on each transcript segment, with start, end, and text for each word.

What Is the Difference between Segment and Word Timestamps?

Every transcript segment has its own start and end time. The optional Parse Words add-on adds timing for individual words inside that segment. Use segment timing for paragraph-like transcript blocks and word timing when the interface must follow speech more closely.

Do SRT and WebVTT Files Contain Per-Word Timestamps?

No. SRT and WebVTT return timed subtitle cues. Those cue boundaries are separate from the per-word timing objects in JSON. Request JSON when your application needs the start and end time for each word.

Can I Combine Word Timestamps with Speaker Diarization?

Yes. Jobs v2 accepts can_parse_words and can_parse_speakers in the same request. The result can keep speaker labels at the segment level and timing data for the words inside each segment.

Are the Timestamps Frame-Perfect?

No frame-perfect or sample-perfect timing guarantee is made. Treat the timestamps as transcription timing data and test them against the playback, clipping, caption, or citation experience your product needs.

How Much Does the Word Timestamp Add-On Cost?

The Parse Words add-on costs $0.001 per audio minute for pay-as-you-go customers and $0.0005 per audio minute for subscribers. Core transcription is billed separately.

Add Word Timing to Your Next Transcript

Choose a plan, get your API key, and set can_parse_words to true.