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

    شماره

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

  • نمونه نرخ

    شماره

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

LanguageInstallStatus

در انتظار

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

Enum

"نصب نشده"

"نصب"

"نصب شده"

"شکست خورده"

LanguageStatus

در انتظار

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

خواص

  • خطا

    رشته اختیاری

    جزئیات در مورد خرابی نصب اگر زبان نصب نشد به صورت اختیاری پر می شود.

  • وضعیت نصب

    وضعیت نصب

  • زبان

    رشته

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

LanguageUninstallOptions

در انتظار

گزینه هایی برای حذف نصب یک زبان داده شده.

خواص

  • بلافاصله حذف نصب کنید

    بولی

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

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.

TtsClient

Chrome 131+

شناسه وضعیت درخواست کننده مشتری

خواص

  • شناسه

    رشته

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

  • منبع

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

TtsClientSource

Chrome 131+

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

Enum

"ویژگی کروم"

"بسط"

VoiceGender

Chrome 54+ از Chrome 70 منسوخ شده است

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

Enum

"مرد"

"مونث"

روش ها

updateLanguage()

در انتظار
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)

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

پارامترها

updateVoices()

Chrome 66+
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

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

پارامترها

  • صداها

    آرایه ای از اشیاء tts.TtsVoice که صداهای موجود برای سنتز گفتار را نشان می دهد.

رویدادها

onInstallLanguageRequest

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

پارامترها

  • پاسخ به تماس

    تابع

    پارامتر 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

onUninstallLanguageRequest

در انتظار
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

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

پارامترها