كيفية تشغيل Nemotron 3.5 Transcribe محليًا: GPU واحد، ملفات لمدة ساعة، بدون فاتورة API

شغّل أفضل نموذج صوتي مفتوح الأوزان من إنفيديا على وحدة معالجة الرسومات الخاصة بك: أي البطاقات تعمل (H100، L40S، RTX 5090 مع NVFP4)، والأوامر الدقيقة الخاصة بـ vLLM وSGLang-Omni وTransformers من بطاقة النموذج، وأرقام الإنتاجية الفعلية، وإصلاحات للإعدادات التي تربك المستخدمين.

INEZA Felin-Michel

INEZA Felin-Michel

29 أكتوبر 2026

كيفية تشغيل Nemotron 3.5 Transcribe محليًا: GPU واحد، ملفات لمدة ساعة، بدون فاتورة API

Apidog للمؤسسات

النشر على الخوادم المحلية

SSO و RBAC

متوافق مع SOC 2

استكشف Apidog للمؤسسات

يمكنك تشغيل نموذج Nemotron 3.5 Transcribe الجديد من NVIDIA على وحدة معالجة رسومات واحدة ونسخ تسجيلات مدتها ساعة كاملة في 40 لغة دون دفع مقابل كل دقيقة أو إرسال الصوت إلى أي جهة خارجية. إنه أفضل نموذج مفتوح الأوزان على لوحة صدارة Hugging Face Open ASR، ويُطرح بموجب ترخيص OpenMDW-1.1 الملائم للاستخدام التجاري، وقد نشرت NVIDIA أوزان BF16 وFP8 وNVFP4 في يوم الإطلاق، 28 أكتوبر 2026.

يغطي هذا الدليل العتاد الذي تحتاجه، والطرق الثلاث لتشغيله (vLLM وSGLang-Omni وTransformers)، والأوامر الدقيقة من بطاقة النموذج الرسمية، والإعدادات التي يخطئ فيها الناس. وقد نُسخت جميع الأوامر من البطاقة في 29 أكتوبر 2026.

جديد على النموذج؟ يشرح دليلنا المجاني ما يفعله وكيف يُصنَّف. ليس لديك وحدة معالجة رسومات؟ تبلغ تكلفة واجهة API المستضافة 0.002 دولار لكل دقيقة.

Architecture diagram of Nemotron 3.5 Transcribe: audio feeds a 600M ASR encoder and a speaker encoder, which feed a hybrid Mamba-2 and Transformer mixture-of-experts language model with 34B total and about 4.3B active parameters

لماذا تشغّله محليًا

العتاد: ما الذي يشغّله

يمتلك النموذج 34 مليار معامل إجمالًا ونحو 4.3 مليار معامل نشطة، لذا فإن الأوزان كبيرة حتى وإن كان الحساب لكل رمز (token) صغيرًا. الهدف المرجعي لدى NVIDIA هو وحدة H100 بسعة 80 جيجابايت بدقة BF16. جدول التوافق من بطاقة النموذج:

GPU Precisions Runtimes
H100, H200 BF16, FP8 vLLM 0.32.0, Transformers, SGLang-Omni 0.2.0 (H100)
A100 80 GB BF16 vLLM 0.32.0, Transformers
L40S 48 GB FP8 vLLM 0.32.0, Transformers
B200, GB200, GB300 DGX Station BF16, FP8, NVFP4 vLLM 0.32.0, Transformers
DGX Spark (GB10), Jetson Thor BF16, FP8, NVFP4 vLLM 0.32.0, Transformers
RTX PRO 6000 Blackwell Server BF16, FP8, NVFP4 vLLM, Transformers, SGLang-Omni, GGML
RTX 5090 (32 GB) NVFP4 only vLLM 0.32.0, Transformers, GGML

اختر نقطة التحقق (checkpoint) المناسبة لبطاقتك:

بطاقة بسعة 24 جيجابايت مثل RTX 4090 ليست على القائمة، وApple Silicon غير مدعوم. أنظمة التشغيل هي Linux، أو Windows عبر WSL2. يعمل GGML أيضًا على Windows الأصلي، لكن تدوينة إطلاق NVIDIA تقول إن بناء NeMo-Speech.cpp المحلي لا يزال «قريبًا».

الخيار الأول: خادم vLLM (موصى به)

يمنحك vLLM نقطة نهاية متوافقة مع OpenAI مع التجميع على دفعات (batching)، وملفات مدتها ساعة، وفك الترميز التخميني (speculative decoding)، والطوابع الزمنية للكلمات. يحتاج إلى vLLM 0.32.0 بالإضافة إلى أحدث فرع main من NeMo Speech، الذي يوفّر إضافة vLLM الخاصة بالنموذج.

Comparison diagram of the three local run options for Nemotron 3.5 Transcribe: vLLM with NeMo Speech for full features, SGLang-Omni for plain transcription, and Transformers for scripts

التثبيت

تستخدم البطاقة uv وPython 3.13:

git clone https://github.com/NVIDIA-NeMo/Speech.git nemo-speech
cd nemo-speech
uv venv --python 3.13 .venv
UV_PROJECT_ENVIRONMENT=$PWD/.venv uv sync --extra asr --extra vllm --locked --no-install-project
uv pip install --python .venv/bin/python --no-deps -e .
uv pip install --python .venv/bin/python --no-deps av==19.0.2
uv pip install --python .venv/bin/python --no-deps opencv-python-headless==5.0.0.93
source .venv/bin/activate
hf download nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B --local-dir ./NVIDIA-Nemotron-3.5-Transcribe-30B-A4B

تتيح PyAV (وهي av) فك ترميز ملفات M4A وغيرها من الصيغ المضغوطة دون الحاجة إلى FFmpeg على النظام. أما OpenCV فهي موجودة لأن vLLM يحتاجها بينما تُسقطها إعدادات تبعيات NeMo.

تشغيل الخادم

export VLLM_PLUGINS=nemo_speechlm
export VLLM_MAX_AUDIO_DECODE_DURATION_S=3600
export VLLM_MAX_AUDIO_CLIP_FILESIZE_MB=180
export VLLM_USE_V2_MODEL_RUNNER=0
vllm serve ./NVIDIA-Nemotron-3.5-Transcribe-30B-A4B \
  --served-model-name nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B \
  --trust-remote-code --dtype bfloat16 --gpu-memory-utilization 0.94 \
  --max-model-len 65536 --max-num-batched-tokens 4096 --max-num-seqs 192 \
  --enable-chunked-prefill --no-enable-prefix-caching \
  --use-replayssm --mamba-backend flashinfer --mamba-cache-mode none \
  --mm-processor-cache-gb 0 --no-async-scheduling \
  --limit-mm-per-prompt '{"audio":{"count":6,"length":120000000}}' \
  --speculative-config '{"method":"mtp","num_speculative_tokens":8}' \
  --reasoning-parser nemotron_v3 \
  --trust-request-mm-kwargs \
  --middleware nemo.collections.speechlm2.vllm.salm.ctc_serving.ctc_timestamp_middleware

المعلَمات (flags) التي يستحق فهمها:

يستمع الخادم على 127.0.0.1:8000. أضف --host 0.0.0.0 للوصول إليه من أجهزة أخرى على شبكتك.

أرسل ملفًا

import base64
from openai import OpenAI

client = OpenAI(base_url="http://127.0.0.1:8000/v1", api_key="EMPTY")
audio = base64.b64encode(open("standup.wav", "rb").read()).decode()

response = client.chat.completions.create(
    model="nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B",
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "Transcribe the following audio."},
        {"type": "audio_url", "audio_url": {"url": f"data:audio/wav;base64,{audio}"}},
    ]}],
    temperature=0,
    extra_body={"chat_template_kwargs": {"enable_thinking": False}, "skip_special_tokens": False},
)
print(response.choices[0].message.content)

استبدل تعليمة النص بأي مطالبة مهمة. لاجتماع فيه عدة أصوات:

Transcribe verbatim, including fillers. Write numbers as spoken, without punctuation or capitalization. Start every speaker turn with <spk:0>, <spk:1>, etc. Keep one stable tag per speaker. Output only the speaker-tagged transcript.

لطلبات الطوابع الزمنية للكلمات قواعد: تسجيل واحد لكل طلب، وstream=false وn=1. وعندها يتضمن الرد كائن ctc_timestamps يحتوي على الكلمات وأوقات البداية والنهاية بالثواني ووسوم المتحدثين.

الخيار الثاني: SGLang-Omni للنسخ النصي البسيط

إذا كنت تحتاج فقط إلى نص من ملفات كاملة، فإن SGLang-Omni 0.2.0 أبسط ولا يحتاج إلى NeMo. وقد تم التحقق من صحته على وحدة H100 بسعة 80 جيجابايت ووحدة RTX PRO 6000 Blackwell بنقطة تحقق BF16 أو FP8.

sgl-omni serve \
  --model-path nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B \
  --model-name nemotron-transcribe \
  --mem-fraction-static 0.85 \
  --port 8000

curl http://localhost:8000/v1/audio/transcriptions \
  -F model=nemotron-transcribe \
  -F file=@audio.wav

مسار /v1/audio/transcriptions ذاك يطابق الشكل الذي تستخدمه واجهة Whisper API من OpenAI، لذا غالبًا لا يحتاج كود عميل Whisper الحالي سوى عنوان أساسي جديد. المقابل: لا طوابع زمنية للكلمات، ولا وسوم للمتحدثين، ولا ترجمة، ولا فك ترميز تخميني في هذا التكامل.

الخيار الثالث: Transformers داخل سكربت

لدفاتر الملاحظات (notebooks) والمهام لمرة واحدة، شغّله داخل العملية ذاتها مع Hugging Face Transformers المثبّت من المصدر:

pip install git+https://github.com/huggingface/transformers
from transformers import AutoModelForMultimodalLM, AutoProcessor

model_id = "nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto")

prompt = ("Transcribe this audio with punctuation and capitalization. Include all spoken words "
          "and verbal fillers. Put speaker tags <spk:0> <spk:1> <spk:2> <spk:3> on the transcription.")
inputs = processor.apply_transcription_request(["podcast.mp3"], prompt=[prompt]).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=4096)
print(processor.decode(outputs[:, inputs.input_ids.shape[1]:], skip_special_tokens=False))

إنها أسهل طريقة للبدء وأبطأ طريقة للتشغيل على نطاق واسع. ارفع max_new_tokens للملفات الطويلة: فالساعة الكثيفة بالكلام قد تنتج نحو 20,000 رمز.

ما مدى سرعته على وحدة معالجة الرسومات الخاصة بك؟

الرقم الرئيسي لدى NVIDIA هو 2,238 ثانية من الصوت لكل ثانية على وحدة RTX PRO 6000 Blackwell واحدة، مع أوزان NVFP4 وفك الترميز التخميني DFlash2، و0.13 ثانية لإرجاع مقطع مدته 30 ثانية. اقرأ الحاشية: هذه الأرقام تأتي من NIM المُحسّن، الذي لم تُنشر تغييراته في الخدمة كمصدر مفتوح بعد. وتقول البطاقة إن تكامل vLLM المفتوح يُتوقع أن يكون أبطأ بنحو مرتين.

للنسخ الإنجليزي المجمّع على دفعات على H100 بدقة BF16، تسرد البطاقة أرقام RTFx التالية (ثواني الصوت لكل ثانية من الحساب):

Speculative decoding RTFx
MTP2 410
DFlash2, K=7 340
MTP8 270
DFlash2, K=15 260

حتى أبطأ صف يتجاوز ساعة من الصوت في أقل من 15 ثانية من زمن وحدة معالجة الرسومات في العمل المجمّع على دفعات. وإذا أردت نموذج المسودة DFlash2، فاعلم أن vLLM 0.32.0 يحتاج إلى تصحيح صغير من البطاقة، وأن DFlash2 يعطّل الطوابع الزمنية للكلمات، ولا ينبغي جمعه مع MTP.

مشكلات شائعة وحلولها

إذا كنت جديدًا على vLLM نفسه، فإن شرحنا لـ vLLM يغطي كيفية تجميعه للطلبات على دفعات وإدارته لذاكرة وحدة معالجة الرسومات.

دع وكيل البرمجة لديك يختبر الخادم المحلي باستخدام Apidog CLI

لا يكون النموذج المحلي مفيدًا إلا إذا بقيت نقطة نهايته صحيحة عبر ترقيات vLLM وتعديلات المطالبات وتبديل نقاط التحقق. دع وكيل البرمجة لديك يتولى ذلك باستخدام Apidog CLI، بتشغيل الفحوصات ضد http://127.0.0.1:8000 من الجهاز نفسه.

npm install -g apidog-cli@latest
apidog login --with-token <YOUR_TOKEN>
npx -y skills add https://apidog.com   # pick your agent when prompted

ثم أعطِ وكيلك مطالبة واحدة:

In Apidog project <id>, add POST {{baseUrl}}/v1/chat/completions for my local
Nemotron 3.5 Transcribe server. Create test cases that send samples/en.wav and
samples/two-speakers.wav as base64 audio_url content with temperature 0, and assert
status 200, a non-empty choices[0].message.content, and at least two distinct <spk:N>
tags for the two-speaker file. Run them against the local environment and report failures.

يقرأ الوكيل المخطط، ويتحقق من صحة حمولته، ويكتب الحالات ويشغّلها:

apidog cli-schema get test-case-create
apidog cli-schema validate test-case-create --file case.json
apidog test-case create --project <id> --file case.json
apidog run --test-case <caseId> --project <id> -e <envId> -r cli,json

شغّله بعد كل ترقية للخادم، أو اربط apidog run ... -r junit بـ CI كما هو موضح في Apidog CLI في خط أنابيب CI/CD. لإعداد الوكيل، راجع Apidog CLI في Claude Code.

الأسئلة الشائعة

هل يمكنني تشغيل Nemotron 3.5 Transcribe على RTX 4090؟ إنها ليست على قائمة التوافق لدى NVIDIA. أصغر بطاقة استهلاكية مُدرجة هي RTX 5090 مع نقطة تحقق NVFP4.

هل يعمل على Mac؟ لا يدعم أي وقت تشغيل رسمي Apple Silicon حتى 29 أكتوبر 2026.

هل الاستخدام المحلي مجاني للمنتجات التجارية؟ يسمح ترخيص OpenMDW-1.1 بالاستخدام التجاري وغير التجاري. اقرأ نص الترخيص لمعرفة شروط الإسناد قبل الإطلاق.

هل يمكنه نسخ الصوت المباشر؟ لا. إنه نموذج غير متصل (offline) للملفات المسجلة. وتوفّر NVIDIA نموذجًا منفصلًا هو Nemotron 3.5 ASR Streaming للاستخدام المباشر.

أيهما أسرع، vLLM أم SGLang-Omni؟ لا تنشر NVIDIA مقارنة مباشرة بينهما. استخدم vLLM عندما تحتاج إلى طوابع زمنية أو متحدثين أو ترجمة، وSGLang-Omni لأبسط خادم نصي فقط.

كيف يُصنَّف مقابل النماذج المحلية الأخرى؟ يتصدر كل نموذج مفتوح الأوزان على لوحة صدارة Open ASR بتاريخ 28 أكتوبر. وتقارنه قائمتنا أفضل نماذج تحويل الكلام إلى نص مفتوحة المصدر بـ Qwen3-ASR وGranite Speech وCanary-Qwen وVoxtral وWhisper.

شغّله

نزّل نقطة التحقق التي تناسب وحدة معالجة الرسومات لديك، وشغّل vLLM مع حد الصوت البالغ ساعة واحدة وبرمجية الطوابع الزمنية الوسيطة، وأرسل ملف WAV عبر عميل OpenAI. ثم دع وكيلك يشغّل فحوصات Apidog ضد نقطة النهاية المحلية حتى تُثبت كل ترقية أنه لا يزال ينسخ بنجاح قبل أن تثق به في تسجيلات حقيقية.

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات