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.ttsEngine.updateVoices فهرست صداهای اعلام‌شده را جایگزین کند. (توجه داشته باشید که پارامترهای استفاده‌شده در فراخوانی برنامه‌نویسی‌شده برای updateVoices به صورت camel case هستند: مثلاً voiceName ، برخلاف فایل manifest که از 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

کروم ۹۲+

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

خواص

  • بافر صوتی

    آرایه بافر

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

  • شاخص کاراکتر

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

    فهرست کاراکترهای مرتبط با این بافر صوتی.

  • isLastBuffer

    بولی اختیاری

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

AudioStreamOptions

کروم ۹۲+

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

خواص

  • اندازه بافر

    شماره

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

  • نرخ نمونه

    شماره

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

LanguageInstallStatus

کروم ۱۳۲+

وضعیت نصب یک صدا.

شمارشی

"نصب نشده"

"نصب کردن"

"نصب شده"

"شکست خورده"

LanguageStatus

کروم ۱۳۲+

وضعیت نصب یک زبان.

خواص

  • خطا

    رشته اختیاری

    جزئیات مربوط به خطاهای نصب. در صورت عدم موفقیت نصب زبان، به صورت اختیاری پر می‌شود.

  • وضعیت نصب

    وضعیت نصب.

  • لنگ

    رشته

    رشته زبان به شکل کد زبان-کد منطقه، که در آن منطقه ممکن است حذف شود. مثال‌ها عبارتند از en، en-AU، zh-CH.

LanguageUninstallOptions

کروم ۱۳۲+

گزینه‌هایی برای حذف نصب یک زبان خاص.

خواص

  • فوراً حذف نصب کنید

    بولی

    اگر کلاینت TTS بخواهد زبان بلافاصله حذف شود، مقدار آن درست است. موتور می‌تواند بر اساس این پارامتر و اطلاعات درخواست‌کننده، انتخاب کند که آیا زبان را حذف کند یا چه زمانی. اگر نادرست باشد، ممکن است از معیارهای دیگری مانند استفاده اخیر، برای تعیین زمان حذف استفاده کند.

SpeakOptions

کروم ۹۲+

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

خواص

  • جنسیت

    جنسیت صوتی اختیاری

    از کروم ۹۲ منسوخ شده است

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

    جنسیت صدا برای گفتار ترکیبی.

  • لنگ

    رشته اختیاری

    زبانی که برای سنتز استفاده می‌شود، به شکل language - region . مثال‌ها: 'en'، 'en-US'، 'en-GB'، 'zh-CN'.

  • زمین

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

    زیر و بمی صدا بین ۰ تا ۲، که ۰ پایین‌ترین و ۲ بالاترین صدا است. ۱.۰ مربوط به زیر و بمی پیش‌فرض این صدا است.

  • نرخ

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

    سرعت صحبت کردن نسبت به سرعت پیش‌فرض برای این صدا. ۱.۰ سرعت پیش‌فرض است، معمولاً حدود ۱۸۰ تا ۲۲۰ کلمه در دقیقه. ۲.۰ دو برابر سریع‌تر و ۰.۵ نصف سریع‌تر است. تضمین می‌شود که این مقدار بین ۰.۱ تا ۱۰.۰ باشد، شامل همه. وقتی صدایی از این طیف کامل سرعت‌ها پشتیبانی نمی‌کند، خطایی برنگردانید. در عوض، سرعت را به محدوده‌ای که صدا پشتیبانی می‌کند، کاهش دهید.

  • نام صدا

    رشته اختیاری

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

  • حجم

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

    بلندی صدای صحبت بین ۰ و ۱، که ۰ کمترین و ۱ بیشترین صدا را نشان می‌دهد، و مقدار پیش‌فرض آن ۱.۰ است.

TtsClient

کروم ۱۳۱+

شناسه وضعیت درخواست‌کننده برای کلاینت.

خواص

  • شناسه

    رشته

    کلاینت درخواست مدیریت زبان را ارسال می‌کند. برای یک افزونه، این شناسه منحصر به فرد افزونه است. برای ویژگی‌های کروم، این نام خوانای انسانی آن ویژگی است.

  • نوع درخواست کننده.

TtsClientSource

کروم ۱۳۱+

نوع درخواست کننده.

شمارشی

"ویژگی کروم"

"امتداد"

VoiceGender

کروم ۵۴+ از کروم ۷۰ منسوخ شده است

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

شمارشی

"مرد"

"زن"

روش‌ها

updateLanguage()

کروم ۱۳۲+
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)
: void

توسط یک موتور فراخوانی می‌شود وقتی که یک زبان نصب می‌شود و وقتی که یک زبان حذف می‌شود. همچنین در پاسخ به درخواست وضعیت از یک کلاینت فراخوانی می‌شود. وقتی یک صدا نصب یا حذف می‌شود، موتور باید ttsEngine.updateVoices را نیز برای ثبت صدا فراخوانی کند.

پارامترها

updateVoices()

کروم ۶۶+
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)
: void

توسط یک موتور فراخوانی می‌شود تا لیست صداهای خود را به‌روزرسانی کند. این لیست، هر صدایی را که در مانیفست این افزونه اعلام شده است، لغو می‌کند.

پارامترها

رویدادها

onInstallLanguageRequest

کروم ۱۳۱+
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

زمانی اجرا می‌شود که یک کلاینت TTS درخواست نصب یک زبان جدید را داشته باشد. موتور باید تلاش کند تا زبان را دانلود و نصب کند و ttsEngine.updateLanguage را با نتیجه فراخوانی کند. در صورت موفقیت، موتور همچنین باید ttsEngine.updateVoices را برای ثبت صداهای جدید موجود فراخوانی کند.

پارامترها

  • تماس برگشتی

    تابع

    پارامتر callback به شکل زیر است:

    (requestor: TtsClient, lang: string) => void

onLanguageStatusRequest

کروم ۱۳۲+
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

زمانی اجرا می‌شود که یک کلاینت TTS وضعیت نصب یک زبان را درخواست کند.

پارامترها

  • تماس برگشتی

    تابع

    پارامتر callback به شکل زیر است:

    (requestor: TtsClient, lang: string) => void

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() را فراخوانی می‌کند و یکی از صداهای موجود در مانیفست این افزونه، اولین صدایی است که با شیء options مطابقت دارد.

پارامترها

  • تماس برگشتی

    تابع

    پارامتر callback به شکل زیر است:

    (utterance: string, options: SpeakOptions, sendTtsEvent: function) => void

    • بیان

      رشته

    • گزینه‌ها
    • رویداد ارسال Tts

      تابع

      پارامتر sendTtsEvent به شکل زیر است:

      (event: tts.TtsEvent) => void

      • رویداد

        رویدادی از موتور تبدیل متن به گفتار که وضعیت این گفتار را نشان می‌دهد.

onSpeakWithAudioStream

کروم ۹۲+
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

زمانی فراخوانی می‌شود که کاربر tts.speak() را فراخوانی می‌کند و یکی از صداهای موجود در مانیفست این افزونه، اولین صدایی است که با شیء options مطابقت دارد. با ttsEngine.onSpeak متفاوت است، زیرا کروم سرویس‌های پخش صدا را ارائه می‌دهد و رویدادهای tts را مدیریت می‌کند.

پارامترها

  • تماس برگشتی

    تابع

    پارامتر callback به شکل زیر است:

    (utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void

    • بیان

      رشته

    • گزینه‌ها
    • گزینه‌های پخش صوتی
    • ارسالTtsAudio

      تابع

      پارامتر sendTtsAudio به شکل زیر است:

      (audioBufferParams: AudioBuffer) => void

      • پارامترهای audioBuffer

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

    • خطای ارسال

      تابع

      کروم ۹۴+

      پارامتر sendError به صورت زیر است:

      (errorMessage?: string) => void

      • پیام خطا

        رشته اختیاری

        رشته‌ای که خطا را توصیف می‌کند.

onStop

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

زمانی اجرا می‌شود که فراخوانی به tts.stop انجام شود و این داخلی ممکن است در حال صحبت کردن باشد. اگر داخلی فراخوانی به onStop دریافت کند و صحبت از قبل متوقف شده باشد، نباید کاری انجام دهد (خطا ایجاد نکند). اگر صحبت در حالت مکث باشد، این باید حالت مکث را لغو کند.

پارامترها

  • تماس برگشتی

    تابع

    پارامتر callback به شکل زیر است:

    () => void

onUninstallLanguageRequest

کروم ۱۳۲+
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

زمانی اجرا می‌شود که یک کلاینت TTS اعلام کند که دیگر نیازی به یک زبان نیست.

پارامترها