chrome.ttsEngine

الوصف

استخدِم واجهة برمجة التطبيقات chrome.ttsEngine لتنفيذ محرّك تحويل النص إلى كلام باستخدام إضافة. إذا كانت إضافتك تُسجِّل باستخدام واجهة برمجة التطبيقات هذه، ستتلقّى الأحداث التي تحتوي على عبارة لنطقها ومَعلمات أخرى عندما تستخدم أي إضافة أو تطبيق Chrome واجهة برمجة تطبيقات tts للكلام. يمكن للإضافة بعد ذلك استخدام أي تقنية ويب متاحة لتجميع الكلام وإخراجه، وإرسال الأحداث مرة أخرى إلى وظيفة الاتصال للإبلاغ عن الحالة.

الأذونات

ttsEngine

المفاهيم والاستخدام

يمكن للإضافة تسجيل نفسها كمحرك تحويل. ومن خلال إجراء ذلك، يمكن أن يعترض التطبيق بعض الطلبات أو جميعها. بوظائف مثل tts.speak() وtts.stop() وتوفّر طريقة تنفيذ بديلة. يمكن للإضافات استخدام أي تكنولوجيا متاحة على الويب لتوفير الكلام، بما في ذلك بث الصوت. من أحد الخوادم، أو صوت HTML5. يمكن للإضافة أيضًا أن تفعل شيئًا مختلفًا مع النطق، مثل عرض مقاطع الترجمة والشرح في نافذة منبثقة أو إرسالها كرسائل سجل إلى خادم بعيد.

لتنفيذ محرك تحويل النص إلى كلام، يجب أن تعلن الإضافة عن "ttsEngine" ثم الإعلان عن جميع الأصوات المتوفرة في بيان الإضافة، على النحو التالي:

{
  "name": "My TTS Engine",
  "version": "1.0",
  "permissions": ["ttsEngine"],
  "tts_engine": {
    "voices": [
      {
        "voice_name": "Alice",
        "lang": "en-US",
        "event_types": ["start", "marker", "end"]
      },
      {
        "voice_name": "Pat",
        "lang": "en-US",
        "event_types": ["end"]
      }
    ]
  },
  "background": {
    "page": "background.html",
    "persistent": false
  }
}

يمكن أن تحدد الإضافة أي عدد من الأصوات.

يجب إدخال المعلمة voice_name. يجب أن يكون الاسم وصفيًا بدرجة كافية بحيث تحدد اسم الصوت والمحرك المستخدم. في حال استخدَمت إضافتان، وهو أمر مستبعد بالاسم ذاته، يمكن للعميل تحديد معرف الإضافة التي يجب أن تقوم بعملية الإنشاء.

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

أخيرًا، تكون المَعلمة event_types مطلوبة إذا كان بإمكان المحرّك إرسال الأحداث لتعديل العميل حول تقدم تركيب الكلام. على الأقل، يتم دعم نوع الحدث 'end' للإشارة إلى عند الانتهاء من الكلام، يوصى بشدة بذلك، وإلا لن يتمكن Chrome من جدولة النطق في قائمة الانتظار.

بعد تحميل الإضافة، يمكن أن تحل محل قائمة الأصوات المعلَن عنها من خلال إجراء مكالمة. chrome.ttsEngine.updateVoices (لاحظ أن المعاملات المستخدمة في الطلب الآلي updateVoices في حالة الجمل: مثل، voiceName، على عكس ملف البيان الذي يستخدم voice_name).

تتوافق أنواع الأحداث المحتملة التي يمكنك إرسالها مع أنواع الأحداث التي تستخدم طريقة speak(). يتلقى:

  • 'start': بدأ المحرّك بالكلام.
  • 'word': تم الوصول إلى حد الكلمات. استخدام event.charIndex لتحديد الكلام الحالي الموقع.
  • 'sentence': تم الوصول إلى حد الجملة. يمكنك استخدام event.charIndex لتحديد القيمة الحالية. موضع الكلام.
  • 'marker': تم الوصول إلى علامة SSML. استخدام event.charIndex لتحديد الكلام الحالي الموقع.
  • 'end': انتهى المحرّك من قراءة الصوت.
  • 'error': حدث خطأ خاص بمحرك البحث ولا يمكن قول هذا اللفظ. تمرير المزيد المعلومات في event.errorMessage.

لا يتم إرسال الحدثَين 'interrupted' و'cancelled' من خلال محرّك البحث الصوتي. يتم إنشاؤها تلقائيًا باستخدام Chrome

يمكن لبرامج تحويل النص إلى كلام الحصول على المعلومات الصوتية من ملف بيان الإضافة من خلال استدعاء tts.getVoices، لنفترض أنّك سجّلت أدوات استماع لأحداث الكلام كما هو موضّح أدناه.

التعامل مع أحداث الكلام

لإنشاء كلام بناءً على طلب العملاء، يجب أن تسجّل الإضافة المستمعين لكليهما onSpeak وonStop، على النحو التالي:

const speakListener = (utterance, options, sendTtsEvent) => {
  sendTtsEvent({type: 'start', charIndex: 0})

  // (start speaking)

  sendTtsEvent({type: 'end', charIndex: utterance.length})
};

const stopListener = () => {
  // (stop all speech)
};

chrome.ttsEngine.onSpeak.addListener(speakListener);
chrome.ttsEngine.onStop.addListener(stopListener);

يعتمد قرار إرسال طلب كلام معين إلى الإضافة أم لا على ما إذا كانت الإضافة تتوافق مع المعلَمات الصوتية المحدّدة في ملف البيان الخاص بها وسجّلت المستمعين لـ onSpeak وonStop. بعبارة أخرى، لا توجد طريقة لتلقي أي إضافة طلب الكلام وأن تقرر بشكل ديناميكي ما إذا كان سيتم التعامل معه أم لا.

الأنواع

AudioBuffer

الإصدار 92 من Chrome أو الإصدارات الأحدث

المعلَمات التي تحتوي على مخزن صوتي مؤقت والبيانات المرتبطة بها

أماكن إقامة

  • audioBuffer

    ArrayBuffer

    المخزن المؤقت للصوت من محرك تحويل النص إلى كلام. ويجب أن يكون طولها audioStreamOptions.bufferSize وترميزه كأحادي، في audioStreamOptions. sampleRate، وكوحدة pcm خطية، كقيمة عائمة بنظام 32 بت، أي النوع Float32Array في JavaScript.

  • charIndex

    الرقم اختياري

    فهرس الأحرف المرتبط بالمخزن الصوتي المؤقت هذا.

  • isLastBuffer

    قيمة منطقية اختيارية

    صحيح إذا كان المخزن المؤقت للصوت هو آخر نص يتم قوله.

AudioStreamOptions

الإصدار 92 من Chrome أو الإصدارات الأحدث

يحتوي على تنسيق البث الصوتي الذي يُتوقّع أن ينتجه محرّك

أماكن إقامة

  • bufferSize

    الرقم

    عدد العيّنات داخل مخزن مؤقت للصوت.

  • sampleRate

    الرقم

    يشير إلى المعدّل المتوقّع في المخزن المؤقت للصوت.

SpeakOptions

الإصدار 92 من Chrome أو الإصدارات الأحدث

الخيارات المحدّدة لطريقة tts.speak()

أماكن إقامة

  • الجنس

    VoiceGender اختياري

    متوقّف منذ إصدار Chrome 92

    تم إيقاف سمة الجنس نهائيًا وسيتم تجاهلها.

    جنس الصوت للكلام المركَّب

  • lang

    سلسلة اختيارية

    اللغة التي سيتم استخدامها في التركيبة، بالتنسيق language-region أمثلة: "en" و"en-US" و"en-GB" و"zh-CN"

  • رمية

    الرقم اختياري

    درجة التحدّث بين 0 و2 شاملاً، وكان 0 أدنى قيمة و2 أعلى مستوى. 1.0 يتوافق مع درجة الصوت التلقائية لهذا الصوت.

  • المعدّل

    الرقم اختياري

    معدّل التحدث مقارنةً بالمعدّل التلقائي لهذا الصوت 1.0 هو المعدّل التلقائي، من 180 إلى 220 كلمة في الدقيقة عادةً. السرعة 2.0 أسرع بمقدار 2.0 و0.5 نصف السرعة. وهي مضمونة تتراوح بين 0.1 و10.0. وإذا كان الصوت لا يتيح هذه المجموعة الكاملة من المعدلات، لا تعرض رسالة خطأ. بدلاً من ذلك، يمكنك اقتصاص المعدّل إلى النطاق الذي يتيحه الصوت.

  • voiceName

    سلسلة اختيارية

    تمثّل هذه السمة اسم الصوت الذي سيتم استخدامه في التركيب.

  • الحجم

    الرقم اختياري

    مستوى صوت الكلام بين 0 و1 شاملاً، وكان الرقم 0 أدنى و1 أعلى مستوى، مع القيمة التلقائية 1.0.

VoiceGender

الإصدار 54 من Chrome أو الإصدارات الأحدث متوقّف منذ إصدار Chrome 70

تم إيقاف سمة الجنس نهائيًا وسيتم تجاهلها.

Enum

"ذكر"

"أنثى"

الطُرق

updateVoices()

الإصدار 66 من Chrome أو الإصدارات الأحدث
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

يتم الاتصال من خلال محرّك لتعديل قائمة أصواته. تلغي هذه القائمة أي أصوات تم تعريفها في بيان هذه الإضافة.

المعلمات

  • الأصوات

    مصفوفة من عناصر tts.TtsVoice التي تمثّل الأصوات المتاحة لتجميع الكلام

فعاليات

onPause

chrome.ttsEngine.onPause.addListener(
  callback: function,
)

اختياري: إذا كان المحرّك يتيح حدث الإيقاف المؤقت، من المفترض أن يتم إيقاف العبارة الحالية المحكية مؤقتًا، في حال توفّرها، إلى أن يتلقّى حدث استئناف أو حدث إيقاف. تجدر الإشارة إلى أنّ حدث الإيقاف من المفترض أن يؤدّي أيضًا إلى محو حالة الإيقاف المؤقت.

المعلمات

  • رد الاتصال

    دالة

    تظهر المَعلمة callback على النحو التالي:

    () => void

onResume

chrome.ttsEngine.onResume.addListener(
  callback: function,
)

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

المعلمات

  • رد الاتصال

    دالة

    تظهر المَعلمة callback على النحو التالي:

    () => void

onSpeak

chrome.ttsEngine.onSpeak.addListener(
  callback: function,
)

يتم استدعاء هذه الوظيفة عندما يُجري المستخدم مكالمة إلى tts.speak() ، ويكون أحد الأصوات الواردة في ملف البيان لهذه الإضافة أول مرة تتطابق مع عنصر الخيارات.

المعلمات

  • رد الاتصال

    دالة

    تظهر المَعلمة callback على النحو التالي:

    (utterance: string, options: SpeakOptions, sendTtsEvent: function) => void

    • النطق

      سلسلة

    • الخيارات
    • sendTtsEvent

      دالة

      تظهر المَعلمة sendTtsEvent على النحو التالي:

      (event: tts.TtsEvent) => void

      • event

        الحدث من محرك تحويل النص إلى كلام الذي يشير إلى حالة هذا اللفظ.

onSpeakWithAudioStream

الإصدار 92 من Chrome أو الإصدارات الأحدث
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

يتم استدعاء هذه الوظيفة عندما يُجري المستخدم مكالمة إلى tts.speak() ، ويكون أحد الأصوات الواردة في ملف البيان لهذه الإضافة أول مرة تتطابق مع عنصر الخيارات. يختلف ذلك عن ttsEngine.onSpeak حيث يوفر Chrome خدمات تشغيل الصوت ويعالج إرسال أحداث tts.

المعلمات

  • رد الاتصال

    دالة

    تظهر المَعلمة callback على النحو التالي:

    (utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void

    • النطق

      سلسلة

    • الخيارات
    • audioStreamOptions
    • sendTtsAudio

      دالة

      تظهر المَعلمة sendTtsAudio على النحو التالي:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

        المعلَمات التي تحتوي على مخزن صوتي مؤقت والبيانات المرتبطة بها

    • sendError

      دالة

      الإصدار 94 من Chrome أو الإصدارات الأحدث

      تظهر المَعلمة sendError على النحو التالي:

      (errorMessage?: string) => void

      • errorMessage

        سلسلة اختيارية

        سلسلة تصف الخطأ.

onStop

chrome.ttsEngine.onStop.addListener(
  callback: function,
)

يتم الإطلاق عند إجراء مكالمة إلى tts.stop، وقد تكون هذه الإضافة في منتصف الكلام. إذا تلقت الإضافة مكالمة onStop وكان الكلام متوقفًا بالفعل، فلن تفعل أي شيء (ولا تظهر رسالة خطأ). وإذا كان الكلام في وضع الإيقاف المؤقت، سيؤدي ذلك إلى إلغاء حالة الإيقاف المؤقت.

المعلمات

  • رد الاتصال

    دالة

    تظهر المَعلمة callback على النحو التالي:

    () => void