תאריך הרענון: 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 הם בפורמט Camel Case: למשל, 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 ליניארי, 32-bit signed float, כלומר מסוג Float32Array ב-JavaScript.
-
charIndex
מספר אופציונלי
אינדקס התווים שמשויך למאגר האודיו הזה.
-
isLastBuffer
boolean אופציונלי
הערך True אם מאגר האודיו הזה הוא האחרון עבור הטקסט המושמע.
AudioStreamOptions
מכיל את פורמט ערוץ האודיו שהמנוע צפוי ליצור.
מאפיינים
-
bufferSize
number
מספר הדגימות במאגר אודיו.
-
sampleRate
number
תדירות הדגימה הצפויה במאגר אודיו.
LanguageInstallStatus
סטטוס ההתקנה של קול.
ספירה
"notInstalled"
'התקנה'
'התקנה'
failed
LanguageStatus
סטטוס ההתקנה של שפה.
מאפיינים
-
error
מחרוזת אופציונלי
פרטים על כשלים בהתקנה. אפשר למלא את השדה הזה אם התקנת השפה נכשלה.
-
installStatus
סטטוס ההתקנה.
-
lang
מחרוזת
מחרוזת שפה בצורה של קוד שפה-קוד אזור, כאשר אפשר להשמיט את האזור. לדוגמה: en, en-AU, zh-CH.
LanguageUninstallOptions
אפשרויות להסרת שפה מסוימת.
מאפיינים
-
uninstallImmediately
בוליאני
הערך הוא True אם לקוח ה-TTS רוצה להסיר את השפה באופן מיידי. מנוע השפה יכול לבחור אם ומתי להסיר את ההתקנה של השפה, על סמך הפרמטר הזה ופרטי השולח. אם הערך הוא false, המערכת עשויה להשתמש בקריטריונים אחרים, כמו שימוש עדכני, כדי לקבוע מתי להסיר את האפליקציה.
SpeakOptions
אפשרויות שצוינו לשיטה tts.speak().
מאפיינים
-
gender
VoiceGender אופציונלי
הוצא משימוש מאז Chrome 92המאפיין 'מגדר' הוצא משימוש והמערכת תתעלם ממנו.
המגדר של הקול לדיבור מסונתז.
-
lang
מחרוזת אופציונלי
השפה שבה רוצים להשתמש לסינתזה, בפורמט שפה-אזור. דוגמאות: '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, כולל. אם קול מסוים לא תומך בטווח המלא הזה של מהירויות, לא צריך להחזיר שגיאה. במקום זאת, כדאי להגביל את הקצב לטווח שהקול תומך בו.
-
voiceName
מחרוזת אופציונלי
השם של הקול שבו רוצים להשתמש לסינתזה.
-
עוצמת קול
מספר אופציונלי
נפח הדיבור בין 0 ל-1 כולל, כאשר 0 הוא הנמוך ביותר ו-1 הוא הגבוה ביותר, עם ברירת מחדל של 1.0.
TtsClient
מזהה של הלקוח שמבקש את הסטטוס.
מאפיינים
-
id [מזהה]
מחרוזת
הלקוח ששולח בקשה לניהול שפה. במקרה של תוסף, זהו מזהה התוסף הייחודי. עבור תכונות של Chrome, זהו השם של התכונה שקריא לבני אדם.
-
source
סוג הפונה.
TtsClientSource
סוג הפונה.
ספירה
"chromefeature"
'תוסף'
VoiceGender
המאפיין 'מגדר' הוצא משימוש והמערכת תתעלם ממנו.
ספירה
'male'
female
Methods
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
הפונקציה הזו מופעלת על ידי מנוע כשיש ניסיון להתקין שפה, וכשמסירים שפה. נקרא גם בתגובה לבקשת סטטוס מלקוח. כשמתקינים או מסירים קול, המנוע צריך גם לקרוא ל-ttsEngine.updateVoices כדי לרשום את הקול.
פרמטרים
-
status
סטטוס ההתקנה של השפה.
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
הפונקציה נקראת על ידי מנוע כדי לעדכן את רשימת הקולות שלו. הרשימה הזו מבטלת את כל הקולות שהוגדרו במניפסט של התוסף הזה.
פרמטרים
-
קולות
TtsVoice[]
מערך של אובייקטים מסוג
tts.TtsVoiceשמייצגים את הקולות הזמינים לסינתזת דיבור.
אירועים
onInstallLanguageRequest
chrome.ttsEngine.onInstallLanguageRequest.addListener(
callback: function,
)
מופעל כשלקוח TTS מבקש להתקין שפה חדשה. המנוע צריך לנסות להוריד ולהתקין את השפה, ולקרוא ל-ttsEngine.updateLanguage עם התוצאה. במקרה של הצלחה, המנוע צריך גם לקרוא ל-ttsEngine.updateVoices כדי לרשום את הקולות החדשים שזמינים.
פרמטרים
-
callback
פונקציה
הפרמטר
callbackנראה כך:(requestor: TtsClient, lang: string) => void
-
הגורם המבקש
-
lang
מחרוזת
-
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
מופעל כשלקוח TTS מבקש את סטטוס ההתקנה של שפה.
פרמטרים
-
callback
פונקציה
הפרמטר
callbackנראה כך:(requestor: TtsClient, lang: string) => void
-
הגורם המבקש
-
lang
מחרוזת
-
onPause
chrome.ttsEngine.onPause.addListener(
callback: function,
)
אופציונלי: אם מנוע תומך באירוע השהיה, הוא צריך להשהות את האמירה הנוכחית שנאמרת, אם יש כזו, עד שהוא מקבל אירוע המשך או אירוע עצירה. שימו לב: אירוע עצירה צריך גם לבטל את מצב ההשהיה.
פרמטרים
-
callback
פונקציה
הפרמטר
callbackנראה כך:() => void
onResume
chrome.ttsEngine.onResume.addListener(
callback: function,
)
אופציונלי: אם מנוע תומך באירוע השהיה, הוא צריך לתמוך גם באירוע המשך, כדי להמשיך להקריא את ההצהרה הנוכחית, אם יש כזו. שימו לב: אירוע עצירה צריך גם לבטל את מצב ההשהיה.
פרמטרים
-
callback
פונקציה
הפרמטר
callbackנראה כך:() => void
onSpeak
chrome.ttsEngine.onSpeak.addListener(
callback: function,
)
הפונקציה מופעלת כשהמשתמש מתקשר אל tts.speak() ואחד מהקולות מהמניפסט של התוסף הזה הוא הראשון שתואם לאובייקט האפשרויות.
פרמטרים
-
callback
פונקציה
הפרמטר
callbackנראה כך:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
-
אמירה
מחרוזת
-
options
-
sendTtsEvent
פונקציה
הפרמטר
sendTtsEventנראה כך:(event: tts.TtsEvent) => void
-
אירוע
האירוע ממנוע המרת הטקסט לדיבור שמציין את הסטטוס של ההצהרה הזו.
-
-
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
הפונקציה מופעלת כשהמשתמש מתקשר אל tts.speak() ואחד מהקולות מהמניפסט של התוסף הזה הוא הראשון שתואם לאובייקט האפשרויות. הפונקציה הזו שונה מהפונקציה ttsEngine.onSpeak בכך ש-Chrome מספק שירותי השמעת אודיו ומטפל בשליחת אירועי TTS.
פרמטרים
-
callback
פונקציה
הפרמטר
callbackנראה כך:(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void
-
אמירה
מחרוזת
-
options
-
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
פונקציה
הפרמטר
callbackנראה כך:() => void
onUninstallLanguageRequest
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
האירוע מופעל כשלקוח TTS מציין ששפה מסוימת כבר לא נדרשת.
פרמטרים
-
callback
פונקציה
הפרמטר
callbackנראה כך:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
-
הגורם המבקש
-
lang
מחרוזת
-
uninstallOptions
-