chrome.ttsEngine

توضیحات

از chrome.ttsEngine API برای پیاده سازی موتور تبدیل متن به گفتار (TTS) با استفاده از افزونه استفاده کنید. اگر برنامه افزودنی شما با استفاده از این API ثبت شود، هنگامی که هر برنامه افزودنی یا برنامه Chrome از tts API برای تولید گفتار استفاده می‌کند، رویدادهایی حاوی یک گفته و پارامترهای دیگر دریافت می‌کند. پس از آن برنامه افزودنی شما می تواند از هر فناوری وب موجود برای ترکیب و خروجی گفتار استفاده کند و رویدادها را برای گزارش وضعیت به عملکرد تماس ارسال کند.

مجوزها

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' توسط موتور گفتار ارسال نمی شوند. آنها به طور خودکار توسط کروم تولید می شوند.

کلاینت‌های تبدیل متن به گفتار می‌توانند با تماس با 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+

پارامترهای حاوی بافر صوتی و داده های مرتبط.

خواص

  • بافر صوتی

    ArrayBuffer

    بافر صوتی از موتور تبدیل متن به گفتار. باید دقیقاً طول audioStreamOptions.bufferSize داشته باشد و به صورت mono، در audioStreamOptions.sampleRate، و به صورت pcm خطی، شناور علامت‌دار 32 بیتی کدگذاری شود، یعنی نوع Float32Array در جاوا اسکریپت.

  • charIndex

    شماره اختیاری

    شاخص کاراکتر مرتبط با این بافر صوتی.

  • isLastBuffer است

    بولی اختیاری

    درست است اگر این بافر صوتی آخرین مورد برای متنی باشد که گفته می شود.

AudioStreamOptions

Chrome 92+

شامل فرمت جریان صوتی است که انتظار می رود توسط یک موتور تولید شود.

خواص

  • bufferSize

    شماره

    تعداد نمونه‌های داخل بافر صوتی.

  • نرخ نمونه

    شماره

    نرخ نمونه مورد انتظار در بافر صوتی.

SpeakOptions

Chrome 92+

گزینه های مشخص شده برای متد ()tts.speak.

خواص

  • جنسیت

    VoiceGender اختیاری است

    از Chrome 92 منسوخ شده است

    جنسیت منسوخ شده و نادیده گرفته خواهد شد.

    جنسیت صدا برای گفتار سنتز شده

  • زبان

    رشته اختیاری

    زبانی که برای سنتز استفاده می شود، به شکل زبان - منطقه . مثال‌ها: «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 باشد. وقتی صدایی از این طیف کامل از نرخ‌ها پشتیبانی نمی‌کند، خطا را نشان ندهید. درعوض، نرخ را روی محدوده‌ای که صدا پشتیبانی می‌کند، کاهش دهید.

  • نام صدا

    رشته اختیاری

    نام صدای مورد استفاده برای سنتز.

  • حجم

    شماره اختیاری

    صدای مکالمه بین 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 به نظر می رسد:

    () => void

onResume

chrome.ttsEngine.onResume.addListener(
  callback: function,
)

اختیاری: اگر موتوری از رویداد مکث پشتیبانی می‌کند، باید از رویداد رزومه نیز پشتیبانی کند تا در صورت وجود، گفتار فعلی را ادامه دهد. توجه داشته باشید که یک رویداد توقف نیز باید حالت توقف را پاک کند.

پارامترها

  • پاسخ به تماس

    تابع

    پارامتر callback به نظر می رسد:

    () => void

onSpeak

chrome.ttsEngine.onSpeak.addListener(
  callback: function,
)

زمانی که کاربر با tts.speak() تماس می گیرد، فراخوانی می شود و یکی از صداهای مانیفست این افزونه اولین صدایی است که با شی گزینه مطابقت دارد.

پارامترها

  • پاسخ به تماس

    تابع

    پارامتر 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 به نظر می رسد:

    (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 به نظر می رسد:

    () => void