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

إريك بيدلمان

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

الأساسيات

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

العرض التوضيحي: http://www.moreawesomeweb.com/demos/speech_translate.html

لكن للأسف، تم استخدام واجهة برمجة تطبيقات غير موثَّقة (وغير رسمية) لاصطناع الكلام. لدينا الآن واجهة برمجة تطبيقات Web Speech الكاملة التي تتيح لك سرد الترجمة. لقد عدّلت العرض التوضيحي لاستخدام واجهة برمجة التطبيقات التركيبية.

دعم المتصفح

يدعم Chrome 33 دعمًا كاملاً لواجهة برمجة تطبيقات Web Speech، في حين أن المتصفح 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!
}