توضیحات
از API chrome.tts برای پخش متن به گفتار ترکیبی (TTS) استفاده کنید. همچنین به API مربوط به ttsEngine مراجعه کنید که به یک افزونه اجازه میدهد یک موتور گفتار پیادهسازی کند.
کروم این قابلیت را در ویندوز (با استفاده از SAPI 5)، مک او اس ایکس و کروم او اس، با استفاده از قابلیتهای سنتز گفتار ارائه شده توسط سیستم عامل، ارائه میدهد. در تمام پلتفرمها، کاربر میتواند افزونههایی را نصب کند که خود را به عنوان موتورهای گفتار جایگزین ثبت میکنند.
مجوزها
tts مفاهیم و کاربردها
تولید گفتار
برای صحبت کردن، تابع speak() را از افزونه خود فراخوانی کنید. برای مثال:
chrome.tts.speak('Hello, world.');
برای اینکه فوراً صحبت کردن را متوقف کنید، کافیست تابع stop() فراخوانی کنید:
chrome.tts.stop();
شما میتوانید گزینههایی را ارائه دهید که ویژگیهای مختلف گفتار، مانند سرعت، زیر و بمی صدا و موارد دیگر را کنترل کنند. برای مثال:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
همچنین ایده خوبی است که زبان را مشخص کنید تا موتور صوتی که از آن زبان (و گویش منطقهای، در صورت وجود) پشتیبانی میکند، انتخاب شود.
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
به طور پیشفرض، هر فراخوانی برای speak() هر گفتار جاری را قطع میکند و بلافاصله شروع به صحبت میکند. برای تعیین اینکه آیا یک فراخوانی باعث قطع چیزی میشود یا خیر، میتوانید isSpeaking() را فراخوانی کنید. علاوه بر این، میتوانید از گزینه enqueue برای اضافه کردن این گفتار به صفی از گفتارها که پس از پایان گفتار فعلی اجرا خواهند شد، استفاده کنید.
chrome.tts.speak('Speak this first.');
chrome.tts.speak(
'Speak this next, when the first sentence is done.', {'enqueue': true});
شرح کاملی از همه گزینهها را میتوانید در tts.speak() بیابید. همه موتورهای گفتار از همه گزینهها پشتیبانی نمیکنند.
برای گرفتن خطاها و اطمینان از اینکه speak() به درستی فراخوانی میکنید، یک تابع callback که هیچ آرگومانی نمیگیرد، ارسال کنید. درون callback، runtime.lastError را بررسی کنید تا ببینید آیا خطایی وجود دارد یا خیر.
chrome.tts.speak(
utterance,
options,
function() {
if (chrome.runtime.lastError) {
console.log('Error: ' + chrome.runtime.lastError.message);
}
}
);
تابع فراخوانی بلافاصله، قبل از اینکه موتور شروع به تولید گفتار کند، برمیگردد. هدف از این تابع فراخوانی، هشدار دادن به شما در مورد خطاهای نحوی در استفاده از API TTS است، نه گرفتن تمام خطاهای احتمالی که ممکن است در فرآیند سنتز و خروجی گفتار رخ دهد. برای گرفتن این خطاها نیز، باید از یک شنونده رویداد استفاده کنید که در بخش بعدی توضیح داده شده است.
به رویدادها گوش دهید
برای دریافت اطلاعات بیشتر در مورد وضعیت گفتار سنتز شده به صورت بلادرنگ، یک شنونده رویداد (event listener) را به گزینههای speak() مانند زیر ارسال کنید:
chrome.tts.speak(
utterance,
{
onEvent: function(event) {
console.log('Event ' + event.type + ' at position ' + event.charIndex);
if (event.type == 'error') {
console.log('Error: ' + event.errorMessage);
}
}
},
callback
);
هر رویداد شامل یک نوع رویداد، شاخص کاراکتر گفتار فعلی نسبت به گفتار، و برای رویدادهای خطا، یک پیام خطای اختیاری است. انواع رویداد عبارتند از:
-
'start': موتور شروع به خواندن عبارت کرده است. -
'word': به مرز کلمه رسیدهایم.event.charIndexبرای تعیین موقعیت فعلی گفتار استفاده کنید. -
'sentence': به مرز جمله رسیدهایم.event.charIndexبرای تعیین موقعیت فعلی گفتار استفاده کنید. -
'marker': به یک نشانگر SSML رسیده شد.event.charIndexبرای تعیین موقعیت فعلی گفتار استفاده کنید. -
'end': موتور، بیان عبارت را به پایان رسانده است. -
'interrupted': این گفتار با فراخوانی دیگری برایspeak()یاstop()قطع شد و پایان نیافت. -
'cancelled': این گفتار در صف انتظار قرار گرفت، اما سپس با فراخوانی دیگری برایspeak()یاstop()لغو شد و دیگر هرگز شروع به صحبت نکرد. -
'error': خطایی مربوط به موتور رخ داده و این عبارت قابل بیان نیست. برای جزئیات بیشترevent.errorMessageرا بررسی کنید.
چهار نوع از این رویدادها 'end' ، 'interrupted' ، 'cancelled' و 'error' - قطعی هستند. پس از دریافت یکی از این رویدادها، این گفتار دیگر اجرا نخواهد شد و هیچ رویداد جدیدی از این گفتار دریافت نخواهد شد.
ممکن است برخی از صداها از همه انواع رویدادها پشتیبانی نکنند و برخی دیگر ممکن است اصلاً هیچ رویدادی ارسال نکنند. اگر نمیخواهید از صدایی استفاده کنید مگر اینکه رویدادهای خاصی را ارسال کند، رویدادهای مورد نیاز خود را در عضو requiredEventTypes از شیء options ارسال کنید، یا از getVoices() برای انتخاب صدایی که الزامات شما را برآورده میکند استفاده کنید. هر دو در ادامه توضیح داده شدهاند.
نشانهگذاری SSML
گفتارهای استفاده شده در این API ممکن است شامل نشانهگذاری با استفاده از زبان نشانهگذاری سنتز گفتار (SSML) باشند. اگر از SSML استفاده میکنید، اولین آرگومان برای speak() باید یک سند کامل SSML با یک سربرگ XML و یک برچسب سطح بالای <speak> باشد، نه یک قطعه سند.
برای مثال:
chrome.tts.speak(
'<?xml version="1.0"?>' +
'<speak>' +
' The <emphasis>second</emphasis> ' +
' word of this sentence was emphasized.' +
'</speak>'
);
همه موتورهای گفتار از همه برچسبهای SSML پشتیبانی نمیکنند، و برخی ممکن است اصلاً از SSML پشتیبانی نکنند، اما همه موتورها موظفند هر SSML را که پشتیبانی نمیکنند نادیده بگیرند و همچنان متن اصلی را بخوانند.
یک صدا انتخاب کنید
به طور پیشفرض، کروم بر اساس زبان، مناسبترین صدا را برای هر جملهای که میخواهید بگویید انتخاب میکند. در اکثر سیستمهای ویندوز، مک او اس ایکس و کروم او اس، ترکیب گفتار ارائه شده توسط سیستم عامل باید بتواند هر متنی را حداقل به یک زبان بیان کند. با این حال، برخی از کاربران ممکن است صداهای متنوعی را از سیستم عامل خود و از موتورهای گفتاری که توسط سایر افزونههای کروم پیادهسازی شدهاند، در دسترس داشته باشند. در این موارد، میتوانید کد سفارشی را برای انتخاب صدای مناسب پیادهسازی کنید یا لیستی از گزینهها را به کاربر ارائه دهید.
برای دریافت لیستی از تمام صداها، getVoices() را فراخوانی کنید و تابعی را به آن منتقل کنید که آرایهای از اشیاء TtsVoice را به عنوان آرگومان خود دریافت میکند:
chrome.tts.getVoices(
function(voices) {
for (var i = 0; i < voices.length; i++) {
console.log('Voice ' + i + ':');
console.log(' name: ' + voices[i].voiceName);
console.log(' lang: ' + voices[i].lang);
console.log(' extension id: ' + voices[i].extensionId);
console.log(' event types: ' + voices[i].eventTypes);
}
}
);
انواع
EventType
شمارشی
"شروع" «پایان» «کلمه» «جمله» "نشانگر" "قطع شده" "لغو شد" "خطا" «مکث» "رزومه"
TtsEvent
رویدادی از موتور TTS برای اعلام وضعیت یک گفتار.
خواص
- شاخص کاراکتر
شماره اختیاری
اندیس کاراکتر فعلی در جمله. برای رویدادهای کلمهای، رویداد در انتهای یک کلمه و قبل از شروع کلمه بعدی اجرا میشود.
charIndexنشان دهنده نقطهای در متن در ابتدای کلمه بعدی است که قرار است گفته شود. - پیام خطا
رشته اختیاری
شرح خطا، اگر نوع رویداد
errorباشد. - طول
شماره اختیاری
کروم ۷۴+طول بخش بعدی گفتار. برای مثال، در یک رویداد
word، این طول کلمهای است که در مرحله بعد گفته خواهد شد. اگر توسط موتور گفتار تنظیم نشده باشد، روی -۱ تنظیم میشود. - نوع
این نوع میتواند به محض
startگفتار،wordوقتی به مرز کلمه میرسد،sentenceوقتی به مرز جمله میرسد،markerوقتی به عنصر علامت SSML میرسد،endوقتی به انتهای گفتار میرسد،interruptedوقتی گفتار قبل از رسیدن به انتها متوقف یا قطع میشود،cancelledوقتی قبل از سنتز از صف حذف میشود، یاerrorوقتی هر خطای دیگری رخ میدهد، باشد. هنگام مکث گفتار، اگر یک گفتار خاص در وسط مکث شود، یک رویدادpauseاجرا میشود و اگر یک گفتار گفتار را از سر بگیرد،resume. توجه داشته باشید که رویدادهای مکث و از سرگیری ممکن است در صورت مکث گفتار بین گفتارها اجرا نشوند.
TtsOptions
گزینههای گفتار برای موتور TTS.
خواص
- انواع رویدادهای دلخواه
رشته[] اختیاری
انواع رویدادهای TTS که مایل به گوش دادن به آنها هستید. در صورت عدم وجود، همه انواع رویدادها ممکن است ارسال شوند.
- در نوبت قرار دادن
بولی اختیاری
اگر درست باشد، اگر TTS از قبل در حال انجام باشد، این گفتار را در صف قرار میدهد. اگر نادرست باشد (پیشفرض)، هر گفتار فعلی را قطع میکند و قبل از بیان این گفتار جدید، صف گفتار را پاک میکند.
- شناسه افزونه
رشته اختیاری
شناسه افزونه موتور گفتار مورد استفاده، در صورت مشخص بودن.
- جنسیت
جنسیت صوتی اختیاری
از کروم ۷۷ منسوخ شده استجنسیت منسوخ شده و نادیده گرفته خواهد شد.
جنسیت صدا برای گفتار ترکیبی.
- لنگ
رشته اختیاری
زبانی که برای سنتز استفاده میشود، به شکل language - region . مثالها: 'en'، 'en-US'، 'en-GB'، 'zh-CN'.
- زمین
شماره اختیاری
زیر و بمی صدا بین ۰ تا ۲، که ۰ پایینترین و ۲ بالاترین صدا است. ۱.۰ مربوط به زیر و بمی پیشفرض صدا است.
- نرخ
شماره اختیاری
سرعت صحبت کردن نسبت به سرعت پیشفرض برای این صدا. ۱.۰ سرعت پیشفرض است، معمولاً حدود ۱۸۰ تا ۲۲۰ کلمه در دقیقه. ۲.۰ دو برابر سریعتر و ۰.۵ نصف سریعتر است. مقادیر کمتر از ۰.۱ یا بالاتر از ۱۰.۰ اکیداً مجاز نیستند، اما بسیاری از صداها حداقل و حداکثر سرعت را بیشتر محدود میکنند - برای مثال، یک صدای خاص ممکن است در واقع سریعتر از ۳ برابر حالت عادی صحبت نکند، حتی اگر مقداری بزرگتر از ۳.۰ تعیین کنید.
- انواع رویداد مورد نیاز
رشته[] اختیاری
انواع رویداد TTS که صدا باید از آنها پشتیبانی کند.
- نام صدا
رشته اختیاری
نام صدایی که برای سنتز استفاده میشود. اگر خالی باشد، از هر صدای موجود استفاده میکند.
- حجم
شماره اختیاری
بلندی صدای صحبت بین ۰ و ۱، که ۰ کمترین و ۱ بیشترین صدا را نشان میدهد، و مقدار پیشفرض آن ۱.۰ است.
- رویداد
اختیاری باطل
این تابع با رویدادهایی که در فرآیند بیان یک جمله رخ میدهند، فراخوانی میشود.
تابع
onEventبه شکل زیر است:(event: TtsEvent) => {...}
- رویداد
رویداد بهروزرسانی از موتور تبدیل متن به گفتار که وضعیت این گفتار را نشان میدهد.
TtsVoice
توصیفی از صدای موجود برای سنتز گفتار.
خواص
- انواع رویداد
نوع رویداد [] اختیاری
تمام انواع رویدادهای فراخوانی که این صدا قادر به ارسال آنهاست.
- شناسه افزونه
رشته اختیاری
شناسه داخلی که این صدا را ارائه میدهد.
- جنسیت
جنسیت صوتی اختیاری
از کروم ۷۰ منسوخ شده استجنسیت منسوخ شده و نادیده گرفته خواهد شد.
جنسیت این صدا.
- لنگ
رشته اختیاری
زبانی که این صدا پشتیبانی میکند، به شکل language - region . مثالها: 'en'، 'en-US'، 'en-GB'، 'zh-CN'.
- از راه دور
بولی اختیاری
اگر درست باشد، موتور سنتز یک منبع شبکه از راه دور است. ممکن است تأخیر بالاتری داشته باشد و هزینههای پهنای باند را متحمل شود.
- نام صدا
رشته اختیاری
نام صدا.
VoiceGender
جنسیت منسوخ شده و نادیده گرفته میشود.
شمارشی
"مرد" "زن"
روشها
getVoices()
chrome.tts.getVoices(): Promise<TtsVoice[]>
آرایهای از تمام صداهای موجود را دریافت میکند.
بازگشتها
قول بده< TtsVoice []>
کروم ۱۰۱+
isSpeaking()
chrome.tts.isSpeaking(): Promise<boolean>
بررسی میکند که آیا موتور در حال حاضر در حال صحبت است یا خیر. در سیستم عامل مک او اس ایکس، هر زمان که موتور گفتار سیستم در حال صحبت باشد، حتی اگر گفتار توسط کروم آغاز نشده باشد، نتیجه درست (true) است.
بازگشتها
قول <boolean>
کروم ۱۰۱+
pause()
chrome.tts.pause(): void
سنتز گفتار را، احتمالاً در وسط یک گفتار، متوقف میکند. فراخوانی برای از سرگیری یا توقف، مکث گفتار را از بین میبرد.
resume()
chrome.tts.resume(): void
اگر سخنرانی متوقف شده باشد، از همان جایی که متوقف شده بود، صحبت را از سر میگیرد.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
): Promise<void>
متن را با استفاده از موتور تبدیل متن به گفتار بیان میکند.
پارامترها
- بیان
رشته
متن برای خواندن، چه متن ساده و چه یک سند SSML کامل و خوشفرم. موتورهای گفتاری که از SSML پشتیبانی نمیکنند، برچسبها را حذف کرده و متن را میخوانند. حداکثر طول متن ۳۲۷۶۸ کاراکتر است.
- گزینهها
TtsOptions اختیاری است
گزینههای گفتاری.
بازگشتها
قول<void>
کروم ۱۰۱+بلافاصله، قبل از پایان یافتن گفتار، حل میشود. اگر خطایی رخ دهد، promise رد میشود. برای دریافت بازخورد دقیقتر از options.onEvent استفاده کنید.
stop()
chrome.tts.stop(): void
هر سخنرانی فعلی را متوقف میکند و صف هرگونه سخنرانی در انتظار را پاک میکند. علاوه بر این، اگر سخنرانی متوقف شده باشد، اکنون برای تماس بعدی برای صحبت کردن، از حالت مکث خارج میشود.
رویدادها
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
زمانی فراخوانی میشود که لیست tts.TtsVoice هایی که قرار است توسط getVoices برگردانده شوند، تغییر کرده باشد.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:() => void