تطبيقات الويب التي تتحدّث - مقدمة عن واجهة برمجة تطبيقات اصطناع الكلام

تضيف Web Speech API التعرّف على الكلام (تحويل الكلام إلى نص) وتركيب الكلام (تحويل النص إلى كلام) إلى JavaScript. تتناول المشاركة هذا الموضوع بشكل موجز، لأنّ واجهة برمجة التطبيقات تم طرحها مؤخرًا في الإصدار 33 من Chrome (على الأجهزة الجوّالة وأجهزة الكمبيوتر المكتبي). إذا كنت مهتمًا بميزة التعرّف على الكلام، يمكنك الاطّلاع على مقالة رائعة كتبها غلين شيرز منذ فترة عن ميزة التعرّف على الكلام بعنوان تطبيقات الويب المستندة إلى الصوت: مقدّمة عن Web Speech API.

الأساسيات

إنّ الاستخدام الأساسي لواجهة برمجة التطبيقات Synthesis 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);

ضبط صوت

تتيح لك واجهة برمجة التطبيقات أيضًا الحصول على قائمة بالأصوات التي يتيحها المحرّك:

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 بعنوان "More Awesome Web: features you've always wanted" (www.moreawesomeweb.com)، عرضت عرضًا توضيحيًا يشبه Google Now/Siri لاستخدام خدمة SpeechRecognition في Web Speech API مع Google Translate API لترجمة الإدخال من الميكروفون تلقائيًا إلى لغة أخرى:

الإصدار التجريبي: http://www.moreawesomeweb.com/demos/speech_translate.html

وقد استخدم التطبيق واجهة برمجة تطبيقات غير موثقة (وغير رسمية) لتنفيذ ميزة إنشاء الكلام. لدينا الآن واجهة برمجة التطبيقات Web Speech API الكاملة لقراءة الترجمة. لقد عدّلت الإصدار التجريبي لاستخدام واجهة برمجة التطبيقات Synthesis API.

توافق المتصفّح

يتوافق الإصدار 33 من Chrome بالكامل مع 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!
}