chrome.tts

توضیحات

از chrome.tts API برای پخش متن به گفتار (TTS) ترکیب شده استفاده کنید. همچنین به ttsEngine API مربوطه مراجعه کنید، که به یک برنامه افزودنی اجازه می دهد موتور گفتار را پیاده سازی کند.

مجوزها

tts

نمای کلی

Chrome با استفاده از قابلیت های ترکیب گفتار ارائه شده توسط سیستم عامل، پشتیبانی بومی برای گفتار در Windows (با استفاده از SAPI 5)، Mac OS X و ChromeOS ارائه می دهد. در همه پلتفرم‌ها، کاربر می‌تواند افزونه‌هایی را نصب کند که خود را به عنوان موتورهای گفتار جایگزین ثبت می‌کنند.

تولید گفتار

از برنامه افزودنی خود برای صحبت کردن speak() فراخوانی کنید. به عنوان مثال:

chrome.tts.speak('Hello, world.');

برای توقف فوراً صحبت کردن، کافیست stop() را فراخوانی کنید:

chrome.tts.stop();

می‌توانید گزینه‌هایی را ارائه کنید که ویژگی‌های مختلف گفتار، مانند سرعت، زیر و بم و موارد دیگر را کنترل می‌کنند. به عنوان مثال:

chrome.tts.speak('Hello, world.', {'rate': 2.0});

همچنین ایده خوبی است که زبان را مشخص کنید تا سینت سایزری که از آن زبان (و گویش منطقه ای، در صورت وجود) پشتیبانی می کند انتخاب شود.

chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});

به‌طور پیش‌فرض، هر فراخوانی برای speak() هر سخنرانی در حال انجام را قطع می‌کند و بلافاصله صحبت می‌کند. برای تعیین اینکه آیا یک تماس می تواند چیزی را قطع کند، می توانید isSpeaking() را فراخوانی کنید. علاوه بر این، می‌توانید از گزینه enqueue استفاده کنید تا این گفته به صفی از گفته‌ها اضافه شود که پس از پایان گفتار فعلی گفته می‌شود.

chrome.tts.speak('Speak this first.');
chrome.tts.speak(
    'Speak this next, when the first sentence is done.', {'enqueue': true});

شرح کامل همه گزینه ها را می توان در tts.speak زیر یافت. همه موتورهای گفتار از همه گزینه ها پشتیبانی نمی کنند.

برای دریافت خطاها و اطمینان از اینکه speak() به درستی فراخوانی می کنید، یک تابع callback را ارسال کنید که هیچ آرگومان نمی گیرد. در داخل callback، runtime.lastError را بررسی کنید تا ببینید آیا خطایی وجود دارد یا خیر.

chrome.tts.speak(
  utterance,
  options,
  function() {
    if (chrome.runtime.lastError) {
      console.log('Error: ' + chrome.runtime.lastError.message);
    }
  }
);

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

گوش دادن به رویدادها

برای دریافت اطلاعات بی‌درنگ بیشتر درباره وضعیت گفتار ترکیبی، یک شنونده رویداد را در گزینه‌های speak() قرار دهید، مانند این:

chrome.tts.speak(
  utterance,
  {
    onEvent: function(event) {
      console.log('Event ' + event.type + ' at position ' + event.charIndex);
      if (event.type == 'error') {
        console.log('Error: ' + event.errorMessage);
      }
    }
  },
  callback
);

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

  • 'start' : موتور شروع به صحبت کردن گفته است.
  • 'word' : به مرز کلمه رسیده است. برای تعیین موقعیت فعلی گفتار event.charIndex استفاده کنید.
  • 'sentence' : به مرز جمله رسید. برای تعیین موقعیت فعلی گفتار event.charIndex استفاده کنید.
  • 'marker' : یک نشانگر SSML بدست آمد. برای تعیین موقعیت فعلی گفتار event.charIndex استفاده کنید.
  • 'end' : موتور به پایان رسانده است.
  • 'interrupted' : این گفته با تماس دیگری برای speak() یا stop() قطع شد و تمام نشد.
  • 'cancelled' : این گفته در صف قرار گرفت، اما سپس با تماس دیگری برای speak() یا stop() لغو شد و هرگز شروع به صحبت نکرد.
  • 'error' : یک خطای خاص موتور رخ داده است و این گفته قابل بیان نیست. event.errorMessage برای جزئیات بررسی کنید.

چهار نوع رویداد 'end' ، 'interrupted' ، 'cancelled' و 'error' - نهایی هستند. پس از دریافت یکی از آن رویدادها، این گفته دیگر صحبت نخواهد کرد و هیچ رویداد جدیدی از این گفته دریافت نخواهد شد.

برخی از صداها ممکن است از همه انواع رویداد پشتیبانی نکنند و برخی صداها ممکن است اصلا رویدادی را ارسال نکنند. اگر نمی‌خواهید از یک صدا استفاده کنید، مگر اینکه رویدادهای خاصی را ارسال کند، رویدادهای مورد نیاز خود را در عضو requiredEventTypes شی گزینه‌ها ارسال کنید، یا از getVoices() برای انتخاب صدایی که نیازهای شما را برآورده می‌کند استفاده کنید. هر دو در زیر مستند شده اند.

نشانه گذاری SSML

عبارات استفاده شده در این API ممکن است شامل نشانه گذاری با استفاده از زبان نشانه گذاری سنتز گفتار (SSML) باشد. اگر از SSML استفاده می کنید، اولین آرگومان برای speak() باید یک سند SSML کامل با یک سربرگ XML و یک تگ سطح بالای <speak> باشد، نه یک قطعه سند.

به عنوان مثال:

chrome.tts.speak(
  '<?xml version="1.0"?>' +
  '<speak>' +
  '  The <emphasis>second</emphasis> ' +
  '  word of this sentence was emphasized.' +
  '</speak>'
);

همه موتورهای گفتار از همه تگ‌های SSML پشتیبانی نمی‌کنند، و برخی ممکن است اصلاً از SSML پشتیبانی نکنند، اما همه موتورها باید هر SSML را که پشتیبانی نمی‌کنند نادیده بگیرند و همچنان متن اصلی را بیان کنند.

انتخاب صدا

به‌طور پیش‌فرض، Chrome مناسب‌ترین صدایی را برای هر گفتاری که می‌خواهید صحبت کنید، بر اساس زبان انتخاب می‌کند. در اکثر سیستم‌های Windows، Mac OS X و ChromeOS، ترکیب گفتار ارائه شده توسط سیستم عامل باید بتواند هر متنی را حداقل به یک زبان صحبت کند. برخی از کاربران ممکن است صداهای مختلفی را از سیستم عامل خود و موتورهای گفتاری که توسط دیگر برنامه‌های افزودنی Chrome پیاده‌سازی شده‌اند، در دسترس داشته باشند. در این موارد، می‌توانید کد سفارشی را برای انتخاب صدای مناسب پیاده‌سازی کنید یا فهرستی از انتخاب‌ها را به کاربر ارائه دهید.

برای دریافت لیستی از تمام صداها، getVoices() را فراخوانی کنید و تابعی را به آن ارسال کنید که آرایه ای از اشیاء TtsVoice را به عنوان آرگومان دریافت می کند:

chrome.tts.getVoices(
  function(voices) {
    for (var i = 0; i < voices.length; i++) {
      console.log('Voice ' + i + ':');
      console.log('  name: ' + voices[i].voiceName);
      console.log('  lang: ' + voices[i].lang);
      console.log('  extension id: ' + voices[i].extensionId);
      console.log('  event types: ' + voices[i].eventTypes);
    }
  }
);

انواع

EventType

Chrome 54+

Enum

"شروع"

"پایان"

"کلمه"

"جمله"

"نشانگر"

"قطع"

"لغو"

"خطا"

"مکث"

"رزومه"

TtsEvent

رویدادی از موتور TTS برای برقراری ارتباط با وضعیت یک گفته.

خواص

  • charIndex

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

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

  • errorMessage

    رشته اختیاری

    توضیح خطا، اگر نوع رویداد error باشد.

  • طول

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

    Chrome 74+

    طول قسمت بعدی گفته. به عنوان مثال، در یک رویداد word ، این طول کلمه ای است که بعدا گفته می شود. اگر توسط موتور گفتار تنظیم نشود، روی -1 تنظیم می شود.

  • نوع را می توان به محض شروع گفتار start ، word زمانی که به مرز کلمه رسید، sentence زمانی که به مرز جمله رسید، marker زمانی که به عنصر علامت SSML رسید، زمانی که به پایان گفتار رسید end ، زمانی که به پایان رسید interrupted . گفتار قبل از رسیدن به پایان متوقف یا قطع می‌شود، زمانی که قبل از ترکیب شدن از صف حذف می‌شود cancelled ، یا وقتی هر خطای دیگری رخ می‌دهد error می‌کند. هنگام مکث گفتار، اگر یک گفته خاص در وسط مکث شود، یک رویداد pause فعال می‌شود، و اگر یک گفتار گفتار را از سر بگیرد، resume . توجه داشته باشید که اگر گفتار در بین گفته‌ها مکث شود، رویدادهای مکث و ازسرگیری ممکن است فعال نشوند.

TtsOptions

Chrome 77+

گزینه های گفتار برای موتور TTS.

خواص

  • مورد علاقه EventTypes

    رشته[] اختیاری است

    انواع رویداد TTS که شما علاقه مند به گوش دادن به آنها هستید. در صورت عدم وجود، همه انواع رویداد ممکن است ارسال شوند.

  • در صف قرار دادن

    بولی اختیاری

    اگر درست باشد، اگر TTS از قبل در حال انجام است، این گفته را در صف قرار می دهد. اگر نادرست است (پیش‌فرض)، هر گفتار فعلی را قطع می‌کند و صف گفتار را قبل از بیان این گفته جدید پاک می‌کند.

  • شناسه extension

    رشته اختیاری

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

  • جنسیت

    VoiceGender اختیاری است

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

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

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

  • زبان

    رشته اختیاری

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

  • مورد نیازEventTypes

    رشته[] اختیاری است

    انواع رویداد TTS که صدا باید پشتیبانی کند.

  • نام صدا

    رشته اختیاری

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

  • حجم

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

    صدای مکالمه بین 0 و 1 شامل، با 0 کمترین و 1 بالاترین، با پیش‌فرض 1.0.

  • oneEvent

    باطل اختیاری

    این تابع با وقایعی که در فرآیند گفتار اتفاق می افتد نامیده می شود.

    تابع onEvent به شکل زیر است:

    (event: TtsEvent) => {...}

    • رویداد

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

TtsVoice

شرح صدای موجود برای سنتز گفتار.

خواص

  • انواع رویداد

    EventType [] اختیاری است

    همه انواع رویدادهای برگشت به تماس که این صدا قادر به ارسال آنهاست.

  • شناسه extension

    رشته اختیاری

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

  • جنسیت

    VoiceGender اختیاری است

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

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

    جنسیت این صدا

  • زبان

    رشته اختیاری

    زبانی که این صدا از آن پشتیبانی می کند، به شکل language - region . مثال‌ها: «en»، «en-US»، «en-GB»، «zh-CN».

  • از راه دور

    بولی اختیاری

    اگر درست باشد، موتور سنتز یک منبع شبکه راه دور است. ممکن است تاخیر بالاتری داشته باشد و ممکن است هزینه های پهنای باند را متحمل شود.

  • نام صدا

    رشته اختیاری

    نام صدا.

VoiceGender

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

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

Enum

"مرد"

"مونث"

روش ها

getVoices()

قول بده
chrome.tts.getVoices(
  callback?: function,
)

آرایه ای از همه صداهای موجود را دریافت می کند.

پارامترها

  • پاسخ به تماس

    عملکرد اختیاری

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

    (voices: TtsVoice[]) => void

    • صداها

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

برمی گرداند

  • Promise< TtsVoice []>

    Chrome 101+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

isSpeaking()

قول بده
chrome.tts.isSpeaking(
  callback?: function,
)

بررسی می کند که آیا موتور در حال حاضر صحبت می کند. در Mac OS X، هر زمان که موتور گفتار سیستم در حال صحبت باشد، نتیجه درست است، حتی اگر گفتار توسط Chrome آغاز نشده باشد.

پارامترها

  • پاسخ به تماس

    عملکرد اختیاری

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

    (speaking: boolean) => void

    • صحبت کردن

      بولی

      اگر صحبت می کند درست است، در غیر این صورت نادرست.

برمی گرداند

  • وعده<boolean>

    Chrome 101+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

pause()

chrome.tts.pause()

سنتز گفتار را به طور بالقوه در وسط یک گفته متوقف می کند. تماس برای ازسرگیری یا توقف، مکث گفتار را لغو می‌کند.

resume()

chrome.tts.resume()

اگر گفتار متوقف شد، صحبت را از جایی که متوقف کرده بود از سر می‌گیرد.

speak()

قول بده
chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
  callback?: function,
)

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

پارامترها

  • بیان

    رشته

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

  • گزینه ها

    TtsOptions اختیاری است

    گزینه های سخنرانی

  • پاسخ به تماس

    عملکرد اختیاری

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

    () => void

برمی گرداند

  • قول<باطل>

    Chrome 101+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

stop()

chrome.tts.stop()

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

رویدادها

onVoicesChanged

Chrome 124+
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

زمانی فراخوانی می شود که لیست tts.TtsVoice که توسط getVoices بازگردانده می شود تغییر کند.

پارامترها

  • پاسخ به تماس

    تابع

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

    () => void