برنامه های وب که صحبت می کنند - مقدمه ای بر Speech Synthesis API

Web Speech API تشخیص صدا (گفتار به متن) و ترکیب گفتار (متن به گفتار) را به جاوا اسکریپت اضافه می کند. این پست به طور خلاصه مورد دوم را پوشش می دهد، زیرا API اخیراً در کروم 33 (موبایل و دسکتاپ) قرار گرفته است. اگر به تشخیص گفتار علاقه دارید، Glen Shires مدتی قبل در مورد ویژگی تشخیص صدا، " Voice Driven Web Apps: Introduction to the Web Speech API " اطلاعات خوبی داشت.

مبانی

اساسی ترین استفاده از API سنتز این است که speechSynthesis.speak() و بیان را منتقل کند:

var msg = new SpeechSynthesisUtterance('Hello World');
window.speechSynthesis.speak(msg);

با این حال، شما همچنین می توانید پارامترها را تغییر دهید تا بر میزان صدا، سرعت گفتار، زیر و بم، صدا و زبان تأثیر بگذارد:

var msg = new SpeechSynthesisUtterance();
var voices = window.speechSynthesis.getVoices();
msg.voice = voices[10]; // Note: some voices don't support altering params
msg.voiceURI = 'native';
msg.volume = 1; // 0 to 1
msg.rate = 1; // 0.1 to 10
msg.pitch = 2; //0 to 2
msg.text = 'Hello World';
msg.lang = 'en-US';

msg.onend = function(e) {
    console.log('Finished in ' + event.elapsedTime + ' seconds.');
};

speechSynthesis.speak(msg);

تنظیم صدا

API همچنین به شما امکان می دهد لیستی از صدایی که موتور پشتیبانی می کند را دریافت کنید:

speechSynthesis.getVoices().forEach(function(voice) {
    console.log(voice.name, voice.default ? voice.default :'');
});

سپس صدای دیگری را با تنظیم .voice روی شیء بیانی تنظیم کنید:

var msg = new SpeechSynthesisUtterance('I see dead people!');
msg.voice = speechSynthesis.getVoices().filter(function(voice) { return voice.name == 'Whisper'; })[0];
speechSynthesis.speak(msg);

نسخه ی نمایشی

در سخنرانی خود در Google I/O 2013، " وب بسیار جذاب تر: ویژگی هایی که همیشه می خواستید " ( www.moreawesomeweb.com )، نمایشی شبیه Google Now/Siri از استفاده از سرویس SpeechRecognition Web Speech API با Google را نشان دادم. API را برای ترجمه خودکار ورودی میکروفون به زبان دیگر ترجمه کنید:

نسخه آزمایشی: http://www.moreawesomeweb.com/demos/speech_translate.html

متأسفانه، از یک API غیرمستند (و غیر رسمی) برای انجام سنتز گفتار استفاده کرد. خوب اکنون ما API کامل Web Speech را برای بازگو کردن ترجمه داریم! من نسخه ی نمایشی را برای استفاده از synthesis API به روز کرده ام.

پشتیبانی مرورگر

Chrome 33 از Web Speech API پشتیبانی کامل دارد، در حالی که Safari برای iOS7 پشتیبانی جزئی دارد.

تشخیص ویژگی

از آنجایی که مرورگرها ممکن است هر بخش از Web Speech API را به طور جداگانه پشتیبانی کنند (مثلاً در مورد Chromium)، ممکن است بخواهید هر ویژگی را جداگانه شناسایی کنید:

if ('speechSynthesis' in window) {
    // Synthesis support. Make your web apps talk!
}

if ('SpeechRecognition' in window) {
    // Speech recognition support. Talk to your apps!
}