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.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

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

  • charIndex

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

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

  • isLastBuffer

    ערך בוליאני אופציונלי

    הערך הוא True אם מאגר האודיו הזמני הוא האחרון בטקסט שנאמר.

AudioStreamOptions

Chrome מגרסה 92 ואילך

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

מאפיינים

  • bufferSize

    number

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

  • sampleRate

    number

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

SpeakOptions

Chrome מגרסה 92 ואילך

האפשרויות שצוינו ל-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

Chrome 54+ הוצא משימוש מאז Chrome 70

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

Enum

"זכר"

"female"

שיטות

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

      • אירוע

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

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