กระโดดไปยังแผงนำทาง

เปล่งวาจา 8 August 2007 11:15 pm

บันทึกโดย Mr. PeeTai ใน : การสร้างซอฟต์แวร์ , ตรวจย้อนกลับ

พวกเราเคยสังเกตกันมั้ยครับ ว่าพยางค์ที่เป็นไปได้ในภาษาไทยมีจำนวนกี่พยางค์?

พยางค์ = ส่วนของคำที่เปล่งออกมาครั้งหนึ่ง ๆ

เมื่อหลาย ๆ ปีก่อนผมก็เคยคิดจะสืบเสาะค้นหาคำตอบนี้นะ ก็เลยสร้างซอฟต์แวร์ขึ้นมาตัวนึง โดยเทียบกับโมเดลของพยางค์ที่เป็นไปได้ในภาษาไทยเรา ดังรูปข้างล่าง

พยางค์ที่เป็นไปได้ในภาษาไทย

ซอฟต์แวร์ตัวดังกล่าวผมทิ้งไว้ที่ไหนก็ไม่รู้ แต่จำได้ลาง ๆ ว่าผลลัพธ์ที่ได้ออกมา ทำให้ผมรู้ว่าพยางค์ที่เป็นไปได้ในภาษาไทยมีอยู่ประมาณ 20,000+ พยางค์ เยอะไม่ใช่น้อยเลยนะเนี่ย เรียกว่าสะกดกันครบทุกแม่ ผันกันครบทุกวรรณยุกต์ และก็ไล่กันทุกพยัญชนะที่ออกเสียงได้เลยล่ะ

ถ้าใครเคยทำระบบ Speech Synthesis จะทราบดีว่า การที่เราจะทำให้คอมพิวเตอร์พูดภาษาคนได้เหมือนในภาพยนตร์ไฮเทคนั้น เราจะต้องนำหน่วยเสียงพูดมาต่อกัน ซึ่งโดยหลักการแล้ว ยิ่งใช้หน่วยเสียงน้อย ๆ แต่นำมาต่อ ๆ กันเป็นพยางค์ได้หลากหลายเท่าไหร่ ก็ยิ่งถือว่าระบบมีความซับซ้อนสูงมากเท่านั้น

ยกตัวอย่างเช่น ถ้าอยากให้คอมพิวเตอร์เปล่งเสียง “กาน” ก็เอาหน่วยเสียง “กา” กับ “อาน” มาต่อกัน แล้วใช้สมการทางคณิตศาสตร์ ช่วยลดสัญญาณรบกวน บริเวณจุดต่อของหน่วยเสียงพูดทั้งสองหน่วยออกไป เวลาเปล่งเสียงออกมาแล้วจะได้เนียน ๆ หน่อย

ซึ่งที่เขาจำเป็นต้องทำแบบนี้ก็เพราะว่า ถ้าให้อัดเสียงพูดให้ครบทุกพยางค์ ก็จำเป็นต้องใช้เวลานานมาก แล้วก็ต้องเสียพื้นที่ในการเก็บเสียงพยางค์ไปมากเลยล่ะ เพราะเสียงเหล่านี้จำเป็นต้องเก็บไว้ในรูปของไฟล์นามสกุล WAV เพื่อจะได้เอาไปใช้ทำอย่างอื่นต่อไป

ผมเองไม่ค่อยชอบเสียงพูดของคอมพิวเตอร์ ที่ได้จากการต่อหน่วยเสียงด้วยวิธีแบบนี้เท่าไหร่ เพราะฟังเสียงแล้วมันกระด้างหูซะเหลือเกิน!!!

แล้วมันจะดีกว่ามั้ยน้อ ถ้าเราสามารถบันทึกเสียงพยางค์ที่เป็นไปได้ของภาษาไทยทั้งหมดเอาไว้??? แล้วเวลาจะใช้ก็ให้ซอฟต์แวร์คอมพิวเตอร์นำพยางค์เหล่านั้นมาต่อกัน เสียงพูดที่ได้น่าจะเหมือนผู้เหมือนคนมากกว่าการต่อหน่วยเสียงนะผมว่า

เพราะเดี๋ยวนี้ข้อจำกัดของพื้นที่เก็บข้อมูลมันก็ไม่มีแล้วนี่นา จะติดก็แต่ข้อจำกัดของการออกเสียงพยางค์ทั้ง 20,000+ พยางค์เท่านั้นเอง ว่าควรจะทำยังไงดี?

ถ้าตั้งโจทย์ไว้ว่าเราจะให้คน ๆ เีดียวเปล่งเสียงพยางค์ทั้ง 20,000+ พยางค์ อือม คิดเป็น 20,000 พยางค์ดีกว่า ถ้วน ๆ ดี แล้วให้คน ๆ นั้นเปล่งเสียงพยางค์วันล่ะ 100 พยางค์ ก็แสดงว่าคน ๆ นี้ต้องน่าสงสารมากเลยนะ เพราะต้องเปล่งเสียงพยางค์เป็นเวลาถึง 200 วัน กว่าจะครบทุกพยางค์ที่เป็นไปได้ในภาษาไทยได้

หรือว่าเราจะลดความน่าสงสารของคน ๆ นี้ โดยการหาคนอีก 4 คนมาช่วยแบ่งพยางค์ไปพูดแทน งั้นก็แสดงว่าเรามีคน 5 คนมาช่วยกันเปล่งเสียงพยางค์ ซึ่งถ้าเป็นแบบนี้ก็จะใช้เวลาเพียงแค่ 40 วันเท่านั้น งานก็จะแล้วเสร็จเรียบร้อย

แต่ประเด็นก็คือคน 5 คนเสียงก็แตกต่างกัน ทีนี้เวลาจะเอาพยางค์เหล่านั้นมาต่อกันเพื่อให้คอมพิวเตอร์พูดเป็นประโยคออกมา คงจะฟังแล้วทุเรศพิลึกเลยแฮะ!!! สงสัยต้องเอาเสียงพยางค์ทั้งหมดมาเข้าสมการคัดกรองอีกทีนึง เพื่อให้ได้เสียงโทนเดียวกันออกมา :-P

โดยสรุปแล้วการทำให้คอมพิวเตอร์พูดได้ มันก็คงจะน่าสนุกไม่น้อยเหมือนกันเน้อะ :-P

Technorati Tags: , , , , ,

ความคิดเห็น»

1. Patsonic - 9 August 2007

จะเรียกว่า น่าสนุกก็ได้ เรียกว่า น่าเบื่อก็ได้อีกนั่นแหละ

2. BigNose - 9 August 2007

หนักอีกแล้วสำหรับผม อิอิ

ปล. ผมเปลี่ยน blog แล้วนะครับ รบกวนเปลี่ยน link ของ poorblogger ด้วยครับ ขอบคุณครับ

3. BigNose - 9 August 2007

ขอโทษครับ ลืมแจ้ง blog –> cyberremarks.com

ปล.อยากได้ plugin ป้องกัน spam จัง

4. iPAtS - 9 August 2007

ปัญหาอีกอย่างคือ.. ทำไงให้ต่อแล้วเนียนล่ะซิ
ขนาดพวก IVR ปัจจุบันที่แค่เป็นตัวเลขมันยังไม่เนียนเอาซะเล้ยย

5. memtest - 9 August 2007

คงบอกได้ไม่แน่นอนน่ะครับว่ามนุษย์เราเกิดขึ้นมาได้อย่างไร
และคนเราเริ่มพูดกันเป็นภาษาที่รู้เรื่องกันเมื่อไหร่ สิ่งเหล่านั้นอาจมาจากพระเจ้าประทานให้เราหรือเราใช้เวลาวิวัฒนาการกันมาหลายหมื่นหลายพันปี
ทำให้งานนี้เป็นงานที่ยากไม่น้อย

6. Mr. PeeTai - 9 August 2007

คนใช้คงสนุกครับคุณ Patsonic แต่คนทำคงเบื่อน่าดู T-T

ผมเพิ่มให้แล้วนะคุณ BigNose หายจ้อยไปนานเลยนะเนี่ย โฮ่ ๆ :-P

อือ พูดถึง IVR แล้วนึกขึ้นได้อย่างนึงล่ะคุณ iPAtS เพราะผมเองก็เคยทำ Contact Center มา ไว้ว่าง ๆ จะเล่าให้อ่านกัน แต่ที่นึกขึ้นได้ก็คือ โปรแกรม IVR ส่วนใหญ่ ไม่ได้มีกลไกการเชื่อมพยางค์เลย กลไกตรงนั้นมันไม่มี มันเล่นเอาเสียงมาพูดต่อ ๆ กันเลย แถมยังเป็นเสียงแบบ ADPCM 8 bit อีก แย่เน้อะ ไม่ละเอียดเอาซะเล้ย

โอ้ ถึงพระเจ้าเลยเหรอคุณ memtest งี้ผมยอมแพ้ครับ T-T

7. Tee - 10 August 2007

รรรรร อ่านว่า ระ รัน รอน ทำ algorithm พังได้ทันที :P

8. Oakyman - 14 August 2007

พูดคนละวัน เสียงก็ไม่เหมือนกันแล้วครับเนี่ย
เอาแค่อัดเสียง 2 ชั่วโมง
สิบนาทีแรก กับสิบนาทีสุดท้าย
volume คงต่างกันเห็นได้ชัด

ตอนแรกอ่านเป็นเปล่ง “จาวา”

9. chakrit - 17 August 2007

โอ๊ะ น่าสนใจ


*
เพื่อพิสูจน์ว่าคุณเป็นมนุษย์ (ไม่ใช่หุ่นยนต์) ดังนั้น กรุณาใส่รหัสป้องกันซึ่งแสดงอยู่ด้านล่างด้วยครับ
Anti-Spam Image