Statistics Statistics
14677
Online User Online1
Today Today8
Yesterday Yesterday6
ThisMonth This Month129
LastMonth Last Month170
ThisYear This Year826
LastYear Last Year2,522

Text to Speech ตอนที่ 3 

อ่านข้อความเสียงภาษาไทย อังกฤษ และญี่ปุ่น

 

ในตอนนี้จะยกตัวอย่างการเขียนโปรแกรมเพื่อการอ่านสังเคราะห์เสียงเป็น ภาษาไทย อังกฤษ และญี่ปุ่น

ออกแบบ UI

เริ่มต้นด้วยการสร้างอิลิเมนต์ Button และ TextBox ดังโค้ด XAML ด้านล่าง

 

โดยที่ ปุ่มแรก เป็นปุ่ม ภาษาอังกฤษ ตัวแปรคือ btnEng ปุ่มที่สองเป็นปุ่ม ภาษาไทย ตัวแปรคือ btnThai และปุ่มที่สาม เป็นภาษาญี่ปุ่น ตัวแปรคือ btnJapanese และมี TextBox ตัวแปรคือ txtBx ไว้รอรับค่าที่ผู้ใช้กรอกเข้ามา

การโปรแกรมด้วย ภาษา C#

ให้เพิ่มการประกาศตัวแปร synth ดังบรรทัดที่ 59 และเพิ่มเมทอด languageRequestHandler() เพื่อค้นหาเสียงตามรหัสภาษาที่ต้องการ (ที่ถูกส่งผ่านมาทางตัวแปร request) ดังข้างล่างในไฟล์ MainPage.xaml.cs

 

การทำงานของเมทอด languageRequestHandler() จะทำการค้นหาเสียงภาษาตามรหัสจากค่าเสียงทั้งหมด และตามอัลกอริธึมเสียงที่ค้นต้องเป็นเสียงผู้ชาย(เนื่องจากภาษาไทยไม่มีเสียงผู้หญิง) ท่านสามารถปรับอัลกอลิธึมเปลี่ยนเป็น Female เพื่อเป็นเสียงผู้หญิงได้ ในกรณีที่ต้องการทดลองเป็นภาษาอื่นๆ

สร้างเมทอด speech() และเขียนโค้ดดังภาพด้านล่าง

 

การทำงานของเมทอด speech() จะมีการทำงานเหมือนตอนที่ 2

สร้างการจัดการอีเวนต์ Click ในแต่ละปุ่ม ดังบรรทัดที่ 33-35 ด้านล่าง (ในโปรแกรมตัวอย่างสร้างการจัดการอีเวนต์ไว้ในคอนสตรัคเตอร์)

และในแต่ละเมทอดของการจัดการอีเวนต์ Click มีการใช้รหัสดังนี้

ปุ่มภาษาไทย ผ่านค่าพารามิเตอร์รหัสเป็น th-TH (ดังบรรทัดที่ 40)

ปุ่มภาษาญี่ปุ่น ผ่านค่าพารามิเตอร์รหัสเป็น ja-JP (ดังบรรทัดที่ 46)

ปุ่มภาษาอังกฤษ ผ่านค่าพารามิเตอร์รหัสเป็น en-US (ดังบรรทัดที่ 52)

ดังโค้ดที่เขียนไว้ด้านบน

การทำงานเมื่อผู้ใช้กดปุ่มภาษาไทย หรือญี่ปุ่น หรืออังกฤษ ก็จะมีการทำงานตามเมทอดที่ผูกไว้กับอีเวนต์ Click เช่น เมื่อกดปุ่มไทย โปรแกรมจะมาทำงานที่บรรทัดที่ 40 ด้วยการเรียกเมทอด languageRequestHandler() และผ่านค่า th-TH ไปที่เมทอดนี้ ซึ่งเมทอดนี้ก็จะค้นหาการวิเคราะห์เสียงตามรหัสที่ได้มา และเก็บค่าเสียงไว้ที่ตัวแปร synth

 

จากนั้นก็กลับมาทำงานที่บรรทัดที่ 41 เพื่อเรียกเมทอด speech() และผ่านค่าข้อความใน TextBox คือตัวแปร txtBx.Text ไปที่เมทอด speech() เพื่อสังเคราะห์เสียงพูด และพูดออกเสียงเป็นภาษาไทยตามข้อความใน TextBox นั่นเอง

 

หมายเหตุ การจะออกเสียงภาษาใดๆ ได้ ผู้ใช้จะต้องเพิ่มการสะกดเสียงภาษาที่เราต้องการตามขั้นตอนที่ให้ไว้ในตอนที่ 1 เสียก่อน

 

เรียบเรียงมาจาก

https://docs.microsoft.com/en-us/uwp/api/windows.media.speechsynthesis.speechsynthesizer.allvoices?view=winrt-19041&fbclid=IwAR0EK3K3g20pAqNYG_HJH5AVaUIcRykn4Qn91raT5NlMbj3t81gZcND1Z-U

https://docs.microsoft.com/en-us/uwp/api/windows.media.speechsynthesis.voiceinformation?view=winrt-19041&fbclid=IwAR06tK8lfPnde0kZemRRKzms9MGmTJjLZByJoYAtdeL9vL_Dsg5zkpq-9Tk

https://stackoverflow.com/questions/54998980/how-can-i-set-and-send-a-language-on-a-device-with-speechsynthezier-windows-me?fbclid=IwAR1_EEztfP8kyS9TiObXPS9XIB80oNoEtkMVRbSiKhVWZw6pcCIbx3YjlEA