1. مراجعة النماذج الصوتية

1.1. مقدمة لنماذج OpenAI لتحويل النصوص إلى كلام والعكس

نموذج تحويل النصوص إلى كلام (TTS)

يمكن لنموذج TTS من OpenAI تحويل البيانات النصية إلى إخراج صوتي. يشمل هذا العملية تحليل النص، وتطبيق خوارزميات توليد الكلام، وضبط جودة الصوت. إنه يمكن الكمبيوتر من قراءة أي نص مكتوب، مما يجعل المحتوى أكثر فهمًا ويمكن الوصول إليه. يُعتبر TTS تقنية مهمة للأشخاص المكفوفين بصرياً، والسائقين، أو أي شخص يفضل استقبال المعلومات من خلال الاستماع.

نموذج تحويل الكلام إلى نص (STT)

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

1.2. سيناريوهات التطبيق

  • قراءة المدونات بصوت عال
  • توليد الكلام متعدد اللغات

3. واجهة برمجة التطبيقات لتحويل النص إلى كلام

3.1. البدء السريع

في هذا القسم، سنقدم كيفية تحويل النص إلى كلام بسرعة باستخدام أمر curl وعميل Python. سواء كنت مطورًا أو مستخدمًا غير تقني، يمكنك بسهولة إنشاء ملفات صوتية عن طريق بعث طلب API بسيط.

إرسال الطلبات باستخدام Curl

لتوليد الكلام باستخدام أداة سطر الأوامر curl، اتبع هذه الخطوات:

  1. تأكد من تثبيت curl على نظامك وحصولك على مفتاح API صالح لدى OpenAI.
  2. استخدم الأمر curl التالي لتحويل النص إلى كلام:
curl https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "اليوم هو يوم رائع لبناء المنتجات التي يحبها الناس!",
    "voice": "alloy"
  }' \
  --output speech.mp3

في الأمر السابق، يمثل $OPENAI_API_KEY مفتاح الواجهة البرمجية الخاص بك، حقل input هو النص الذي تريد تحويله، حقل model يحدد نموذج الصوت المستخدم، ويختار المعلمة voice الصوت. هنا، نختار صوت المعدن التركيبي alloy. الخيار النهائي --output يحدد اسم وتنسيق الملف الناتج.

استخدام عميل Python

إذا كنت تفضل استخدام لغة البرمجة Python، يمكنك استخدام مثال الكود التالي:

from openai import OpenAI

client = OpenAI()

response = client.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="اليوم هو يوم رائع لبناء المنتجات التي يحبها الناس!"
)

response.stream_to_file("output.mp3")

في هذا المقتطف من الكود، نقوم أولاً بتوثيق مكتبة openai وإنشاء مثيل لعميل OpenAI. ثم نستخدم الطريقة audio.speech.create لإرسال طلب، محددين النموذج والصوت والنص للتحويل. في النهاية، نستخدم الطريقة stream_to_file لحفظ تيار الكلام الناتج في ملف.

3.2. اختيار جودة الصوت والصوت المناسب

انتقاء الجودة الصوتية المناسبة والصوت المناسب لمشروعك خطوة مهمة في ضمان تجربة المستخدم الأفضل. تقدم واجهة برمجة التطبيقات الخاصة بنا خيارين لنماذج جودة الصوت: tts-1 و tts-1-hd.

  • tts-1: يوفر وقت انتظار أقل، مناسب لتطبيقات الوقت الحقيقي، ولكن بجودة صوتية أقل نسبياً.
  • tts-1-hd: يوفر إخراج صوتي عالي الجودة، مناسب لاحتياجات توليد الكلام بجودة عالية غير في الوقت الحقيقي.

بالإضافة إلى ذلك، تقدم واجهة برمجة التطبيقات لنموذج TTS من OpenAI خيارات صوتية مختلفة:

  • سبيكة
  • صدى
  • خيال
  • أونيكس
  • نوفا
  • شموخ

اعتمادًا على متطلبات المشروع والجمهور المستهدف، يمكنك اختبار عينات الأصوات المختلفة لاختيار الصوت الأنسب. فكر في عوامل مثل نمط الكلام، وسرعة الكلام، والنبرة للعثور على صوت ينقل العواطف والاحترافية المناسبة.

3.3. الصيغ واللغات المدعومة

تفترض واجهة برمجة التطبيقات الخاصة بتحويل النص إلى كلام من OpenAI الصيغة الافتراضية للإخراج كـ MP3 ولكنها تدعم أيضًا مجموعة متنوعة من الصيغ الصوتية الأخرى:

  • Opus: مناسب لبث الإنترنت والاتصالات، مع تأخير منخفض.
  • AAC: يستخدم لضغط الصوت الرقمي، ويفضل من قبل منصات مثل يوتيوب ونظام التشغيل أندرويد و iOS.
  • FLAC: صيغة ضغط الصوت غير المفقودة المستخدمة من قبل عشاق الصوت للأرشفة.

من حيث دعم اللغات، تتبع الواجهة البرمجية الخاصة بنا نموذج Whisper بشكل رئيسي، مما يوفر مجموعة واسعة من خيارات اللغات لدعم العديد من اللغات الوطنية.

3.4. وظيفة بث الصوت في الوقت الحقيقي

لتلبية احتياجات التطبيقات في الوقت الحقيقي، يوفر واجهة برمجة التطبيقات الخاصة بنا دعمًا لبث الصوت في الوقت الحقيقي. فيما يلي مثال برمجي بلغة Python لتنفيذ وظيفة بث الصوت في الوقت الحقيقي:

from openai import OpenAI

client = OpenAI()

response = client.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="مرحبًا بالعالم! هذا اختبار للبث.",
)

response.stream_to_file("output.mp3")

4. واجهة برمجة التطبيقات لتحويل الكلام إلى نص

4.1. البداية السريعة

في هذا القسم، سنقدم في الأساس وظيفة واجهة برمجة التطبيقات الخاصة بـ OpenAI لتحويل الكلام إلى نص.

أولاً، يجب أن تكون لديك مفتاح واجهة برمجة التطبيقات الخاصة بـ OpenAI صالح وتجهيز ملف صوتي.

يمكنك استخدام الأمر curl لإرسال طلب POST يحتوي على ملف صوتي. قم بتغيير OPENAI_API_KEY إلى مفتاح الخاص بك وحدد مسار الملف الصحيح.

curl --request POST \
  --url https://api.openai.com/v1/audio/transcriptions \
  --header 'Authorization: Bearer OPENAI_API_KEY' \
  --header 'Content-Type: multipart/form-data' \
  --form file=@/path/to/your/audio/file.mp3 \
  --form model=whisper-1

بعد تنفيذ الأمر أعلاه، ستتلقى استجابة مُنسَقة بتنسيق JSON تحتوي على معلومات النص المحول.

على سبيل المثال:

{
  "text": "تخيل أشد الأفكار التي سبق لك أن قمت بها، وكنت فضوليًا بشأن كيف يمكن أن تتحسن إلى شيء يكون أكبر بمقدار 100، 1000 مرة..."
}

4.2. صيغ الملفات والأحجام المدعومة

تدعم هذه الواجهة برمجة التطبيقات صيغ ملفات الصوت المشتركة المختلفة لتلبية الاحتياجات المختلفة في السيناريوهات المختلفة. تشمل صيغ الملفات المدعومة وليست محدودة على mp3، mp4، mpeg، mpga، m4a، wav، webm، إلخ. وهذا يتيح للمستخدمين معالجة ملفات الصوت من مصادر مختلفة بسهولة.

أما بالنسبة لحجم الملفات، فإن واجهة برمجة التطبيقات الحالية لديها حد يتجاوز 25 ميجابايت. وهذا يعني أنه إذا كان ملف الصوت الخاص بك أكبر من 25 ميجابايت، فسيتعين عليك تقسيمه إلى مقاطع أصغر من 25 ميجابايت، أو استخدام صيغة ضغط أكثر كفاءة. على سبيل المثال، توفر صيغ mp3 و opus ضغطًا فعالًا عادةً، مما يقلل من حجم الملف دون التضحية بجودة الصوت إلى حد كبير.

إذا واجهت ملفًا أكبر من 25 ميجابايت، فيمكنك التفكير في استخدام مكتبة PyDub في Python لتقسيم الصوت الخاص بك:

from pydub import AudioSegment

audio_file = AudioSegment.from_file("your_large_audio_file.mp3")

interval = 10 * 60 * 1000  # 10 دقائق

chunks = make_chunks(audio_file, interval)

for i, chunk in enumerate(chunks):
    chunk_name = f"audio_chunk{i}.mp3"
    chunk.export(chunk_name, format="mp3")

في الكود أعلاه، ستقوم وظيفة make_chunks بتقسيم ملف صوت كبير إلى مقاطع صوتية متعددة بفاصل زمني يبلغ 10 دقائق. هذه المقاطع جميعها داخل الحد الذي يتطلبه الواجهة برمجة التطبيقات من حيث حجم الملف ويمكن رفعها بشكل منفصل إلى واجهة برمجة التطبيقات OpenAI للتحويل.

يرجى ملاحظة أنه على الرغم من أن PyDub توفر لنا وسيلة سهلة للتعامل مع ملفات الصوت، فإنه من المستحسن دائمًا إيلاء اهتمام إضافي للأمان والاستقرار لأي برنامج تابع عند استخدامه. لا تقدم OpenAI أي ضمانات لبرامج الطرف الثالث.