refresh date: 2026-09-25 robots: noindex
شرح
از chrome.ttsEngine API برای پیادهسازی موتور نوشتار به گفتار(TTS) بااستفاده از افزونه استفاده کنید. اگر افزونه شما بااستفاده از این API ثبت شود، وقتی هر افزونه یا «برنامه Chrome» از API tts برای تولید گفتار استفاده کند، رویدادهای حاوی گفتهای که باید بیان شود و پارامترهای دیگر را دریافت خواهد کرد. سپس افزونه شما میتواند از هر فناوری وب دردسترسی برای ترکیب و خروجی گفتار استفاده کند و رویدادها را برای گزارش وضعیت به تابع فراخواننده ارسال کند.
اجازهها
ttsEngineنمای کلی
افزونه میتواند خودش را بهعنوان موتور گفتار ثبت کند. با انجام این کار، میتواند برخی یا همه فراخوانیهای توابعی مثل tts.speak و tts.stop را رهگیری کند و پیادهسازی جایگزینی ارائه دهد.
افزونهها میتوانند از هر فناوری وب دردسترس برای ارائه گفتار استفاده کنند، ازجمله جاریسازی صدا از سرور، صدای HTML5. افزونه حتی میتواند کار دیگری با گفتهها انجام دهد، مثلاً زیرنویس ناشنوایان را در پنجره بالاپر نمایش دهد یا آنها را بهعنوان پیامهای گزارش به سرور راه دور ارسال کند.
مانیفست
برای پیادهسازی موتور TTS، افزونه باید اجازه «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.sampleRate، و بهعنوان pcm خطی، اعشاری علامتدار ۳۲ بیتی، یعنی نوع Float32Array در جاوا اسکریپت کدگذاری شده باشد.
-
charIndex
شماره اختیاری
نمایه نویسه مرتبط با این میانگیر صوتی.
-
isLastBuffer
بولی اختیاری
اگر این میانگیر صوتی آخرین میانگیر برای نوشتار درحال خوانده شدن باشد، «درست» است.
AudioStreamOptions
حاوی قالب جاریسازی صوتی است که انتظار میرود توسط موتور تولید شود.
مشخصات
-
bufferSize
شماره
تعداد نمونهها در میانگیر صدا.
-
sampleRate
شماره
نرخ نمونهبرداری موردانتظار در میانگیر صوتی.
LanguageInstallStatus
وضعیت نصب صدا.
شمارشی
"notInstalled"
«درحال نصب»
"installed"
«failed»
LanguageStatus
وضعیت نصب زبان.
مشخصات
-
خطا
رشته اختیاری
جزئیات مربوط به نصبهای ناموفق. اگر زبان نصب نشود، بهصورت اختیاری پر میشود.
-
installStatus
وضعیت نصب.
-
lang
رشته
رشته زبان بهصورت کد زبان-کد منطقه، که ممکن است منطقه حذف شود. نمونهها عبارتاند از en، en-AU، zh-CH.
LanguageUninstallOptions
گزینههای حذف نصب زبان موردنظر.
مشخصات
-
uninstallImmediately
بولی
اگر سرویسگیرنده TTS بخواهد زبان فوراً حذف نصب شود، True است. موتور ممکن است براساس این پارامتر و اطلاعات درخواستکننده، انتخاب کند که زبان را حذف نصب کند یا نه و چه زمانی این کار را انجام دهد. اگر نادرست باشد، ممکن است از معیارهای دیگری مانند استفاده اخیر برای تعیین زمان حذف نصب استفاده کند.
SpeakOptions
گزینههای مشخصشده برای روش tts.speak().
مشخصات
-
جنسیت
VoiceGender اختیاری
از Chrome 92 منسوخ شده استجنسیت منسوخ شده است و نادیده گرفته خواهد شد.
جنسیت صدا برای گفتار ترکیبی.
-
lang
رشته اختیاری
زبانی که برای ترکیب استفاده میشود، در قالب زبان-منطقه. مثال: «en»، «en-US»، «en-GB»، «zh-CN».
-
آهنگ پیشنهاد دادن
شماره اختیاری
زیروبمی گفتار بین ۰ و ۲ (شامل این دو عدد)، که ۰ پایینترین و ۲ بالاترین است. ۱٫۰ با زیروبمی پیشفرض این صدا مطابقت دارد.
-
ردهبندی کردن
شماره اختیاری
سرعت گفتار نسبت به سرعت پیشفرض برای این صدا. ۱.۰ نرخ پیشفرض است که معمولاً حدود ۱۸۰ تا ۲۲۰ کلمه در دقیقه است. ۲٫۰ دو برابر سریعتر است و ۰٫۵ نصف سرعت است. این مقدار تضمین میشود که بین ۰٫۱ و ۱۰٫۰ باشد. وقتی صدایی از این محدوده کامل نرخها پشتیبانی نمیکند، خطا برنگردانید. درعوض، نرخ را به محدودهای که صدا پشتیبانی میکند محدود کنید.
-
voiceName
رشته اختیاری
نام صدایی که برای ترکیب استفاده میشود.
-
میزان صدا
شماره اختیاری
میزان صدای صحبت کردن بین ۰ و ۱ (شامل این دو عدد)، که ۰ کمترین و ۱ بیشترین است، و مقدار پیشفرض ۱٫۰ است.
TtsClient
شناسه برای مشتری درخواستکننده وضعیت.
مشخصات
-
id
رشته
کارخواه درخواست مدیریت زبان میکند. برای افزونه، این شناسه افزونه یکتا است. برای ویژگیهای Chrome، این نام قابلخواندن برای انسان از ویژگی است.
-
منبع
نوع درخواستکننده.
TtsClientSource
نوع درخواستکننده.
شمارشی
"chromefeature"
«افزونه»
VoiceGender
جنسیت منسوخ شده است و نادیده گرفته خواهد شد.
شمارشی
"male"
"female"
روشها
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
وقتی نصب زبان امتحان میشود و وقتی زبان حذف نصب میشود، توسط موتور فراخوانی میشود. همچنین در پاسخ به درخواست وضعیت از کارخواه فراخوانی میشود. وقتی صدایی نصب یا حذف نصب میشود، موتور باید ttsEngine.updateVoices را نیز فراخوانی کند تا صدا را ثبت کند.
پارامترها
-
وضعیت
وضعیت نصب زبان.
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
توسط موتور برای بهروزرسانی فهرست صداهایش فراخوانی میشود. این فهرست بر هر صدایی که در مانیفست این افزونه اعلام شده است اولویت دارد.
پارامترها
-
صداها
TtsVoice[]
آرایهای از اشیا
tts.TtsVoiceکه نشاندهنده صداهای دردسترس برای ترکیب گفتار است.
رویدادها
onInstallLanguageRequest
chrome.ttsEngine.onInstallLanguageRequest.addListener(
callback: function,
)
وقتی کلاینت TTS درخواست نصب زبان جدیدی میکند، فعال میشود. موتور باید برای بارگیری و نصب زبان تلاش کند و ttsEngine.updateLanguage را با نتیجه فراخوانی کند. درصورت موفقیت، موتور باید ttsEngine.updateVoices را نیز فراخوانی کند تا صداهای جدیداً دردسترس را ثبت کند.
پارامترها
-
تماس برگشتی
عملکرد
پارامتر
callbackبهصورت زیر است:(requestor: TtsClient, lang: string) => void
-
درخواستکننده
-
lang
رشته
-
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
وقتی فعال میشود که مشتری TTS وضعیت نصب زبان را درخواست کند.
پارامترها
-
تماس برگشتی
عملکرد
پارامتر
callbackبهصورت زیر است:(requestor: TtsClient, lang: string) => void
-
درخواستکننده
-
lang
رشته
-
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 نسخه ۹۴ و بالاترپارامتر
sendErrorبهصورت زیر است:(errorMessage?: string) => void
-
errorMessage
رشته اختیاری
رشتهای که خطا را توصیف میکند.
-
-
onStop
chrome.ttsEngine.onStop.addListener(
callback: function,
)
وقتی تماسی با tts.stop برقرار میشود و این افزونه ممکن است درحال صحبت کردن باشد، فعال میشود. اگر افزونهای تماسی برای onStop دریافت کند و گفتار ازقبل متوقف شده باشد، نباید کاری انجام دهد (نباید خطا ایجاد کند). اگر گفتار در حالت موقتاً متوقفشده باشد، این کار باید حالت موقتاً متوقفشده را لغو کند.
پارامترها
-
تماس برگشتی
عملکرد
پارامتر
callbackبهصورت زیر است:() => void
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
وقتی فعال میشود که کلاینت «نوشتار به گفتار» نشان دهد که دیگر به زبان نیازی نیست.
پارامترها
-
تماس برگشتی
عملکرد
پارامتر
callbackبهصورت زیر است:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
-
درخواستکننده
-
lang
رشته
-
uninstallOptions
-