Thai TTS สำเนียงฝรั่ง

o aom
NECTEC
Published in
2 min readJan 20, 2020

ทดสอบการสอนคอมพิวเตอร์ให้พูดภาษาไทยสำเนียงฝรั่ง ด้วยเทคนิค End-to-end TTS โดยที่ผ่านมาเคยทดสอบระบบ end-to-end มาบ้างแต่ไม่ค่อยประสบความสำเร็จ คือเสียงที่ได้จะรู้สึกว่ามันไม่ค่อยดี และต้องใช้เครื่องเทรนที่ต้องมีทรัพยากรสูง รวมถึงต้องใช้เวลาเทรนนาน ครั้งนี้ประจวบเหมาะมีเครื่องเทรนแรง ๆ (ThaiSC) และคิดว่าน่าจะต้องรื้อฟื้น deep learning ซักหน่อยเนื่องจากห่างหายจากการเทรนไปนานเกินไป

End-to-end Text-to-speech: ปกติการสร้างเสียงสังเคราะห์จะประกอบไปด้วยขั้นตอนต่าง ๆ มากมายเช่น แปลงข้อความที่ต้องการสังเคราะห์เป็นคำอ่าน, การหาจุดเพื่อพักหายใจ, การตัดคำ, การตัดประโยค, การหาท่วงทำนอง, การสร้างเสียงสังเคราะห์ ฯลฯ ทำให้ค่อนข้างยากสำหรับคนที่สนใจทำ TTS เพราะต้องอาศัยความรู้รวมถึงข้อมูล และโมดูลต่าง ๆ มากมายถึงจะสร้าง TTS ขึ้นมาได้ แต่เทคนิคที่ใช้ในครั้งนี้จะใช้เทคนิคที่เรียกว่า end-to-end TTS คือไม่ต้องสนใจโมดูลต่าง ๆ ที่ว่ามาเลย สามารถสร้างเสียงได้จากข้อความตรง ๆ เลย คือมีแค่เสียง และข้อความก็สร้างได้แล้ว ซึ่งเทคนิค+โค๊ด ที่ใช้ทดสอบครั้งนี้นำมาจาก ( https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechSynthesis/Tacotron2)

Tacotron2+Wavegrow: คร่าว ๆ 2 ตัวนี้เป็นเทคนิคที่ใช้ในการสร้างเสียงสังเคราะห์โดยตัวแรก Tacotron2 จะทำการแปลงข้อความใด ๆ เป็นสเปคโตรแกรม และต่อจากนั้นก็จะใช้ Wavegrow แปลงสเปคโตรแกรมที่ได้เป็นเสียง

Data: LJ Speech dataset (ภาษาอังกฤษ), default script จาก NVIDIA

Experiments:

เบื้องต้นก็คือจะทำการสร้าง tacotron และ wavegrow models ตามดีฟอล์ตสคริปต์ ซึ่งเมื่อเทรนเสร็จเราก็จะได้ระบบที่สามารถพูดคำใด ๆ ก็ได้สำหรับภาษาอังกฤษ

ต่อจากนั้นก็จะทำให้มันสามารถพูดภาษาไทยได้ โดยไอเดียก็คือแปลงข้อความภาษาไทยใด ๆ ให้เป็นคาราโอเกะ (ใช้ Thai romanisation ก็ได้ แต่คิดว่าการแปลงให้ตรงกับที่ราชบัณฑิตกำหนด มันอ่านไม่ค่อยเป็นภาษาไทย 55+) แล้วส่งเป็นอินพุทให้กับ tacotron+wavegrow โมเดล ซึ่งผลลัพธ์ก็จะเป็นเหมือนกับฟังฝรั่งพยายามพูดภาษาไทย

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

“เจมี คาร์ราเกอร์ ยกย่องว่าสโมสรลิเวอร์พูลกลายเป็นทีมที่ดีที่สุดของโลกในเวลานี้ไปแล้ว”

“jamie carrager yokeyong wa samosorn liverpool klai pen team teedeeteesoot khong lok nai wela nee pai laew”

Todo: อีกเยอะเลย 55+ หลัก ๆ ก็น่าจะทดสอบเปลี่ยนเสียง หรือสำเนียงใด ๆ ตามที่ต้องการ

--

--