تثبيت Whisper: التعرف على الكلام والنسخ المستضاف ذاتياً
تثبيت OpenAI Whisper، النسخ السريع مع faster-whisper، دعم اللغات المتعددة، خادم API، نشر Docker وتحسين التعرف على الكلام.
جدول المحتويات
تثبيت Whisper: التعرف على الكلام والنسخ المستضاف ذاتياً
OpenAI Whisper هو نموذج ذكاء اصطناعي قوي قادر على التعرف على الكلام والنسخ في 99 لغة. بتشغيله على خادمك الخاص، يمكنك إجراء نسخ غير محدود، وحماية خصوصيتك، والتخلص من تكاليف API. يغطي هذا الدليل تثبيت Whisper و faster-whisper، وإنشاء خادم API، ونشر Docker.
ما هو Whisper؟
Whisper هو نموذج التعرف التلقائي على الكلام (ASR) طورته OpenAI. تم تدريبه على 680,000 ساعة من البيانات متعددة اللغات. الميزات الرئيسية:
- 99 لغة: النسخ في 99 لغة بما في ذلك العربية
- الترجمة: ترجمة تلقائية من أي لغة إلى الإنجليزية
- الطوابع الزمنية: طوابع زمنية على مستوى الكلمات والجمل
- مقاومة الضوضاء: دقة عالية مع ضوضاء الخلفية
- تنسيقات متعددة: MP3، WAV، M4A، FLAC، OGG والمزيد
- مفتوح المصدر: استخدام مجاني تحت رخصة MIT
أحجام النماذج
| النموذج | المعلمات | VRAM | السرعة | الدقة |
|---|---|---|---|---|
| tiny | 39 م | ~1 جيجابايت | سريع جداً | منخفضة |
| base | 74 م | ~1 جيجابايت | سريع | متوسطة |
| small | 244 م | ~2 جيجابايت | متوسط | جيدة |
| medium | 769 م | ~5 جيجابايت | بطيء | جيدة جداً |
| large-v3 | 1.55 ب | ~10 جيجابايت | الأبطأ | الأفضل |
تثبيت Whisper (Python)
التثبيت الأساسي
# بيئة Python الافتراضية
python3 -m venv whisper-env
source whisper-env/bin/activate
# تثبيت Whisper
pip install openai-whisper
# تثبيت FFmpeg (لمعالجة الصوت)
sudo apt-get install -y ffmpeg
استخدام سطر الأوامر
# النسخ الأساسي
whisper audio.mp3 --model medium --language Arabic
# الترجمة إلى الإنجليزية
whisper audio.mp3 --model medium --task translate
# تنسيق ترجمة SRT
whisper audio.mp3 --model medium --language Arabic --output_format srt
# طوابع زمنية على مستوى الكلمات
whisper audio.mp3 --model medium --language Arabic --word_timestamps True
الاستخدام مع Python
import whisper
# تحميل النموذج
model = whisper.load_model("medium")
# النسخ
result = model.transcribe(
"audio.mp3",
language="ar",
task="transcribe",
word_timestamps=True
)
print(result["text"])
for segment in result["segments"]:
start = segment["start"]
end = segment["end"]
text = segment["text"]
print(f"[{start:.2f} - {end:.2f}] {text}")
تثبيت Faster-Whisper
Faster-whisper هو تنفيذ Whisper قائم على CTranslate2. يعمل أسرع حتى 4 مرات من الأصلي ويستخدم ذاكرة أقل.
pip install faster-whisper
Python مع Faster-Whisper
from faster_whisper import WhisperModel
# تحميل النموذج (GPU)
model = WhisperModel(
"large-v3",
device="cuda",
compute_type="float16"
)
# لوضع CPU
# model = WhisperModel("large-v3", device="cpu", compute_type="int8")
segments, info = model.transcribe(
"audio.mp3",
language="ar",
beam_size=5,
word_timestamps=True,
vad_filter=True
)
print(f"اللغة المكتشفة: {info.language} (الاحتمال: {info.language_probability:.2f})")
for segment in segments:
print(f"[{segment.start:.2f}ث -> {segment.end:.2f}ث] {segment.text}")
إنشاء خادم API
Whisper API مع FastAPI
from fastapi import FastAPI, UploadFile, File
from faster_whisper import WhisperModel
import tempfile
import os
app = FastAPI(title="Whisper API")
model = WhisperModel("large-v3", device="cuda", compute_type="float16")
@app.post("/v1/audio/transcriptions")
async def transcribe(
file: UploadFile = File(...),
language: str = None,
response_format: str = "json"
):
with tempfile.NamedTemporaryFile(delete=False, suffix=os.path.splitext(file.filename)[1]) as tmp:
content = await file.read()
tmp.write(content)
tmp_path = tmp.name
try:
segments, info = model.transcribe(tmp_path, language=language, beam_size=5, vad_filter=True)
segments_list = list(segments)
full_text = " ".join([s.text.strip() for s in segments_list])
return {
"text": full_text,
"language": info.language,
"duration": info.duration,
"segments": [{"start": s.start, "end": s.end, "text": s.text.strip()} for s in segments_list]
}
finally:
os.unlink(tmp_path)
@app.get("/health")
async def health():
return {"status": "ok", "model": "large-v3"}
نشر Docker
Dockerfile
FROM nvidia/cuda:12.4.0-runtime-ubuntu22.04
RUN apt-get update && apt-get install -y \
python3 python3-pip ffmpeg \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt .
RUN pip3 install --no-cache-dir -r requirements.txt
COPY whisper_api.py .
EXPOSE 9000
CMD ["uvicorn", "whisper_api:app", "--host", "0.0.0.0", "--port", "9000"]
Docker Compose
version: '3.8'
services:
whisper:
build: .
container_name: whisper-api
ports:
- "9000:9000"
volumes:
- whisper_cache:/root/.cache
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
whisper_cache:
أمثلة استخدام API
# النسخ مع تحميل ملف
curl -X POST http://localhost:9000/v1/audio/transcriptions \
-F "file=@meeting.mp3" \
-F "language=ar"
# الكشف التلقائي عن اللغة
curl -X POST http://localhost:9000/v1/audio/transcriptions \
-F "file=@audio.wav"
استخدام API مع Python
import requests
def transcribe_audio(file_path, language=None):
url = "http://localhost:9000/v1/audio/transcriptions"
with open(file_path, "rb") as f:
files = {"file": f}
data = {"language": language} if language else {}
response = requests.post(url, files=files, data=data)
return response.json()
result = transcribe_audio("meeting.mp3", language="ar")
print(f"النص: {result['text']}")
print(f"المدة: {result['duration']:.1f} ثانية")
النسخ بالدفعات
import os, glob
from faster_whisper import WhisperModel
model = WhisperModel("large-v3", device="cuda", compute_type="float16")
audio_files = glob.glob("audio_files/*.mp3") + glob.glob("audio_files/*.wav")
for audio_file in audio_files:
print(f"المعالجة: {audio_file}")
segments, info = model.transcribe(audio_file, language="ar", vad_filter=True)
output_file = os.path.splitext(audio_file)[0] + ".txt"
with open(output_file, "w", encoding="utf-8") as f:
for segment in segments:
f.write(f"[{segment.start:.2f} - {segment.end:.2f}] {segment.text}\n")
print(f" تم الحفظ: {output_file}")
قم بالتعرف على الكلام والنسخ بسرعة عالية مع Whisper على خوادم REXE GPU. احصل على نتائج عالية الدقة في 99 لغة مع نموذج large-v3.
مقالات ذات صلة
تثبيت Ollama: دليل تشغيل نماذج اللغة الكبيرة محلياً
تثبيت Ollama، تشغيل نماذج LLM المحلية (Llama 3، Mistral، Gemma)، استخدام API، إدارة النماذج، تسريع GPU والنشر عبر Docker.
تثبيت Open WebUI: ذكاء اصطناعي محلي بواجهة شبيهة بـ ChatGPT
تثبيت Open WebUI عبر Docker، التكامل مع Ollama، إدارة المستخدمين، RAG (استعلام المستندات)، إدارة النماذج ودعم المستخدمين المتعددين.
نشر نماذج الذكاء الاصطناعي على خادم GPU: دليل NVIDIA CUDA
تثبيت تعريفات NVIDIA، مجموعة أدوات CUDA، nvidia-container-toolkit، خدمة النماذج مع vLLM، مراقبة GPU ونشر نماذج AI مع Docker.