สรุป Speech-to-Text และ Text-to-Speech ภาษาไทย

diewland.eth
MFEC
Published in
3 min readApr 29, 2019

การแปลงไปมาระหว่าง “เสียง” และ “ข้อความ” มีด้วยกัน 2 ขาดังนี้ครับ

  1. แปลงเสียงเป็นข้อความ แต่ละเทคนิคอาจใช้คำที่แตกต่างกันออกไปเช่น Speech-to-Text (STT), Speech Recognition หรือ Transcribe
  2. แปลงข้อความเป็นเสียง แต่ละเทคนิคอาจใช้คำที่แตกต่างกันออกไปเช่น Text-to-Speech (TTS)หรือ Speech Synthesis

ในบทความนี้เราจะคัดมาเฉพาะตัวที่รองรับภาษาไทยเท่านั้น พร้อมแล้วก็ลุยกันเลยครับ 🔥🔥

Speech to Text (STT)

Speech to Text ทุกตัวจำเป็นต้องใช้ internet ในการทำงานนะครับ

Web Speech API

เราสามารถทำ Speech to Text ใน web browser ได้เลย เท่าที่ลองเล่นจะเวิร์คเฉพาะแค่บน Chrome เจ้าเดียวอยู่ โดยใช้ได้ทั้ง Chrome Desktop และ Chrome for Android แต่ Chrome for Android จะมี bug คืน result มาซ้ำๆกันอยู่ ต้องเขียน handle กันเอาเอง ซึ่งถ้าใครจะใช้งานใน Android เป็นหลักแนะนำเป็นตัวถัดไป ( Android Voice Typing ) จะเนียนกว่า แต่สำหรับ version Chrome Desktop นั้นต้องบอกว่าเนียนไม่แพ้ Google Cloud Speech-to-Text เลยทีเดียว

Android Voice Typing

ตัวนี้ติดมากับ keyboard ของ Android เลย วิธีการใช้งานคือกดรูปไมโครโฟนแล้วพูดได้เลย หลังจากพูดจบทิ้งระยะซักครู่ ระบบจะทำการแปลงข้อความให้เราอัตโนมัติ ซึ่ง Google ได้เปิดช่องให้เราสามารถใช้ Voice Typing กับแอปของเราได้ง่ายๆโดยทำการเรียก intent RecognizerIntent.ACTION_RECOGNIZE_SPEECH แล้วไปดักรอผลลัพท์ที่ onActivityResult ได้เลย

Google Cloud Speech-to-Text

ผู้ให้บริการที่เป็น Cloud Service มีอยู่ 2 เจ้าคือ Google และ Microsoft ทั้ง 2 เจ้ารองรับ input ทั้งจากไมโครโฟนและแบบไฟล์เสียง ราคาต่างกันเล็กน้อย ( เดี๋ยวจะมีเทียบราคาด้านล่างอีกทีนึง ) ส่วนตัวไหนถอดความแม่นกว่ากันนั้น ต้องทดลองเล่นกันเองนะครับ

จะเห็นว่าเอาจริงๆแล้วลำพัง Speech-to-Text แบบฟรีก็ใช้งานได้โอเคแล้ว ทำไมเรายังจำเป็นต้องใช้บริการแบบเสียตังอีก ? ขอตอบเป็นข้อๆดังนี้

  1. Speech-to-Text แบบฟรีสามารถรับ input ได้จากไมโครโฟนเท่านั้น ไม่สามารถรับ input เป็นไฟล์เสียงได้ ดังนั้นถ้าเป็นกรณีถอดความจากการประชุมก็หมดสิทธิ์ครับ ในขณะที่บริการแบบเสียเงินรองรับทั้ง input ที่เป็น microphone และไฟล์เสียง
  2. อย่างที่รู้กันว่า Speech-to-Text จำเป็นต้องใช้ internet ในการใช้งาน เพราะมันจะต้องส่งข้อมูลเสียงของเราไปที่ server ที่ใดซักที่นึงเพื่อถอดความ ประเด็นคือบริการฟรีเค้าสามารถเอาข้อมูลเสียงของเราไปทำอะไรต่อก็ได้ โดยไม่ต้องแจ้งให้เราทราบ ถ้าเราต้องการให้ข้อมูลเสียงของเราเป็นความลับ จำเป็นต้องใช้บริการแบบเสียเงินครับ
  3. บริการแบบฟรีจำกัดของอุปกรณ์ที่ใช้งาน Web Speech API เวิร์คแค่บน Chrome ส่วน Android Voice Typing เวิร์คบน Android อย่างเดียว ส่วนบริการแบบเสียงเงินมีลักษณะเป็น service เราสามารถเรียกผ่านอุปกรณ์ใดๆก็ได้ขอแค่มี internet และเงินครับ

เมื่อทราบข้อดีของการใช้ Speech-to-Text แบบเสียเงินแล้ว มาดูราคากันซักหน่อยครับ 💸💸

ราคาของ Google คิดจาก default package ที่ $0.006 / 15 วินาที

จะเห็นว่า Microsoft ราคาถูกกว่าเล็กน้อย ส่วน Google จริงๆแล้วมี 2 แพ็คเกจ ตัว default $0.006 / 15 วิ เป็นแบบไม่นำข้อมูลไปทำอย่างอื่นต่อ แต่ถ้าเราไม่ซีเรียสเรื่องข้อมูล คือยอมให้ Google เอาข้อมูลเราไปทำอย่างอื่นต่อได้ เราสามารถเลือกเป็นแพ็คเกจ $0.004 / 15 วิ ซึ่งราคาถูกว่าได้

Text to Speech (TTS)

Local Machine TTS

คือการใช้ TTS Engine ของเครื่องในการสร้างเสียงขึ้นมา ข้อดีสุดๆคือใช้งานได้ฟรี และทำงาน offline ได้ แต่เนื่องจากมันคือ TTS ของเครื่องดังนั้นในแต่ละเครื่องก็จะได้เสียงที่แตกต่างกันออกไป เช่น Windows 10 จะเป็นเสียงผู้ชาย ( Pattara ) ส่วน Android จะเป็นเสียงผู้หญิงเย็นๆ เหมือนกับใน Google Translate

Google Translate TTS

ใครเคยเล่น Google Translate จะเห็นว่าเราสามารถกดฟังเสียงจากประโยคที่เราพิมพ์ หรือประโยคที่เราแปลได้ ( ภาษาไทยจะเป็นผู้หญิงเสียงเย็นๆ ) API ตรงนี้เราสามารถใช้งานได้ฟรี แต่ เนื่องจากว่า API ดังกล่าวไม่ใช่ Official API ดังนั้นมีโอกาสที่ API ตัวนี้จะหายไปได้ตลอดเวลา แต่ (อีกครั้ง) API ตัวนี้ออนไลน์มาตั้งแต่ปี 2012 แล้วจนถึงปัจจุบันก็ยังใช้งานได้อยู่ ใครอยากใช้ API ตัวนี้ก็ต้องบวกลบความเสี่ยงกันเอาเองนะครับ 😈

Responsive Voice

เป็นบริการเดียวที่มีเสียงภาษาไทยให้เลือกทั้งชาย และหญิง แถมราคาเป็นมิตรสุดๆ ลองกดเล่นเสียงดูก่อนได้จากเว็บด้านล่างได้เลยครับ

Azure Text-to-Speech

Azure ใช้เสียงของนาย Pattara มาปล่อยเป็น cloud service ด้วย แต่เนื่องจากมันคือ Engine เดียวกับตัว Offline TTS ใน Windows 10 แบบเป๊ะๆ ทำให้ความน่าสนใจลดลงเยอะเลย ( จะเสียเงินทำไมเมื่อผลลัพท์เท่ากับของฟรี :/ )

TTS สู้กัน 2 เจ้า Azure กับ ResponsiveVoice ส่วน Google หลุดไป

จุดที่น่าสนใจของการคิดราคาของ TTS ของ Microsoft คือคิดเป็นรายตัวอักษร ตรงนี้ต้องอ่านรายละเอียดกันให้ดีๆเพราะ 1 คำของแต่ละภาษาย่อมแตกต่างกันออกไป บางภาษา 1 ตัวอักษรแทน 1 คำ ( จีน/คันจิของญี่ปุ่น ) แต่บางภาษา 1 คำประกอบด้วยหลายๆ ตัวอักษร ( เช่นภาษาไทย เป็นต้น ) ส่วน ResponsiveVoice มีการคิดแพ็คเกจแบบป๋ามากคือเหมาไปเลย แถมถ้าเหมารายปี ได้รับส่วนลดอีกตังหาก

จบลงแล้วสำหรับสรุป STT/TTS ภาษาไทย เป็นบทความที่ยาวที่สุดตั้งแต่เคยเขียนมาเลยครับ ขาดตกบกพร่องประการใดฝากแปะไว้ในคอมเม้นนะครับ เดี๋ยวปรับแก้ให้ แล้วเจอกันใหม่บทความหน้า สวัสดีครับ

References

Writer By Mr. Diewland — MFEC PEPLE

--

--