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

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

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

أماكن إقامة

  • audioBuffer

    ArrayBuffer

    المخزن المؤقت للصوت من محرك تحويل النص إلى كلام يجب أن يكون طول هذا الحقل audioStreamOptions.bufferSize بالضبط مع ترميزه بصيغة أحادية، في audioStreamOptions.عيّنة، وملف pcm خطي بتوقيع 32 بت، أي نوع Float32Array في جافا سكريبت.

  • charIndex

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

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

  • isLastBuffer

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

    يتم الضبط على "صحيح" إذا كان المخزن المؤقت للصوت هو الأخير في النص الذي يتم سماعه.

AudioStreamOptions

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

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

أماكن إقامة

  • bufferSize

    الرقم

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

  • sampleRate

    الرقم

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

SpeakOptions

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

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

أماكن إقامة

  • gender

    VoiceGender اختيارية

    تم إيقافه منذ إصدار 92 من Chrome

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

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

  • lang

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

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

  • رمية

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

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

  • المعدّل

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

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

  • voiceName

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

    اسم الصوت المستخدم في عملية التركيب.

  • الحجم

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

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

VoiceGender

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

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

التعداد

الطُرق

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

      • حدث

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

onSpeakWithAudioStream

Chrome 92 والإصدارات الأحدث
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

      الوظيفة

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

      تبدو معلَمة sendError على النحو التالي:

      (errorMessage?: string)=>void

      • errorMessage

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

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

onStop

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

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

المَعلمات

  • معاودة الاتصال

    الوظيفة

    تبدو معلَمة callback على النحو التالي:

    ()=>void