# xAI | Speech to Text xAI Speech-to-Text v1 transcribes audio into text across 25 languages with speaker diarization, word-level timestamps, and clean formatting. ## API Information - **Model Slug:** xai-speech-to-text - **Branded URL:** https://www.eachlabs.ai/xai/xai-stt/xai-speech-to-text - **Provider:** xAI - **Category:** Voice to Text - **Output Type:** object - **Status:** active - **Base Cost:** $0.000027777778 per second - **Estimated Processing Time:** 10 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/xai-speech-to-text ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.000027777778 per second - **Pricing Details:** default: $0.000028 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | audio_url | string | Yes | - | - | Publicly accessible URL of the audio file to transcribe. Max 500 MB. Supported container formats: WAV, MP3, OGG, Opus, FLAC, AAC, MP4, M4A, MKV. The file must be publicly accessible or an EachLabs-uploaded file. | | language | string | No | auto | auto, ar, cs, da, nl, en, fil, fr, de, hi, id, it, ja, ko, mk, ms, fa, pl, pt, ro, ru, es, sv, th, tr, vi | Language code for text formatting. Use 'auto' to skip language-specific formatting (the model still transcribes any supported language). When set with format=true, numbers, currencies, and units are written in their standard form. | | format | boolean | No | true | - | Enable Inverse Text Normalization — converts spoken numbers/currency to written form (e.g. 'one hundred dollars' → '$100'). Requires a non-auto language. | | diarize | boolean | No | false | - | Identify different speakers in the audio. When enabled, each word in the response includes a 'speaker' field (integer) identifying the detected speaker. | | multichannel | boolean | No | false | - | Transcribe each audio channel independently. Results returned in the 'channels' array. Use for stereo recordings where each channel contains a separate speaker. | | audio_format | string | No | - | pcm, mulaw, alaw | Format hint for raw/headerless audio. Do not set for container formats (MP3/WAV/etc.). | | sample_rate | integer | No | - | 8000, 16000, 22050, 24000, 44100, 48000 | Required for raw audio. Sample rate in Hz. | | channels | integer | No | - | 1–8 | Number of audio channels (2–8). Only required for multichannel raw audio. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "xai-speech-to-text", "input": { "audio_url": "https://cdn-us.eachlabs.ai/defaults/fbeaa766b28a43c6dbeaaa37ec20281de9133b1dad0ae031c835af06853f57ea.mp3" } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "object", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **xAI | Speech to Text Overview** The **xAI | Speech to Text** model from xAI transforms spoken audio into accurate text transcripts, solving the challenge of efficient voice-to-text conversion for real-time applications. Part of the xai-stt family, this voice-to-text tool excels in handling diverse accents and noisy environments, setting it apart with xAI's advanced neural architectures trained on vast multilingual datasets. Developers and creators on **each::labs** (eachlabs.ai) can integrate the **xAI | Speech to Text API** seamlessly for transcription tasks. Whether capturing meetings, podcasts, or voice commands, it delivers reliable output with minimal latency. This model stands out for its precision in technical jargon and conversational speech, making it ideal for AI-driven workflows. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.