كلاود
ذكاء اصطناعي

Whisper: تحويل الصوت لنص بالعربي على سيرفرك

كلاود|٢٠ أبريل ٢٠٢٦|4 دقائق قراءة|٦٨٩ مشاهدة
Whisper: تحويل الصوت لنص بالعربي على سيرفرك

OpenAI Whisper يحوّل المحادثات والاجتماعات لنص. يدعم العربي. على سيرفرك = بدون تكلفة API. نشرح الإعداد.

إعداد Whisper لتحويل الكلام إلى نص

Whisper من OpenAI هو من أفضل نماذج تحويل الكلام لنص (Speech-to-Text) متاحة مجاناً. يدعم أكثر من 99 لغة بما فيها العربية. هذا الدليل يشرح تشغيله على سيرفرك الخاص.

لماذا Whisper بدل Google Speech أو سحابة أمريكية Transcribe؟

Google Speech-to-Text:
- $0.006/دقيقة للصوت العادي
- $0.009/دقيقة مع التعرف التلقائي على اللغة
- بيانات تذهب لـ Google

سحابة أمريكية Transcribe:
- $0.024/دقيقة
- 260 دقيقة مجانية/شهر فقط

Whisper محلي على سيرفرك:
- مجاني تماماً بعد الإعداد
- لا بيانات تغادر سيرفرك
- جودة تنافس الخدمات التجارية

للشركات التي تتعامل مع محادثات حساسة — اجتماعات مجلس الإدارة، مكالمات المبيعات، جلسات الدعم — Whisper المحلي لا مثيل له.

أحجام نماذج Whisper

النموذج الحجم VRAM الدقة (EN) السرعة
tiny 39 MB 1 GB جيد الأسرع
base 74 MB 1 GB جيد سريع
small 244 MB 2 GB جيد جداً متوسط
medium 769 MB 5 GB ممتاز بطيء
large 1.5 GB 10 GB الأفضل الأبطأ
large-v3 1.5 GB 10 GB الأفضل (جديد) الأبطأ

للعربية: استخدم medium أو large-v3 على الأقل.

التثبيت

# المتطلبات
apt update && apt install -y python3 python3-pip ffmpeg

# تثبيت Whisper
pip install openai-whisper

# للأداء الأسرع مع CUDA GPU
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install openai-whisper

# التحقق
python3 -c "import whisper; print('Whisper installed successfully')"

الاستخدام الأساسي

import whisper

# تحميل النموذج (مرة واحدة، يُخزَّن في ~/.cache/whisper)
model = whisper.load_model("medium")

# تحويل ملف صوتي للنص
result = model.transcribe("meeting_recording.mp3")
print(result["text"])

# مع تحديد اللغة العربية
result = model.transcribe(
 "arabic_audio.mp3",
 language="ar",
 task="transcribe" # أو "translate" للترجمة للإنجليزية
)

print("النص:", result["text"])
print("اللغة المكتشفة:", result["language"])

# مع timestamps
result = model.transcribe(
 "audio.mp3",
 word_timestamps=True,
 verbose=False
)

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

API سريع باستخدام FastAPI

# main.py — Whisper API Server
from fastapi import FastAPI, UploadFile, File
import whisper
import tempfile
import 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=f".{file.filename.split('.')[-1]}"
 ) as tmp:
 content = await file.read
 tmp.write(content)
 tmp_path = tmp.name
 
 try:
 result = model.transcribe(
 tmp_path,
 language=language,
 task="transcribe"
 )
 
 return {
 "text": result["text"],
 "language": result["language"],
 "segments": [
 {
 "start": s["start"],
 "end": s["end"],
 "text": s["text"]
 }
 for s in result["segments"]
 ]
 }
 finally:
 os.unlink(tmp_path) # حذف الملف المؤقت

# تشغيل
# uvicorn main:app --host 0.0.0.0 --port 8000
# اختبار الـ API
curl -X POST http://localhost:8000/transcribe \
 -F "file=@meeting.mp3" \
 -F "language=ar"

Faster Whisper: 4x أسرع

pip install faster-whisper

python3 << 'EOF'
from faster_whisper import WhisperModel

# تحميل النموذج مع int8 quantization
model = WhisperModel("medium", device="cpu", compute_type="int8")

segments, info = model.transcribe("arabic_audio.mp3", language="ar")

print(f"اللغة: {info.language} (ثقة: {info.language_probability:.0%})")

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

print("\nالنص الكامل:", full_text)
EOF

معالجة دفعات من ملفات صوتية

import asyncio
from faster_whisper import WhisperModel
from pathlib import Path

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]

# حفظ النتائج
import json
with open("transcriptions.json", "w", encoding="utf-8") as f:
 json.dump(results, f, ensure_ascii=False, indent=2)

النشر على كلاود

على VPS أعمال (4 vCPU / 8 GB RAM) من كلاود (cloud.net.sa)، تستطيع تشغيل Whisper medium وتحويل ساعة صوت كل 3-4 دقائق. لمعالجة أسرع، انتقل لـ VPS مؤسسة (8 vCPU / 16 GB).

الخلاصة

Whisper محلي يوفر تحويل كلام لنص بجودة عالية بدون تكاليف API متكررة وبدون مغادرة البيانات لسيرفرات خارجية. مثالي للشركات التي تتعامل مع محادثات حساسة أو تحتاج تحويل كميات كبيرة.


ابدأ الآن

جاهز تشغّل الذكاء الاصطناعي على سيرفرك؟ اكتشف حلول استضافة AI أو صمم سيرفرك بالمواصفات المطلوبة.

مشاركة