CLOUD
AI

Whisper: Arabic Speech-to-Text on Your Server

CLOUD|April 20, 2026|3 min read|690 views
Whisper: Arabic Speech-to-Text on Your Server

OpenAI Whisper converts conversations and meetings to text. Supports Arabic. On your server = no API cost. We explain setup.

Whisper Speech-to-Text Setup

OpenAI's Whisper is one of the best freely available Speech-to-Text models. It supports over 99 languages including Arabic. This guide explains how to run it on your own server.

Why Whisper Instead of Google Speech or سحابة أمريكية Transcribe?

Google Speech-to-Text:
- $0.006/minute for standard audio
- $0.009/minute with automatic language recognition
- Data goes to Google

سحابة أمريكية Transcribe:
- $0.024/minute
- Only 260 minutes free/month

Local Whisper on your server:
- Completely free after setup
- No data leaves your server
- Quality rivals commercial services

Whisper Model Sizes

Model Size VRAM Accuracy Speed
tiny 39 MB 1 GB Good Fastest
base 74 MB 1 GB Good Fast
small 244 MB 2 GB Very good Medium
medium 769 MB 5 GB Excellent Slow
large-v3 1.5 GB 10 GB Best Slowest

For Arabic: Use medium or large-v3 at minimum.

Installation

apt update && apt install -y python3 python3-pip ffmpeg
pip install openai-whisper

# Verify
python3 -c "import whisper; print('Whisper installed successfully')"

Basic Usage

import whisper

model = whisper.load_model("medium")

# Transcribe an audio file
result = model.transcribe(
 "arabic_audio.mp3",
 language="ar",
 task="transcribe"
)

print("Text:", result["text"])
print("Detected language:", result["language"])

# With timestamps
result = model.transcribe("audio.mp3", word_timestamps=True)

for segment in result["segments"]:
 print(f"[{segment['start']:.1f}s - {segment['end']:.1f}s]: {segment['text']}")

Fast API Using FastAPI

from fastapi import FastAPI, UploadFile, File
import whisper
import tempfile, os

app = FastAPI(title="Whisper API")
model = whisper.load_model("medium")

@app.post("/transcribe")
async def transcribe_audio(
 file: UploadFile = File(...),
 language: str = "ar"
):
 with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp:
 content = await file.read
 tmp.write(content)
 tmp_path = tmp.name
 
 try:
 result = model.transcribe(tmp_path, language=language)
 return {"text": result["text"], "language": result["language"]}
 finally:
 os.unlink(tmp_path)

# Run: uvicorn main:app --host 0.0.0.0 --port 8000

Faster Whisper: 4x Faster

pip install faster-whisper

python3 << 'EOF'
from faster_whisper import WhisperModel

model = WhisperModel("medium", device="cpu", compute_type="int8")

segments, info = model.transcribe("audio.mp3", language="ar")
print(f"Language: {info.language} ({info.language_probability:.0%} confidence)")

for segment in segments:
 print(f"[{segment.start:.1f}s] {segment.text}")
EOF

Batch Processing Audio Files

from faster_whisper import WhisperModel
from pathlib import Path
import json

model = WhisperModel("medium", device="cpu", compute_type="int8")

def process_audio_file(audio_path: str) -> dict:
 segments, info = model.transcribe(audio_path, language="ar")
 return {
 "file": audio_path,
 "text": " ".join(s.text for s in segments),
 "language": info.language
 }

audio_files = list(Path("/recordings").glob("*.mp3"))
results = [process_audio_file(str(f)) for f in audio_files]

with open("transcriptions.json", "w", encoding="utf-8") as f:
 json.dump(results, f, ensure_ascii=False, indent=2)

Deployment on كلاود

On a Business VPS (4 vCPU / 8 GB RAM) from كلاود (cloud.net.sa), you can run Whisper medium and convert one hour of audio every 3-4 minutes. For faster processing, move to the Enterprise VPS (8 vCPU / 16 GB).

Conclusion

Local Whisper provides high-quality speech-to-text conversion without recurring API costs and without data leaving your servers. Ideal for companies handling sensitive conversations or needing high-volume conversion.


Get Started

Ready to run AI on your own server? Explore AI hosting solutions or configure your server with the specs you need.

Share