Skip to content

Speech to English API

Translate audio from any language to English text with Amazon Transcribe + Translate or Amazon Bedrock audio-capable models through an OpenAI-compatible interface.

Why Choose the Speech to English API?

  • Automatic Language Detection
    Upload audio in any language. AWS automatically detects the source language and translates to English text.

  • Multiple Translation Options
    Choose Amazon Transcribe + Translate for a traditional pipeline, or use Bedrock audio models with built-in translation capabilities.

  • Multiple Output Formats
    Choose from text, JSON, verbose JSON with timestamps, or translated subtitle files (SRT/VTT).

  • Subtitle Translation
    Generate translated SRT and VTT subtitle files directly with precise timing for international video content.

Quick Start: Available Endpoint

Endpoint Method What It Does Powered By MCP Tool
/v1/audio/translations POST Transcribe any language and translate to English Amazon Transcribe + Translate or Amazon Bedrock Audio Models openai_audio_translation

Feature Compatibility

Feature Status Notes
Input
Audio file upload Multipart file upload
JSON body input Base64, data URI, HTTPS URL, S3 URI, or file-id: reference — for MCP / AI agents
Output Formats
json Structured translation
text Plain English text
verbose_json With timestamps (Amazon Transcribe; not Bedrock models)
srt English subtitles with timing (Amazon Transcribe; not Bedrock models)
vtt English WebVTT subtitles (Amazon Transcribe; not Bedrock models)
Language
Auto language detection Automatic source detection
Translation
Translation to English Amazon Translate (with amazon.transcribe) or native model translation (Bedrock models)
Advanced
prompt Bedrock models only; rejected by Amazon Transcribe
temperature Bedrock models only; rejected by Amazon Transcribe
Extra model-specific params Amazon Transcribe + Translate optional settings via JSON body (see below)
Usage tracking
Input audio duration Seconds (billing unit on Amazon Transcribe)
Output text tokens On models from Bedrock

Legend:

  • Supported — Fully compatible with OpenAI API
  • Available on Select Models — Check your model's capabilities
  • Extra Feature — Enhanced capability beyond OpenAI API

Model Support

Amazon Transcribe Amazon Models

Model Supported Languages Notes
amazon.transcribe 100+ Full-featured transcription with speaker diarization and subtitle generation at the cost of higher latency

Configuration Required

You must configure a bucket to use this model, through AWS_S3_BUCKET, AWS_TRANSCRIBE_S3_BUCKET, or an AWS_S3_REGIONAL_BUCKETS entry for a region where Amazon Transcribe is a candidate. This bucket is used for temporary storage during transcription processing.

Mistral Mistral Models

Model Supported Languages Notes
mistral.voxtral-mini-3b-2507 Multilingual (auto-detected) Compact model for fast transcription
mistral.voxtral-small-24b-2507 Multilingual (auto-detected) Larger model for enhanced accuracy

Mistral Voxtral Limitations

Mistral Voxtral models have the following restrictions when running on Amazon Bedrock:

  • File size limit: ~2MB maximum input file size
  • Audio channels: Mono channel audio only (single channel)

Other Amazon Bedrock Models

Any Amazon Bedrock model that accepts the SPEECH input modality through the Converse API can also translate audio out of the box: the gateway sends the audio together with a translation prompt and returns the model's English text output. Models whose speech input is only served by a bidirectional streaming API (e.g. amazon.nova-2-sonic) are not available on this route.

Audio Input Formats on Bedrock Models

Uploads in the formats the Bedrock Converse audio block accepts — aac, flac, m4a, mka, mkv, mp3, mp4, mpeg, mpga, ogg, opus, pcm, wav, webm, and x-aac — are sent through as-is. Any other audio or video upload is automatically converted to FLAC before translation (requires FFmpeg on the server), including the audio track of a video container. An upload that is neither audio nor video is rejected with the list of accepted formats; an audio or video file whose track cannot be decoded is rejected as carrying no decodable audio.

Advanced Features

Amazon Transcribe Amazon Transcribe Features

Model & Features:

  • Use amazon.transcribe with the same interface as OpenAI's Whisper API
  • Or use OpenAI model names directly: whisper-1, gpt-transcribe, gpt-4o-transcribe, and gpt-4o-mini-transcribe work out of the box (they map to amazon.transcribe)
  • Automatic transcription + translation pipeline in one request
  • Multiple output formats: text, json, verbose_json, srt, vtt
  • Automatic source language detection (zero configuration)
  • Smart Subtitle Translation : Subtitle timing is preserved during translation

OpenAI Model Compatibility

stdapi.ai includes built-in model aliases that map the OpenAI model names to Amazon Transcribe:

  • whisper-1amazon.transcribe
  • gpt-transcribeamazon.transcribe
  • gpt-4o-transcribeamazon.transcribe
  • gpt-4o-mini-transcribeamazon.transcribe

These aliases enable seamless compatibility with OpenAI-based tools and applications without any configuration changes (the realtime-oriented gpt-live-transcribe is not aliased: it belongs to a streaming API this route does not emulate). You can also customize or override these aliases to suit your needs.

Note: With amazon.transcribe, the prompt and temperature parameters are rejected with an error to ensure consistent translation accuracy. Bedrock audio models accept both.

Provider-Specific Parameters

amazon.transcribe first transcribes the audio, then translates it, and each step has its own provider-specific parameters — both reachable via the same application/json request body.

Transcription step (Amazon Transcribe): the same extra parameters documented for /v1/audio/transcriptions (ContentRedaction, VocabularyName, VocabularyFilterName/VocabularyFilterMethod, ShowAlternatives/MaxAlternatives, ChannelIdentification, ToxicityDetection, IdentifyMultipleLanguages/LanguageOptions, ModelSettings) apply here too.

Translation step (Amazon Translate): Settings and TerminologyNames control the English output register and glossary:

{
  "model": "amazon.transcribe",
  "file": "data:audio/mp3;base64,<base64-encoded-audio>",
  "Settings": {
    "Formality": "FORMAL",
    "Profanity": "MASK"
  },
  "TerminologyNames": ["MyProductGlossary"]
}
  • Settings.Formality (FORMAL or INFORMAL): Register of the translated text, for languages that support formality
  • Settings.Profanity (MASK): Mask profane words and phrases in the translation
  • Settings.Brevity (ON): Per AWS Translate, reduces the length of the translation output for most translations; unsupported language pairs silently ignore it
  • TerminologyNames (list): Apply one or more custom terminologies (domain-specific glossaries) to the translation

Both settings apply consistently to the primary translated text and, for response_format=verbose_json, to every per-segment translation.

verbose_json translates the transcript twice

For response_format=verbose_json, the full transcript is sent to AWS Translate once, and then every segment is sent again individually so segment-level translations are available. AWS Translate bills by character, so verbose_json costs roughly double the translation characters of text or json for the same audio.

Terminologies must already exist

TerminologyNames references AWS Translate custom terminology resources created ahead of time via the AWS Translate console, CLI, or SDK (ImportTerminology) — stdapi.ai does not create or manage them. An unknown name is rejected by AWS Translate with a client error.

Invalid Settings values (e.g. an unsupported Formality) are rejected with HTTP 400 before any partial translation occurs.

Try It Now

Translate foreign audio to English text:

curl -X POST "$BASE/v1/audio/translations" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F file=@spanish-interview.mp3 \
  -F model=amazon.transcribe \
  -F response_format=json

Translate via JSON body (MCP and AI agents):

When using MCP tools or HTTP clients that cannot construct multipart requests, pass the audio as a data URI or URL:

# Data URI (inline base64)
curl -X POST "$BASE/v1/audio/translations" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file": "data:audio/mp3;base64,<base64-encoded-audio>",
    "model": "amazon.transcribe"
  }'
# HTTPS URL (server fetches the audio)
curl -X POST "$BASE/v1/audio/translations" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file": "https://example.com/audio.mp3",
    "model": "amazon.transcribe"
  }'
# Files API reference (file-id: URI scheme)
curl -X POST "$BASE/v1/audio/translations" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file": "file-id:file-0190c51c7de7455d9b8c2efe27dfbf67",
    "model": "amazon.transcribe"
  }'

See Files API → Referencing Uploaded Files for the full description of the file-id: URI scheme.

Translate foreign audio to English subtitles:

curl -OJ -X POST "$BASE/v1/audio/translations" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F file=@spanish-interview.mp3 \
  -F model=amazon.transcribe \
  -F response_format=srt

Ready to translate multilingual audio? Explore available models in the Models API.