OpenAI Realtime API + تطبيقات مغير الصوت

كيفية دمج مغير الصوت في خط أنابيب إدخال OpenAI Realtime API — التقاط صوت منخفض الكمون بميكروفون افتراضي، توجيه WebRTC، ميزانية الكمون، وحالات الاستخدام الفعلية للمطورين.

بناء تطبيقات مساعد صوتي باستخدام OpenAI Realtime API يفتح مساحة تصميم جديدة: ماذا لو أن الصوت الذي يسمعه النموذج لم يكن ميكروفون خام، بل صوت شخصية معالج يعمل من خلال مغير صوت محلي؟ هذا التغيير الوحيد يفتح مساعدون مقفولون للشخصية، ومدرسو تعلم اللغات بإدخال النبر الأصلي، وعملاء الدعم مع أصوات مميزة، وعملاء AI يبدون متسقين بغض النظر عن من يقومون بتشغيلهم.

يغطي هذا الدليل خط الأنابيب الكامل — التقاط الصوت، توجيه الميكروفون الافتراضي، مصافحة WebRTC، ميزانية الكمون، والمقايضات العملية التي ستواجهها في الإنتاج.

ملخص سريع

المرحلةنطاق الكمونملاحظات
تأثير صوت DSP10-20 ميلي ثانيةالملعب والمعادل والصدى — يعمل على المعالج
استنساخ صوت AI50-300 ميلي ثانيةيعتمد على النموذج والأجهزة
الشبكة (العميل→API)15-40 ميلي ثانيةWebRTC UDP، نقطة نهاية إقليمية
استدلال Realtime API300-800 ميلي ثانيةتوليد النموذج و TTS
الشبكة (API→العميل)15-40 ميلي ثانيةأول رمز بث
الذهاب والإياب الكلي0.5-1.5 ثمقبول لمعظم تجارب المساعد

إذا كنت بحاجة إلى مخطط معماري قبل الغوص العميق: اقفز إلى قسم المعمارية.

لماذا إضافة مغير صوت إلى خط أنابيب الإدخال

Realtime API عبارة عن قناة ثنائية الاتجاه للصوت والنص. تأخذ الصوت؛ ينقل النموذج البيانات والعكس. الصوت الوارد هو مجرد PCM — ليس لدى API مفهوم “الأصلي مقابل المعالج”. هذا يعني أنه يمكنك حقن أي مصدر صوت تريده.

أسباب لمعالجة الإدخال قبل وصوله إلى API:

اتساق الشخصية. إذا كان خمسة وكلاء دعم مختلفين يتعاملون مع المكالمات، فإن أصواتهم الطبيعية تختلف. تشغيل كل منهم من خلال نفس ملف تعريف الصوت ينشئ صوت علامة تجارية موحد حتى يتمكن النموذج من “رؤيته” (وللسجلات الداخلية من المطابقة). هذا منفصل عن صوت الإخراج TTS — أنت تشكل ما يسمعه النموذج من المشغل، مما يؤثر على توقيت الأدوار وبشكل خفي على مرآة نبرة النموذج.

تطبيقات تعلم اللغات. يمكن لطالب يمارس الإسبانية ضبط مغير الصوت لتسطيح لهجتهم نحو ملف تعريف محايد لـ LATAM قبل أن يضرب الصوت Realtime API. يتلقى النموذج فونيمات أنظف للغة المستهدفة، وتتحسن دقة ASR، ويحصل المتعلم على تعليقات معايرة لإدخال بنطق أصلي بدلا من إدخال شديد اللكنة.

الخصوصية والتجهيل. في نشر المؤسسة، قد لا يرغب المشغلون في تخزين أصواتهم الحقيقية في سجلات API. معالجة الصوت قبل استدعاء API تعني أن الصوت المخزن محول، وليس صوت المتحدث البيومتري.

خطوط أنابيب عملاء AI. يمكن إعطاء العملاء المؤتمتة “بصمة صوتية” متسقة يربطها النموذج بدور محدد. في تنسيق العملاء المتعددين، يمكن أن يكون لدى عملاء مختلفين أصوات مميزة صوتيا حتى لو كانوا يعملون على نفس الأجهزة.

كيفية عمل خط أنابيب الصوت

المسار القياسي بدون مغير صوت:

ميكروفون → نظام صوت نظام التشغيل → متصفح/Electron getUserMedia → مسار WebRTC → Realtime API

مع مغير صوت في مرحلة الإدخال:

ميكروفون → مغير الصوت → إخراج ميكروفون افتراضي → متصفح/Electron getUserMedia → مسار WebRTC → Realtime API

المفتاح هو جهاز الميكروفون الافتراضي. على Windows، يظهر جهاز صوت افتراضي متوافق مع التقاط الصوت منخفض الكمون في قائمة أجهزة نظام التشغيل جنبا إلى جنب مع الميكروفونات الفيزيائية. عند استدعاء navigator.mediaDevices.getUserMedia({ audio: { deviceId: virtualMicId } }), تحصل على MediaStreamTrack يحمل الصوت المعالج. يستهلك اتصال WebRTC هذا المسار — لا يرى OpenAI Realtime API مطلقا أنه جاء من جهاز افتراضي.

VoxBooster يكشف بالضبط هذا: ميكروفون افتراضي منخفض الكمون يظهر في أي متصفح أو تطبيق Electron كجهاز إدخال قياسي. استنساخ صوت AI تحت 300ms وتأثيرات DSP تحت 20ms كلاهما يكتب إلى هذا الإخراج الافتراضي، حتى تتمكن من الانتقال بينهما في الوقت الفعلي بدون إعادة توصيل جلسة WebRTC.

الرسم التوضيحي للمعمارية

┌─────────────────────────────────────────────────────────┐
│  Windows 10/11                                          │
│                                                         │
│  ميكروفون فيزيائي ──► مغير الصوت ──► جهاز ميكروفون افتراضي │
│                    (10-300 ميلي ثانية)  (التقاط صوت منخفض الكمون)        │
└─────────────────────────────┬───────────────────────────┘
                              │ getUserMedia(deviceId)

┌─────────────────────────────────────────────────────────┐
│  متصفح / تطبيق Electron                                 │
│                                                         │
│  MediaStream ──► RTCPeerConnection                      │
│                  عرض/إجابة WebRTC                        │
│                  ICE + DTLS-SRTP                        │
└─────────────────────────────┬───────────────────────────┘
                              │ UDP (SRTP)

┌─────────────────────────────────────────────────────────┐
│  OpenAI Realtime API                                    │
│                                                         │
│  VAD → النسخ → استدلال النموذج → إخراج TTS             │
│  (نقل WebRTC أو WebSocket)                             │
└─────────────────────────────────────────────────────────┘

يدعم Realtime API كلا من WebRTC (الأفضل لتطبيقات المتصفح، يتعامل مع الارتعاش وNAT تلقائيا) و WebSocket (الأفضل لخطوط أنابيب Node.js من جانب الخادم حيث تتحكم في مخزن مؤقت PCM مباشرة).

إعداد اتصال WebRTC

يتطلب مسار OpenAI Realtime API WebRTC رمزا مؤقتا. التدفق النموذجي:

  1. ينادي العميل الخاص بك POST /v1/realtime/sessions بمفتاح API وينقل سرا عميل قصير الأجل.
  2. يستخدم العميل الأمامي هذا السر لإنشاء RTCPeerConnection مع بنية OpenAI TURN/STUN.
  3. تضيف مسار الميكروفون الافتراضي MediaStreamTrack إلى اتصال النظير.
  4. ينقل الاتصال صوت الصوت المعالج إلى النموذج.

مقطع JavaScript الحد الأدنى:

// 1. احصل على رمز مؤقت من العميل الخاص بك
const { client_secret } = await fetch('/api/realtime-token').then(r => r.json());

// 2. عدد الأجهزة والعثور على الميكروفون الافتراضي
const devices = await navigator.mediaDevices.enumerateDevices();
const virtualMic = devices.find(d => d.kind === 'audioinput' && d.label.includes('VoxBooster'));

// 3. التقط صوتا معالجا
const stream = await navigator.mediaDevices.getUserMedia({
  audio: { deviceId: virtualMic.deviceId, echoCancellation: false, noiseSuppression: false }
});

// 4. بناء اتصال WebRTC
const pc = new RTCPeerConnection();
pc.addTrack(stream.getAudioTracks()[0]);

// 5. الاتصال بـ Realtime API
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);

const sdpResponse = await fetch('https://api.openai.com/v1/realtime', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${client_secret.value}`,
    'Content-Type': 'application/sdp'
  },
  body: offer.sdp
});

await pc.setRemoteDescription({ type: 'answer', sdp: await sdpResponse.text() });

ملاحظة: تعطيل echoCancellation و noiseSuppression في قيود getUserMedia عندما يتعامل مغير الصوت بالفعل مع هذه. تكديس معالجة الضوضاء على مستوى المتصفح على الصوت المعالج يقدم عناصر معالجة مزدوجة.

ميزانية الكمون بالعمق

نطاق 0.5-1.5 ثانية هو مظرف التخطيط. إليك كيفية تضييقها:

مرحلة معالجة الصوت (10-300 ميلي ثانية). تأثيرات DSP (الملعب والمعادل والجوقة والصدى) عملية في الوقت الفعلي في 10-20 ميلي ثانية. يتطلب استنساخ صوت AI نافذة lookahead — عادة 50-150 ميلي ثانية لإخراج رمز أول — وتتسع مع حجم النموذج وتوفر GPU. على جهاز بدون GPU منفصل، توقع 150-300 ميلي ثانية لاستنساخ AI. على GPU للألعاب من الدرجة المتوسطة، يعمل نفس النموذج في 50-80 ميلي ثانية.

الشبكة إلى API (15-40 ميلي ثانية). WebRTC UDP أسرع من WebSocket TCP للصوت. استخدم نقطة نهاية API الإقليمية الأقرب إلى المستخدمين — توجه OpenAI إلى مركز البيانات الأقرب تلقائيا، لكن إذا كنت تعيد التوجيه من خلال العميل الخاص بك، فضع هذا العميل بالقرب من نقطة نهاية API.

استدلال Realtime API (300-800 ميلي ثانية). هذا هو الحد الأساسي السائد وليس يمكن التحكم فيه من قبل المستخدم. gpt-4o-realtime-preview يعمل بشكل أسرع من الطرز الأكبر. ضبط max_response_output_tokens قصير يقلل من الانتظار لأول رمز صوت. استخدام turn_detection: { type: 'server_vad' } مع threshold معاير يتجنب أكمال الأدوار الكاذبة التي تؤدي إلى الاستدلال المبكر.

إخراج البث (15-40 ميلي ثانية). يبث API قطع صوت عند توليدها. عادة ما تصل قطعة الصوت الأولى في غضون 300-500 ميلي ثانية من اكتشاف أكمال الدور. إذا كنت تطبق تحويل صوت على الإخراج أيضا، أضف 10-50 ميلي ثانية لهذه المرحلة.

جدول حالات الاستخدام والشخصية

حالة الاستخدامملف تعريف صوت الإدخاللماذا يهم
روبوت دعم العملاء المميزصوت احترافي محايدصوت علامة تجارية متسق بغض النظر عن المشغل
مدرس تعلم اللغاتتسطيح لهجة اللغة المستهدفةأفضل ASR على إخراج المتعلم
رفيق AI للألعابصوت الخيال/الشخصيةالانغماس؛ رفيق يبدو مختلفا عن اللاعب
وكيل AI للمؤسسةبصمة صوتية مخصصة للدورخطوط أنابيب متعددة الوكلاء، تمييز التدقيق
عامل حفظ الخصوصيةصوت مجهولالحماية البيومترية في الصوت المسجل
مساعد الوصولوضوح الكلام المعياريالإدخال الأنظف يحسن ASR للكلام dysarthric

التعامل مع كشف نشاط الصوت

يحدد VAD من Realtime API متى تنتهي دورة المتحدث وتشغل الاستدلال على النموذج. مع الصوت المعالج، يمكن أن تنشأ بعض المشاكل:

ذيل الصدى الإيجابية الكاذبة. يمتد الصدى الثقيل حافة الصوت بعد توقف المتحدث. قد يفسر VAD هذا على أنه كلام مستمر ويؤخر كشف المنعطف. الحل: تقليل وقت تحلل الصدى، أو إضافة حشو صغير silence_duration_ms لتكوين VAD.

تأثيرات الملعب وعتبة الطاقة. تحويلات الملعب الشديدة تحول الطاقة إلى نطاقات تردد لم يتم تدريب نموذج طاقة VAD عليها. إذا فاتت VAD أصوات الكلام، اخفض معامل threshold في تكوين turn_detection.

استنساخ AI lookahead والارتعاش. إذا أدخل نموذج استنساخ الصوت كمون متغير (الارتعاش)، فإن تيار الصوت له توقيت حزم غير منتظم. يمكن أن يسبب هذا إفراط في مخزن مؤقت الارتعاش في مسار WebRTC. تخفيف بإضافة 50 ميلي ثانية من مخزن مؤقت الارتعاش على جانب الإرسال، أو باستخدام نقل WebSocket حيث تتحكم في معدل كتابة PCM بدقة.

بالنسبة لاختبار fallback القائم على Whisper — مفيد عند التحقق من أن الصوت المعالج ينتج نسخ نظيفة قبل نشر تكامل Realtime API الكامل — يمكنك نقل إخراج الميكروفون الافتراضي إلى نموذج Whisper محلي وفحص النسخ. هذا أسرع من الاستكشاف أكثر من استدعاءات API المباشرة.

بناء جانب الإخراج

مغير الصوت في الإدخال هو نصف الصورة. لمساعد مقفول الشخصية حقا، تريد أيضا أن يمر إخراج صوت النموذج من خلال تحويل صوت قبل أن يصل إلى مكبرات الصوت لدى المستخدم. هذا أبسط لأنه معالجة لاحقة: تقبض إخراج MediaStreamTrack، قم بتشغيله من خلال مصنع صوت أو سلسلة DSP محلية، وتسير إلى مكبرات الصوت.

الأنماط الشائعة:

  • تشغيل الإخراج من خلال تعديل الملعب لمطابقة سجل الشخصية
  • تطبيق ملف تعريف معادل متسق (دفع الحضور، انخفاض الدفء الطفيف)
  • إضافة صدى غرفة طفيف للشخصيات المقصود أن تبدو في مساحة فيزيائية

خط الأنابيب المدمج يبدو بعد ذلك:

[ميكروفون المشغل] → مغير الصوت → ميكروفون افتراضي → Realtime API → إخراج TTS → تأثيرات صوت الإخراج → مكبرات الصوت

قائمة مراجعة التكامل

قبل نقل تكامل الإنتاج:

  • تأكد من ظهور جهاز الميكروفون الافتراضي في enumerateDevices() وينجو من تحديث المتصفح
  • تعطيل إلغاء الصدى والكبت على مستوى المتصفح (مغير الصوت يتعامل معه)
  • قياس كمون معالجة الصوت على الجزء المئوي من الأجهزة المستهدفة (p95، وليس المتوسط)
  • اختبر سلوك VAD مع ملف تعريف الصوت المحدد — تحقق من أدوار البداية المفقودة والنهايات الكاذبة
  • ضبط max_response_output_tokens لتحديد كمون رمز الصوت الأول للمبادلات القصيرة
  • إضافة تدهور سلس: إذا اختفى الميكروفون الافتراضي (أغلق المستخدم VoxBooster)، الرجوع إلى الميكروفون الفيزيائي
  • بالنسبة للإنتاج، جعل طلب الرمز المؤقت من خلال العميل الخاص بك — لا تكشف مطلقا مفتاح OpenAI API في المتصفح

للحصول على مقدمة أعمق حول Realtime API نفسه، انظر توثيق OpenAI Realtime API. مقالة WebRTC Wikipedia هي مرجع جيد لفهم طبقة النقل إذا كنت جديدا عليها.

ما VoxBooster تضيفه إلى المكدس

VoxBooster هي تطبيق معالجة صوت Windows 10/11 يناسب في هذه المعمارية في طبقة الميكروفون الافتراضي. الخصائص المحددة ذات الصلة بتكامل Realtime API:

  • ميكروفون افتراضي منخفض الكمون مع التقاط الصوت بدون محرك kernel — يظهر في قوائم أجهزة المتصفح بعد التثبيت مباشرة، بدون إعادة تشغيل
  • مسار DSP تحت 20 ميلي ثانية للملعب والمعادل والتأثيرات — يبقي ميزانية معالجة الصوت منخفضة بما يكفي للبقاء تحت 1 ثانية للذهاب والإياب على معظم الأجهزة
  • استنساخ صوت AI تحت 300 ميلي ثانية يعمل على CPU أو GPU — بدون تبعية سحابية، الصوت يبقى محليا
  • كبت الضوضاء المدمج يعني أنه يمكنك بأمان تعطيل معالجة الضوضاء على مستوى المتصفح دون تدهور جودة الصوت

VoxBooster متاح في $6.99/شهر أو R$29,90/شهر — ترخيص واحد يغطي مجموعة الميزات الكاملة بما في ذلك الميكروفون الافتراضي، استنساخ AI، لوحة الصوت، وكبت الضوضاء.

قراءة ذات صلة


البناء على OpenAI Realtime API مثير للاهتمام حقا، وخط أنابيب الإدخال الصوتي هو أحد أقل الأجزاء موثقة من المكدس. إذا كنت تجرب أصوات الشخصية أو مدرسي اللغات أو تمييز الوكيل، فإن النهج الميكروفون الافتراضي الموضح هنا هو أقل مسار احتكاك على Windows — بدون معالجة صوت من جانب الخادم، بدون كمون من قفزة شبكة إضافية، فقط الصوت المعالج يذهب مباشرة إلى مسار WebRTC.

تنزيل VoxBooster وجرب الميكروفون الافتراضي مع Realtime API. يستغرق الإعداد أقل من خمس دقائق.

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

هل يمكن استخدام مغير صوت مع OpenAI Realtime API؟ نعم. يتلقى Realtime API الصوت من خلال مسار وسائط WebRTC قياسي أو تدفق PCM خام. إذا كان مغير الصوت لديك ينتج عنه ميكروفون افتراضي، فيمكنك تمرير هذا الجهاز الافتراضي كمصدر إدخال صوت عند إنشاء الاتصال. ليس لدى API طريقة للتمييز بين الصوت المعالج والصوت غير المعالج.

ما هو الكمون الإجمالي عند دمج مغير الصوت مع Realtime API؟ توقع 0.5-1.5 ثانية للذهاب والإياب في النشرات النموذجية. تضيف معالجة الصوت 10-300 ميلي ثانية حسب نوع التأثير. يساهم Realtime API نفسه بـ 300-800 ميلي ثانية لاستدلال النموذج وتوليد الاستجابة. تضيف رحلات الشبكة ذهابا وإيابا 30-80 ميلي ثانية أخرى.

هل يدعم OpenAI Realtime API WebRTC بشكل أصلي؟ نعم. أضافت OpenAI دعم WebRTC الأصلي جنبا إلى جنب مع نقل WebSocket الأصلي. WebRTC هو المسار المفضل للتطبيقات المستندة إلى المتصفح وتطبيقات Electron لأنها تتعامل مع اجتياز NAT، تخزين مؤقت للارتعاش واسترجاع فقدان الحزم تلقائيا.

ما هو كمون مغير الصوت المقبول قبل أن يرفض Realtime API الصوت؟ لا يرفض Realtime API الصوت بناءً على الكمون — فهو يعالج ما يتلقاه. السقف العملي هو تجربة المستخدم: فوق حوالي 300 ميلي ثانية من كمون معالجة الصوت، يصبح تأخير المتحدث إلى النموذج ملحوظا أثناء أدوار المحادثة الطبيعية.

هل يمكنني استخدام هذا الإعداد لروبوت دعم العملاء بصوت مميز؟ نعم، وهي واحدة من أقوى حالات الاستخدام. تمرر صوت المشغل من خلال مغير صوت يعينه إلى شخصية مميزة متسقة، ثم تطعم الإخراج إلى Realtime API.

هل يعمل هذا في متصفح بدون تطبيق سطح المكتب؟ في المتصفح على Windows، يظهر ميكروفون افتراضي منخفض الكمون يعتمد على التقاط الصوت في قائمة أجهزة المتصفح. يمكن أن تعالج التطبيقات الويب البحتة الصوت أيضا عبر Web Audio API وتطعم البث المعالج مباشرة إلى مسار WebRTC بدون جهاز افتراضي.

ماذا يحدث لكشف نشاط الصوت في Realtime API عند تغيير الصوت؟ يعمل VAD على سمات السعة والطيفية للصوت الوارد. معظم تأثيرات الصوت لا تؤثر بشكل كبير على دقة VAD. التأثيرات الثقيلة مثل انخفاضات الملعب الشديدة يمكن أن تربك عتبة VAD — اضبط الحساسية أو أضف مدة صمت يدويا إذا واجهت حدود أدوار مفقودة.

جرّب VoxBooster — 3 أيام مجاناً.

استنساخ الصوت الفوري، لوحة الأصوات والمؤثرات — أينما تتحدث.

  • بدون بطاقة
  • ~30ms تأخير
  • Discord · Teams · OBS
جرّب 3 أيام مجاناً