الوصف
استخدِم واجهة برمجة التطبيقات 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
مخزن المصفوفات
المخزن المؤقت للصوت من محرك تحويل النص إلى كلام. ويجب أن يكون طولها audioStreamOptions.bufferSize وترميزه كأحادي، في audioStreamOptions. sampleRate، وكوحدة pcm خطية، كقيمة عائمة بنظام 32 بت، أي النوع Float32Array في JavaScript.
-
charIndex
الرقم اختياري
فهرس الأحرف المرتبط بالمخزن الصوتي المؤقت هذا.
-
isLastBuffer
قيمة منطقية اختيارية
صحيح إذا كان المخزن المؤقت للصوت هو آخر نص يتم قوله.
AudioStreamOptions
يحتوي على تنسيق البث الصوتي الذي يُتوقّع أن ينتجه محرّك
أماكن إقامة
-
bufferSize
الرقم
عدد العيّنات داخل مخزن مؤقت للصوت.
-
sampleRate
الرقم
يشير إلى المعدّل المتوقّع في المخزن المؤقت للصوت.
SpeakOptions
الخيارات المحدّدة لطريقة 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
تم إيقاف سمة الجنس نهائيًا وسيتم تجاهلها.
Enum
"ذكر"
"أنثى"
الطُرق
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
-
event
الحدث من محرك تحويل النص إلى كلام الذي يشير إلى حالة هذا اللفظ.
-
-
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
دالة
الإصدار 94 من Chrome أو الإصدارات الأحدثتظهر المَعلمة
sendError
على النحو التالي:(errorMessage?: string) => void
-
errorMessage
سلسلة اختيارية
سلسلة تصف الخطأ.
-
-
onStop
chrome.ttsEngine.onStop.addListener(
callback: function,
)
يتم الإطلاق عند إجراء مكالمة إلى tts.stop، وقد تكون هذه الإضافة في منتصف الكلام. إذا تلقت الإضافة مكالمة onStop وكان الكلام متوقفًا بالفعل، فلن تفعل أي شيء (ولا تظهر رسالة خطأ). وإذا كان الكلام في وضع الإيقاف المؤقت، سيؤدي ذلك إلى إلغاء حالة الإيقاف المؤقت.
المعلمات
-
رد الاتصال
دالة
تظهر المَعلمة
callback
على النحو التالي:() => void