Transcribe Kurdish Audio to Text
Most speech-recognition services can't handle Kurdish. This API can: it transcribes Sorani and Kurmanji speech with 4.54 character error rate on the FLEURS Sorani benchmark — and you can call it from any language in a few lines. Supported formats: WAV, MP3, FLAC, OGG and M4A.
Step 1 — Get a free STT API key
Create a free account at kurdishtts.com and generate an STT key in Settings → API (STT keys are separate from TTS keys). The free tier includes 120 minutes of audio per month — billing is per audio minute.
Step 2 — Upload the audio
One multipart POST to /api/stt-proxy with the file and the dialect (sorani or kurmanji). curl:
curl -X POST https://www.kurdishtts.com/api/stt-proxy \
-H "x-api-key: YOUR_STT_KEY" \
-F "file=@recording.mp3" \
-F "dialect=sorani"Python:
import requests
with open("recording.mp3", "rb") as f:
resp = requests.post(
"https://www.kurdishtts.com/api/stt-proxy",
headers={"x-api-key": "YOUR_STT_KEY"},
files={"file": f},
data={"dialect": "sorani"},
)
resp.raise_for_status()
result = resp.json()
print(result["text"])JavaScript (Node 18+):
import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("file", new Blob([await readFile("recording.mp3")]), "recording.mp3");
form.append("dialect", "sorani");
const resp = await fetch("https://www.kurdishtts.com/api/stt-proxy", {
method: "POST",
headers: { "x-api-key": process.env.KURDISHTTS_STT_KEY },
body: form,
});
if (!resp.ok) throw new Error(await resp.text());
const result = await resp.json();
console.log(result.text);Step 3 — Read the result
The response is JSON: text holds the transcript (Arabic script for Sorani, Latin for Kurmanji), alongside detected_dialect, detected_script and duration_seconds. Store the text, feed it to a translation step, or index it for search.
Limits & next steps
- File size: 10MB on the free tier, 50–100MB on paid plans. Free-tier transcripts are capped at 500 characters (the response says so explicitly when truncated).
- Need live transcription from a microphone? Use the streaming endpoint — see the API reference (
/api/stt-stream-connect). - Prefer an AI agent doing the work? Connect the MCP server to Claude and just ask it to transcribe.
- Generating speech instead: Kurdish text-to-speech tutorial.