توضیحات
از API chrome.ttsEngine برای پیادهسازی یک موتور تبدیل متن به گفتار (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.ttsEngine.updateVoices فهرست صداهای اعلامشده را جایگزین کند. (توجه داشته باشید که پارامترهای استفادهشده در فراخوانی برنامهنویسیشده برای updateVoices به صورت camel case هستند: مثلاً voiceName ، برخلاف فایل manifest که از 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
پارامترهای حاوی یک بافر صوتی و دادههای مرتبط.
خواص
- بافر صوتی
آرایه بافر
بافر صوتی از موتور تبدیل متن به گفتار. باید دقیقاً طول audioStreamOptions.bufferSize داشته باشد و به صورت mono، در audioStreamOptions.sampleRate و به صورت خطی pcm کدگذاری شده باشد، اعشاری علامتدار ۳۲ بیتی، یعنی نوع Float32Array در جاوا اسکریپت.
- شاخص کاراکتر
شماره اختیاری
فهرست کاراکترهای مرتبط با این بافر صوتی.
- isLastBuffer
بولی اختیاری
اگر این بافر صوتی آخرین بافر برای متن خوانده شده باشد، صحیح است.
AudioStreamOptions
شامل فرمت جریان صوتی است که انتظار میرود توسط یک موتور تولید شود.
خواص
- اندازه بافر
شماره
تعداد نمونهها در یک بافر صوتی.
- نرخ نمونه
شماره
نرخ نمونهبرداری مورد انتظار در یک بافر صوتی.
LanguageInstallStatus
وضعیت نصب یک صدا.
شمارشی
"نصب نشده" "نصب کردن" "نصب شده" "شکست خورده"
LanguageStatus
وضعیت نصب یک زبان.
خواص
- خطا
رشته اختیاری
جزئیات مربوط به خطاهای نصب. در صورت عدم موفقیت نصب زبان، به صورت اختیاری پر میشود.
- وضعیت نصب
وضعیت نصب.
- لنگ
رشته
رشته زبان به شکل کد زبان-کد منطقه، که در آن منطقه ممکن است حذف شود. مثالها عبارتند از en، en-AU، zh-CH.
LanguageUninstallOptions
گزینههایی برای حذف نصب یک زبان خاص.
خواص
- فوراً حذف نصب کنید
بولی
اگر کلاینت TTS بخواهد زبان بلافاصله حذف شود، مقدار آن درست است. موتور میتواند بر اساس این پارامتر و اطلاعات درخواستکننده، انتخاب کند که آیا زبان را حذف کند یا چه زمانی. اگر نادرست باشد، ممکن است از معیارهای دیگری مانند استفاده اخیر، برای تعیین زمان حذف استفاده کند.
SpeakOptions
گزینههایی که برای متد tts.speak() مشخص شدهاند.
خواص
- جنسیت
جنسیت صوتی اختیاری
از کروم ۹۲ منسوخ شده استجنسیت منسوخ شده و نادیده گرفته خواهد شد.
جنسیت صدا برای گفتار ترکیبی.
- لنگ
رشته اختیاری
زبانی که برای سنتز استفاده میشود، به شکل language - region . مثالها: 'en'، 'en-US'، 'en-GB'، 'zh-CN'.
- زمین
شماره اختیاری
زیر و بمی صدا بین ۰ تا ۲، که ۰ پایینترین و ۲ بالاترین صدا است. ۱.۰ مربوط به زیر و بمی پیشفرض این صدا است.
- نرخ
شماره اختیاری
سرعت صحبت کردن نسبت به سرعت پیشفرض برای این صدا. ۱.۰ سرعت پیشفرض است، معمولاً حدود ۱۸۰ تا ۲۲۰ کلمه در دقیقه. ۲.۰ دو برابر سریعتر و ۰.۵ نصف سریعتر است. تضمین میشود که این مقدار بین ۰.۱ تا ۱۰.۰ باشد، شامل همه. وقتی صدایی از این طیف کامل سرعتها پشتیبانی نمیکند، خطایی برنگردانید. در عوض، سرعت را به محدودهای که صدا پشتیبانی میکند، کاهش دهید.
- نام صدا
رشته اختیاری
نام صدایی که برای سنتز استفاده میشود.
- حجم
شماره اختیاری
بلندی صدای صحبت بین ۰ و ۱، که ۰ کمترین و ۱ بیشترین صدا را نشان میدهد، و مقدار پیشفرض آن ۱.۰ است.
TtsClient
شناسه وضعیت درخواستکننده برای کلاینت.
خواص
- شناسه
رشته
کلاینت درخواست مدیریت زبان را ارسال میکند. برای یک افزونه، این شناسه منحصر به فرد افزونه است. برای ویژگیهای کروم، این نام خوانای انسانی آن ویژگی است.
- منبع
نوع درخواست کننده.
TtsClientSource
نوع درخواست کننده.
شمارشی
"ویژگی کروم" "امتداد"
VoiceGender
جنسیت منسوخ شده و نادیده گرفته خواهد شد.
شمارشی
"مرد" "زن"
روشها
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
توسط یک موتور فراخوانی میشود وقتی که یک زبان نصب میشود و وقتی که یک زبان حذف میشود. همچنین در پاسخ به درخواست وضعیت از یک کلاینت فراخوانی میشود. وقتی یک صدا نصب یا حذف میشود، موتور باید ttsEngine.updateVoices را نیز برای ثبت صدا فراخوانی کند.
پارامترها
- وضعیت
وضعیت نصب زبان.
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
توسط یک موتور فراخوانی میشود تا لیست صداهای خود را بهروزرسانی کند. این لیست، هر صدایی را که در مانیفست این افزونه اعلام شده است، لغو میکند.
پارامترها
- صداها
آرایهای از اشیاء
tts.TtsVoiceکه صداهای موجود برای سنتز گفتار را نشان میدهند.
رویدادها
onInstallLanguageRequest
chrome.ttsEngine.onInstallLanguageRequest.addListener(
callback: function,
)
زمانی اجرا میشود که یک کلاینت TTS درخواست نصب یک زبان جدید را داشته باشد. موتور باید تلاش کند تا زبان را دانلود و نصب کند و ttsEngine.updateLanguage را با نتیجه فراخوانی کند. در صورت موفقیت، موتور همچنین باید ttsEngine.updateVoices را برای ثبت صداهای جدید موجود فراخوانی کند.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(requestor: TtsClient, lang: string) => void
- درخواست کننده
- لنگ
رشته
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
زمانی اجرا میشود که یک کلاینت TTS وضعیت نصب یک زبان را درخواست کند.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(requestor: TtsClient, lang: string) => void
- درخواست کننده
- لنگ
رشته
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() را فراخوانی میکند و یکی از صداهای موجود در مانیفست این افزونه، اولین صدایی است که با شیء options مطابقت دارد.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
- بیان
رشته
- گزینهها
- رویداد ارسال Tts
تابع
پارامتر
sendTtsEventبه شکل زیر است:(event: tts.TtsEvent) => void
- رویداد
رویدادی از موتور تبدیل متن به گفتار که وضعیت این گفتار را نشان میدهد.
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
زمانی فراخوانی میشود که کاربر tts.speak() را فراخوانی میکند و یکی از صداهای موجود در مانیفست این افزونه، اولین صدایی است که با شیء options مطابقت دارد. با ttsEngine.onSpeak متفاوت است، زیرا کروم سرویسهای پخش صدا را ارائه میدهد و رویدادهای tts را مدیریت میکند.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void
- بیان
رشته
- گزینهها
- گزینههای پخش صوتی
- ارسالTtsAudio
تابع
پارامتر
sendTtsAudioبه شکل زیر است:(audioBufferParams: AudioBuffer) => void
- پارامترهای audioBuffer
پارامترهای حاوی یک بافر صوتی و دادههای مرتبط.
- خطای ارسال
تابع
کروم ۹۴+پارامتر
sendErrorبه صورت زیر است:(errorMessage?: string) => void
- پیام خطا
رشته اختیاری
رشتهای که خطا را توصیف میکند.
onStop
chrome.ttsEngine.onStop.addListener(
callback: function,
)
زمانی اجرا میشود که فراخوانی به tts.stop انجام شود و این داخلی ممکن است در حال صحبت کردن باشد. اگر داخلی فراخوانی به onStop دریافت کند و صحبت از قبل متوقف شده باشد، نباید کاری انجام دهد (خطا ایجاد نکند). اگر صحبت در حالت مکث باشد، این باید حالت مکث را لغو کند.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:() => void
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
زمانی اجرا میشود که یک کلاینت TTS اعلام کند که دیگر نیازی به یک زبان نیست.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
- درخواست کننده
- لنگ
رشته
- گزینههای حذف نصب