Venice AI logo

Skill

venice-audio-transcription

transcribe audio files to text

Covers Data Extraction Transcription Audio Speech

Description

Transcribe audio files to text via POST /audio/transcriptions. Covers supported models (Parakeet, Whisper, Wizper, Scribe, xAI STT), supported formats (wav/flac/m4a/aac/mp4/mp3/ogg/webm), response formats (json/text), timestamps, and language hints. OpenAI-compatible multipart.

SKILL.md

Venice Transcription (/audio/transcriptions)

POST /api/v1/audio/transcriptions takes an audio file and returns text. It's OpenAI-compatible with multipart/form-data — the OpenAI SDK's audio.transcriptions.create() works unchanged.

Use when

  • You need STT (speech-to-text) for voice notes, meetings, podcasts, short audio.
  • You need timestamps for subtitles / chapters.
  • You want to pick between fast local-style models (Parakeet) and large multilingual ones (Whisper, Wizper, Scribe).

For long video / YouTube transcription, see venice-video's /video/transcriptions (takes a public video URL directly).

Minimal request

curl https://api.venice.ai/api/v1/audio/transcriptions \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -F "file=@./meeting.m4a" \
  -F "model=nvidia/parakeet-tdt-0.6b-v3" \
  -F "response_format=json" \
  -F "timestamps=false"
{ "text": "Alright everyone, let's kick off the meeting..." }

With timestamps=true, json format also returns segment/word timings (schema is model-specific).

Request (multipart/form-data)

FieldTypeDefaultNotes
filebinaryRequired. Audio file. Supported: wav, wave, flac, m4a, aac, mp4, mp3, ogg, webm. Base64 is not accepted — upload as a real file.
modelenumnvidia/parakeet-tdt-0.6b-v3See models below.
response_formatjson / textjsontext returns text/plain body.
timestampsboolfalseInclude segment/word timestamps (JSON only).
languagestringISO 639-1 hint (e.g. en, ja). Only Whisper-family models honor it; others auto-detect.

Models

Model IDNotes
nvidia/parakeet-tdt-0.6b-v3Default. Fast, English-first, great for real-time-ish flows.
openai/whisper-large-v3Large multilingual, honors language hint.
fal-ai/wizperWhisper variant, competitive on quality/latency tradeoff.
elevenlabs/scribe-v2ElevenLabs Scribe, strong on noisy audio.
stt-xai-v1xAI Speech-to-Text.

GET /models?type=asr returns the current catalog. ASR pricing is pricing.per_audio_second.usd — cost scales with audio duration.

OpenAI SDK

import OpenAI from 'openai'
import fs from 'node:fs'

const client = new OpenAI({
  apiKey: process.env.VENICE_API_KEY,
  baseURL: 'https://api.venice.ai/api/v1',
})

const out = await client.audio.transcriptions.create({
  file: fs.createReadStream('meeting.m4a'),
  model: 'openai/whisper-large-v3',
  response_format: 'json',
  language: 'en',
  // @ts-expect-error — Venice-specific extra, passes through multipart
  timestamps: true,
})

console.log(out.text)

Batch / long files

Venice doesn't expose native chunking. For files > ~30 min, split client-side on silence with ffmpeg or pydub, transcribe each chunk, then concatenate with offset timestamps.

ffmpeg -i long.mp3 -f segment -segment_time 600 -c copy chunk_%03d.mp3

Errors

CodeMeaning
400Bad params, unsupported audio format, empty file, or file larger than 25 MB (this endpoint returns 400 with "Maximum size is 25MB", not 413).
401Auth / Pro-only.
402Insufficient balance.
415Wrong Content-Type — must be multipart/form-data.
422Validation / upstream ASR error (e.g. zero-length audio, upstream provider 422). Not a "content policy" code on this path.
429Rate limited.
500 / 503Transient; retry with jitter.

Gotchas

  • file must be uploaded as a real multipart file part. JSON + base64 is not supported here.
  • Timestamps are only surfaced in the JSON response shapes (json, verbose_json, srt, vtt). With response_format: text the handler returns a plain text/plain body containing just the transcript — you'll lose any timestamp data, so pick verbose_json / srt / vtt when you need timings.
  • language is Whisper-specific. Parakeet / Scribe ignore it and auto-detect.
  • Peak concurrency limits apply — on 429, back off; big batches should throttle to ~5 parallel requests.
  • Content-policy rejection on the transcript is returned as 422 with an error string; it does not surface suggested_prompt on this path.

© 2026 YourAI.tools. Every skill from an identity-verified publisher.

Independent catalog. Not affiliated with, endorsed by, or sponsored by Anthropic or any listed publisher. All trademarks belong to their respective owners.