תיאור
צריך להשתמש ב-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
נמצאת בקמלת גמל: למשל, 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 לינארי, כ-float חתום ב-32 ביט, כלומר בסוג Float32Array ב-JavaScript.
-
charIndex
מספר אופציונלי
אינדקס התווים המשויך למאגר הנתונים הזמני של האודיו.
-
isLastBuffer
ערך בוליאני אופציונלי
הערך הוא True אם מאגר האודיו הזמני הוא האחרון בטקסט שנאמר.
AudioStreamOptions
מכיל את הפורמט של שידור האודיו שצפוי להיות מופק על ידי מנוע.
מאפיינים
-
bufferSize
number
מספר הדגימות במאגר הנתונים הזמני של האודיו.
-
sampleRate
number
תדירות הדגימה הצפויה במאגר נתונים זמני של אודיו.
SpeakOptions
האפשרויות שצוינו ל-method 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 הוא המהירות הגבוהה פי 2, ו-0.5 מציין את המהירות בחצי. הערך הזה מובטח להיות בין 0.1 ל-10.0, כולל. אם הקול לא תומך בטווח התעריפים המלא הזה, אל תחזירו הודעת שגיאה. במקום זאת, צריך לחתוך את הקצב לפי הטווח שנתמך ב-Voice.
-
voiceName
מחרוזת אופציונלי
שם הקול שישמש לסינתזה.
-
עוצמת קול
מספר אופציונלי
עוצמת הדיבור בין 0 ל-1 כולל, כאשר 0 הוא הנמוך ביותר ו-1 הוא הגבוה ביותר, וברירת המחדל היא 1.0.
VoiceGender
המגדר הוצא משימוש והמערכת תתעלם ממנו.
Enum
"זכר"
"female"
שיטות
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
)
בוצעה שיחה על ידי מנוע כדי לעדכן את רשימת הקולות שלו. הרשימה הזו מבטלת את כל הקולות המוצהרים במניפסט של התוסף.
פרמטרים
-
קולות
TtsVoice[]
מערך של
tts.TtsVoice
אובייקטים שמייצגים את הקולות הזמינים לסינתזת דיבור.
אירועים
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
פונקציה
הפרמטר
sendTtsEvent
נראה כך:(event: tts.TtsEvent) => void
-
אירוע
האירוע מהמנוע של המרת טקסט לדיבור (TTS) שמציין את הסטטוס של הביטוי הזה.
-
-
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
-
התבטאות
מחרוזת
-
אפשרויות
-
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