chrome.ttsEngine

תיאור

צריך להשתמש ב-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) יכולים לקבל את המידע הקולי מהמניפסט של התוסף על ידי התקשרות אל 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

Chrome 92 ומעלה

פרמטרים המכילים מאגר נתונים זמני של אודיו ונתונים משויכים.

תכונות

  • audioBuffer

    ArrayBuffer

    מאגר הנתונים הזמני מהמנוע של המרת טקסט לדיבור (TTS). האורך שלו צריך להיות audioStreamOptions.bufferSize ומקודד כ-מונו, בכתובת audioStreamOptions.sampleRate, וכן בפורמט pcm ליניארי, מספר ממשי (float) חתום של 32 ביט, כלומר הסוג Float32Array ב-JavaScript.

  • charIndex

    מספר אופציונלי

    אינדקס התווים שמשויך למאגר הנתונים הזמני של האודיו.

  • isLastBuffer

    בוליאני אופציונלי

    True אם מאגר הנתונים הזמני של האודיו הוא האחרון של הטקסט שמוקרא.

AudioStreamOptions

Chrome 92 ומעלה

הפורמט של שידור האודיו שצפוי להיווצר על ידי מנוע.

תכונות

  • bufferSize

    מספר

    מספר הדגימות בתוך מאגר אודיו.

  • sampleRate

    מספר

    תדירות הדגימה הצפויה במאגר נתונים זמני של אודיו.

SpeakOptions

Chrome 92 ומעלה

האפשרויות שצוינו לשיטה tts.speak() .

תכונות

  • gender

    VoiceGender אופציונלי

    הוצא משימוש מאז Chrome 92

    המגדר הוצא משימוש והמערכת תתעלם ממנו.

    מגדר הקול לדיבור מסונתז.

  • lang

    מחרוזת אופציונלי

    השפה שמשמשת לסינתזה, בפורמט 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.

VoiceGender

Chrome 54 ואילך הוצא משימוש מאז Chrome 70

המגדר הוצא משימוש והמערכת תתעלם ממנו.

טיפוסים בני מנייה (enum)

שיטות

updateVoices()

Chrome 66 ומעלה
chrome.ttsEngine.updateVoices(
  voices: 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

      • אירוע

        האירוע ממנוע המרת הטקסט לדיבור שמציין את הסטטוס של הביטוי הזה.

onSpeakWithAudioStream

Chrome 92 ומעלה
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