Web speech API สังเคราะห์เสียงด้วยเว็บบราวเซอร์

Bhuridech Sudsee
odds.team
Published in
1 min readJul 20, 2018

ต้นสัปดาห์ได้มีโอกาสไปวิ่งกับทีม ODDS หลังจากวิ่งได้มีโอกาสคุยกับลูกพี่กุลเรื่องการทำเว็บเพื่อให้เข้าถึงผู้พิการทางสายตา และผู้ที่สะดวกฟังเสียงมากกว่าการใช้ตาอ่านหนังสือ (ซึ่งตัวผมก็ชอบฟังเสียงมากกว่า เพราะเดี๋ยวนี้ตาล้าง่าย) หลังจากที่คุยผมกลับมาลองคิดดูแล้วก็นึกขึ้นได้ว่าตอนเรียนเคยใช้ Web Speech API เพื่อวิเคราะห์คำและสังเคราะห์เสียงพูดออกมานี่หว่า

ผมให้ลิงค์ Soucecode มาใน Ref.[1] แล้วครับ

วันนี้อยากอธิบายถึงโค้ดสักเล็กน้อย

var msg = new SpeechSynthesisUtterance();
var voices = window.speechSynthesis.getVoices();
msg.voice = voices[46]; // รูปแบบของเสียงซึ่งบางรูปแบบอาจไม่มีในภาษาที่เราต้องการสะกดมันก็จะพูดไม่ได้
msg.voiceURI = 'native'; //ตัวนี้บอกว่ามันจะใช้ตัวสังเคาะห์ภายใน (แปลว่าอะไรไม่รู้แต่มันจะสามารถใช้ได้โดยไม่มีการเชื่อมต่อเน็ตก็ตาม)
msg.volume = 1; // 0 ถึง1 เป็นระดับความดัง
msg.rate = 5; // 0.1 ถึง 10 อัตราเร็วของการพูด
msg.pitch = 2; //0 ถึง 2 // ลักษณะระดับเสียงสูงต่ำ
msg.text = 'สวัสดีครับผม'; // ข้อความที่จะให้พูด
msg.lang = 'th-TH'; // ภาษา
speechSynthesis.speak(msg); // สั่งให้พูด

ผมรู้สึกว่าด้านบนฟังแล้วไม่ลื่นหูเท่าไหร่เลยลองเอาโค้ดที่อยู่ในเว็บ Spec ของ API ไปแลงเปลี่ยนเป็นภาษาไทยแล้วลองรันดูพบว่าถ้าเราแบ่งวรรคตอนให้ถูกแล้วหล่ะก็แทบแยกไม่ออกเลยว่าอันไหนเป็นเสียงสังเคราะห์ (ลองเอาโค้ดไปรันดูใน Console ของ Web Browser ได้เลยครับ)

var u = new SpeechSynthesisUtterance();
u.text = 'สวัสดีครับ วันนี้ผมมีเรื่องจะมาเล่าให้ท่านฟังครับ';
u.lang = 'th-TH';
u.rate = 1.2;
speechSynthesis.speak(u);

ส่วนเรื่องตัววิเคราะห์คำจากเสียงรู้สึกว่ายังต้องต่อเน็ตถึงจะใช้งานได้อยู่ ในกรณีนี้ผมจะขอแค่ลองเล่นในเว็บ [2] ให้ดูเฉยๆ เพราะรายละเอียดค่อนข้างมาก แต่ให้รู้ว่ามันทำได้ค่อนข้างโอเคเลยทีเดียวไปลองดูกันได้ครับ (เวลาในคลิปเป็นเวลาจริงโดยการพูดประโยคยาวครั้งเดียว)

ยินดีต้อนรับเข้าสู่ยุค Web 4.0 ครับ

References :
[1] https://github.com/Aorjoa/webplatform-samples/blob/master/webspeechdemo/webspeechdemo.html
[2] https://www.google.com/intl/en/chrome/demos/speech.html

--

--