الوصف
استخدِم واجهة برمجة التطبيقات 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
المَعلمات التي تحتوي على مخزن صوت احتياطي والبيانات المرتبطة به
أماكن إقامة
-
audioBuffer
ArrayBuffer
المخزن المؤقت للصوت من محرك تحويل النص إلى كلام يجب أن يكون طول هذا الحقل audioStreamOptions.bufferSize بالضبط مع ترميزه بصيغة أحادية، في audioStreamOptions.عيّنة، وملف pcm خطي بتوقيع 32 بت، أي نوع Float32Array في جافا سكريبت.
-
charIndex
الرقم اختياري
يشير إلى فهرس الأحرف المرتبط بمخزن الصوت المؤقت هذا.
-
isLastBuffer
منطقية اختيارية
يتم الضبط على "صحيح" إذا كان المخزن المؤقت للصوت هو الأخير في النص الذي يتم سماعه.
AudioStreamOptions
يحتوي على تنسيق البث الصوتي المتوقّع أن ينشئه المحرّك
أماكن إقامة
-
bufferSize
الرقم
عدد العيّنات داخل المخزن المؤقت للصوت
-
sampleRate
الرقم
معدّل العينة المتوقع في المخزن المؤقت للصوت
SpeakOptions
الخيارات المحدّدة لطريقة 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
تم إيقاف سمة "الجنس" نهائيًا وسيتم تجاهلها.
التعداد
الطُرق
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
)
يتم الاتصال من خلال أحد محركات البحث لتعديل قائمة الأصوات. تلغي هذه القائمة أي أصوات تم تعريفها في بيان هذه الإضافة.
المَعلمات
-
الأصوات
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.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