chrome.ttsEngine (original) (raw)
Manifest V3
תיאור
שימוש ב-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 לא יוכל לתזמן משפטים שנמצאים בתור.
אחרי הטעינה, תוסף יכול להחליף את רשימת הקולות המוצגים באמצעות קריאה ל-chrome.ttsEngine.updateVoices. (שימו לב שהפרמטרים שמשמשים בקריאה הפרוגרמטית ל-updateVoices הם באותיות רישיות (case-sensitive) בסגנון camel case: למשל, voiceName, בניגוד לקובץ המניפסט שבו נעשה שימוש ב-voice_name).
סוגי האירועים האפשריים שאפשר לשלוח תואמים לסוגים של האירועים שהשיטה speak() מקבלת:
'start': המנוע התחיל לדבר את ההבעה.'word': הגעתם לקצה המילה. משתמשים ב-event.charIndexכדי לקבוע את מיקום הדיבור הנוכחי.'sentence': הגעתם לקצה המשפט. משתמשים ב-event.charIndexכדי לקבוע את מיקום הדיבור הנוכחי.'marker': הגעתם לסמן SSML. משתמשים ב-event.charIndexכדי לקבוע את מיקום הדיבור הנוכחי.'end': המנוע סיים לומר את ההבעה.'error': אירעה שגיאה ספציפית למנוע ולא ניתן לבטא את המשפט הזה. מעבירים מידע נוסף ב-event.errorMessage.
אירועי 'interrupted' ו-'cancelled' לא נשלחים על ידי מנוע הדיבור, אלא נוצרים באופן אוטומטי על ידי Chrome.
לקוחות של Text-to-speech יכולים לקבל את פרטי הקול מהמניפסט של התוסף באמצעות קריאה ל-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, והוא צריך להיות מקודד כמונו, ב-audioStreamOptions.sampleRate וכ-PCM ליניארי, 32-bit signed float, כלומר הסוג Float32Array ב-JavaScript.
- אינדקס התווים שמשויך למאגר האודיו הזה.
- isLastBuffer
boolean אופציונלי
הערך True מוחזר אם מאגר האודיו הזה הוא האחרון של הטקסט שנאמר.
AudioStreamOptions
מכיל את הפורמט של ערוץ האודיו שצפוי להיווצר על ידי מנוע.
מאפיינים
- מספר הדגימות במאגר אודיו.
- תדירות הדגימה הצפויה במאגר אודיו.
LanguageInstallStatus
סטטוס ההתקנה של קול.
Enum
"notInstalled"
"installing"
"installed"
"failed"
LanguageStatus
סטטוס ההתקנה של שפה.
מאפיינים
- פרטים על כשלים בהתקנה. אפשר לאכלס את השדה הזה אם התקנת השפה נכשלה.
- סטטוס ההתקנה.
- מחרוזת שפה בפורמט קוד שפה-קוד אזור, כאשר אפשר להשמיט את האזור. דוגמאות: en, en-AU, zh-CH.
LanguageUninstallOptions
אפשרויות להסרת שפה מסוימת.
מאפיינים
- uninstallImmediately
בוליאני
הערך True (נכון) אם לקוח ה-TTS רוצה שהשפה תוסר באופן מיידי. המנוע יכול לבחור אם להסיר את השפה ומתי לעשות זאת, על סמך הפרמטר הזה ופרטי מבצע הבקשה. אם הערך הוא false, יכול להיות שהמערכת תשתמש בקריטריונים אחרים, כמו שימוש לאחרונה, כדי לקבוע מתי להסיר את האפליקציה.
SpeakOptions
האפשרויות שצוינו לשיטה tts.speak().
מאפיינים
- gender
VoiceGender אופציונלי
הוצאה משימוש החל מ-Chrome 92
המאפיין 'מגדר' הוצא משימוש והמערכת תתעלם ממנו.
המגדר של הקול לדיבור המסונתז. - השפה שבה יתבצע הסינתזה, בפורמט _language_-region. דוגמאות: '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
המזהה של הלקוח שמבקש את הסטטוס.
מאפיינים
- לקוח שולח בקשה לניהול שפה. בתוסף, זהו מזהה התוסף הייחודי. בתכונות של Chrome, זהו השם של התכונה שקריא לאנשים.
- סוג מבקש הבקשה.
TtsClientSource
סוג מבקש הבקשה.
Enum
"chromefeature"
"extension"
VoiceGender
Chrome מגרסה 54 ואילך הוצאה משימוש החל מגרסה Chrome 70
המאפיין 'מגדר' הוצא משימוש והמערכת תתעלם ממנו.
Enum
Methods
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)
פונקציה
הפרמטרcallbackנראה כך:
(requestor: TtsClient, lang: string) => void
onLanguageStatusRequest
chrome.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
האירוע מופעל כשלקוח TTS מבקש את סטטוס ההתקנה של שפה.
פרמטרים
- קריאה חוזרת (callback)
פונקציה
הפרמטרcallbackנראה כך:
(requestor: TtsClient, lang: string) => void
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- הפרמטר
sendTtsEventנראה כך:
(event: tts.TtsEvent) => void
* האירוע ממנוע המרת הטקסט לדיבור (TTS) שמציין את הסטטוס של ההבעה הזו.
- הפרמטר
onSpeakWithAudioStream
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
הפונקציה הזו נקראת כשהמשתמש מבצע קריאה ל-tts.speak() ואחת מהקולות מהמניפסט של התוסף הזה היא הראשונה שתתאים לאובייקט האפשרויות. ההבדל בין ttsEngine.onSpeak לבין ttsEngine.onSpeak הוא ש-Chrome מספק שירותי הפעלת אודיו ומטפל בשליחת אירועי TTS.
פרמטרים
- קריאה חוזרת (callback)
פונקציה
הפרמטרcallbackנראה כך:
(utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void- הפרמטר
sendTtsAudioנראה כך:
(audioBufferParams: AudioBuffer) => void
* פרמטרים שמכילים מאגר אודיו ונתונים משויכים. - הפרמטר
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
אלא אם צוין אחרת, התוכן של דף זה הוא ברישיון Creative Commons Attribution 4.0 ודוגמאות הקוד הן ברישיון Apache 2.0. לפרטים, ניתן לעיין במדיניות האתר Google Developers. Java הוא סימן מסחרי רשום של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-08-11 (שעון UTC).