توضیحات
از chrome.ttsEngine
API برای پیاده سازی موتور تبدیل متن به گفتار (TTS) با استفاده از افزونه استفاده کنید. اگر برنامه افزودنی شما با استفاده از این API ثبت شود، هنگامی که هر برنامه افزودنی یا برنامه Chrome از tts
API برای تولید گفتار استفاده میکند، رویدادهایی حاوی یک گفته و پارامترهای دیگر دریافت میکند. پس از آن برنامه افزودنی شما می تواند از هر فناوری وب موجود برای ترکیب و خروجی گفتار استفاده کند و رویدادها را برای گزارش وضعیت به عملکرد تماس ارسال کند.
مجوزها
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'
توسط موتور گفتار ارسال نمی شوند. آنها به طور خودکار توسط کروم تولید می شوند.
کلاینتهای تبدیل متن به گفتار میتوانند با تماس با 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
پارامترهای حاوی بافر صوتی و داده های مرتبط.
خواص
- بافر صوتی
ArrayBuffer
بافر صوتی از موتور تبدیل متن به گفتار. باید دقیقاً طول audioStreamOptions.bufferSize داشته باشد و به صورت mono، در audioStreamOptions.sampleRate، و به صورت pcm خطی، شناور علامتدار 32 بیتی کدگذاری شود، یعنی نوع Float32Array در جاوا اسکریپت.
- charIndex
شماره اختیاری
شاخص کاراکتر مرتبط با این بافر صوتی.
- isLastBuffer است
بولی اختیاری
درست است اگر این بافر صوتی آخرین مورد برای متنی باشد که گفته می شود.
AudioStreamOptions
شامل فرمت جریان صوتی است که انتظار می رود توسط یک موتور تولید شود.
خواص
- bufferSize
شماره
تعداد نمونههای داخل بافر صوتی.
- نرخ نمونه
شماره
نرخ نمونه مورد انتظار در بافر صوتی.
SpeakOptions
گزینه های مشخص شده برای متد ()tts.speak.
خواص
- جنسیت
VoiceGender اختیاری است
از Chrome 92 منسوخ شده استجنسیت منسوخ شده و نادیده گرفته خواهد شد.
جنسیت صدا برای گفتار سنتز شده
- زبان
رشته اختیاری
زبانی که برای سنتز استفاده می شود، به شکل زبان - منطقه . مثالها: «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 باشد. وقتی صدایی از این طیف کامل از نرخها پشتیبانی نمیکند، خطا را نشان ندهید. درعوض، نرخ را روی محدودهای که صدا پشتیبانی میکند، کاهش دهید.
- نام صدا
رشته اختیاری
نام صدای مورد استفاده برای سنتز.
- حجم
شماره اختیاری
صدای مکالمه بین 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
- رویداد
رویداد از موتور تبدیل متن به گفتار که وضعیت این گفته را نشان می دهد.
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