การรู้จำอารมณ์เสียงพูดด้วย ThaiserDataset

Pongsakon Kaewjaidee
4 min readJun 24, 2021

--

Speech emotion recognition
รูปที่ 1 Speech emotion recognition

THAISER-DATASET

ประกอบไปด้วยเสียงพูดภาษาไทยที่สื่ออารมณ์ทั้งหมด 5 อารมณ์ ได้แก่ โกรธ เศร้า สุข หงุดหงิด ปกติ โดยนักแสดง 200 คน (ชาย 87 และหญิง 113) จำนวน 41 ชม. 36 นาที (27,854 ประโยค) พัฒนาโดยสถาบันวิจัยปัญญาประดิษฐ์ประเทศไทย (AIResearch) ร่วมมือกับภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ และ ภาควิชาศิลปการละคร คณะอักษรศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย พร้อมทั้งได้รับการสนับสนุนโดยบริษัท แอดวานซ์ อินโฟร์ เซอร์วิส จำกัด (AIS)

รูปแบบการบันทึกข้อมูล

ชุดข้อมูลนี้ประกอบด้วยการบันทึกข้อมูลจำนวน 100 ชุด แบ่งออกเป็น 2 รูปแบบ ได้แก่ การบันทึกข้อมูลในสตูดิโอ (Studio recording) จำนวน 80 ชุด และการบันทึกข้อมูลทางอินเทอร์เน็ต (Zoom recording) จำนวน 20 ชุด

รูปแบบที่ 1: การบันทึกข้อมูลในสตูดิโอ (Studio recording)

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

รูปภาพที่ 2 การบันทึกเสียงรูปแบบที่ 1

รูปแบบที่ 2: การบันทึกข้อมูลทางอินเทอร์เน็ต (Zoom recording)

การบันทึกข้อมูลผ่านทางเครือข่ายอินเทอร์เน็ต ด้วยโปรแกรม Zencastr สำหรับบันทึกเสียง และ Zoom สำหรับบันทึกวิดีโอ นักแสดงมีอิสระในการบันทึกข้อมูลจากสถานที่, ใช้ไมโครโฟนและกล้องเว็บแคม (webcam) ของตนเอง โดยไม่มีข้อจำกัดของอุปกรณ์

รูปภาพที่ 3 โปรแกรม zencastr ที่ใช้ในการอัดเสียง

ความเชื่อมั่นระหว่างผู้ประเมิน (Inter-rater reliability)

จะให้ผู้ฟังมากกว่า 2 คนขึ้นไป ฟังเสียงจากข้อมูลชุดเดียวกันและบอกว่าเป็นอารมณ์ใด และนำผลของทุกคนมาคำนวณเพื่อหาอารมณ์และความเชื่อเมื่อมั่น (agreement) ของชุดเสียงนั้น

รูปภาพที่ 4 ค่าความเชื่อมั่น

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

สามารถศึกษารายละเอียดเพิ่มเติมเกี่ยวกับ THAISER-DATASET ได้ที่

Data pipeline (การเตรียมข้อมูล)

  1. เลือก data ที่มีค่า agreement หรือค่าความเชื่อมั่น ≥ 0.71 (ตามข้อมูลด้านบน)
  2. โหลด audio แบบ mono tone และมีการ Resample เป็น 16000
  3. Feature extraction เป็น mel spectrogram
  4. แบ่ง mel spectrogram โดยจะแบ่งตามเวลาให้เท่าๆ กัน ส่วนที่เหลือเมื่อแบ่งแล้วจะนำไปต่อกับส่วนเดิมตั้งแต่แรกให้ครบตามเวลาที่กำหนด ดังรูป
รูปภาพที่ 5 การแบ่ง mel spectrogram เป็นเวลาที่เท่าๆ กัน

5. Normalize mel spectrogram แต่ละอันหลังจากแบ่งเสร็จ

Model

สำหรับ model ในครั้งนี้จะมีการทดสอบประสิทธิภาพของ model ด้วยกัน 3 model นั่นก็คือ

  1. CNN + LSTM (Convolutional neural network + Long short term memory)
  2. CNN + BLSTM (Convolutional neural network + Bidirectional Long short term memory)
  3. CSA + BLSTM (Convolutional self attention + Bidirectional Long short term memory)
รูปภาพ 6 model CNN + LSTM
รูปภาพที่ 7 model CNN + BLSTM
รูปภาพที่ 8 self-attention

Experiment

จากการทดสอบ model จำนวน 40 ครั้งสามารถจำแนกได้เป็น 4 การทดลองดังข้างล่างนี้

cnnlstm = สีฟ้า, cnnblstm = สีส้ม, csablstm = สีเขียว

เส้นสีแดงในกราฟคือค่าของ standard จากการทดลอง

1.Num mel

รูปภาพที่ 10 การทดลองของ feature num_mel

num mel ที่ใช้เทียบคือ 30

  • เมื่อเพิ่ม num mel เป็น 60 แล้วพบว่า model cnnlstm และ cnnblstm จะมี accuracy เพิ่มขึ้นประมาณ 2 % แต่ว่า csalstm นั้นจะลดลงประมาณ 1% และค่า standard นั้นมีค่าลดลงด้วย
  • เมื่อลด num mel เป็น 15 แล้วพบว่า model ทั้ง 3 จะมี accuracy ลดลงเหลือต่ำกว่า 70% และยังมีค่า standard ที่สูงขึ้นอีกด้วย

จากการการทดลองจะพบว่าเมื่อจำนวน num mel มากจะทำให้ model สามารถเรียนรู้ได้ดีกว่า เปรียบเสมือนการมีจำนวน feature ที่มากขึ้นในการเรียนรู้ของ model

2. Max length

รูปภาพที่ 11 การทดลองของ feature max_length

max length ที่ใช้เทียบคือ 5

  • เมื่อลด max length ลงจะทำให้ accuracy ที่ได้ดีขึ้นเล็กน้อย แต่เมื่อเพิ่ม max length ขึ้นจะทำให้ accuracy เพิ่มขึ้นได้อย่างมาก และทั้งสองก็มีค่า standard ลดลงด้วย

จากการทดลองจะพบว่าเมื่อ max length มากขึ้นในระดับที่มากพอ จะทำให้ model สามารถเรียนรู้ทั้งประโยคได้ดีขึ้นเนื่องจาก dataset ที่บันทึกนั้นจะเป็นการพูดจำลองสถานการณ์มากกว่าพูดประโยคสั้น ๆ

3. Frame length

รูปภาพที่ 12 การทดลองของ feature frame_length

frame length ที่ใช้เทียบคือ 50

  • เมื่อลด frame length เหลือ 25 จะเห็นได้ว่าทั้ง 3 model จะให้ค่า accuracy เพิ่มขึ้น(บางส่วน) แต่จะทำให้ค่า standard เพิ่มขึ้นเป็นอย่างมาก
  • เมื่อเพิ่ม frame length เป็น 100 model cnnlstm และ csablstm จะทำให้ค่า accuracy ลดลง แต่ model cnnblstm จะทีค่า accuracy เพิ่มขึ้นอย่างมาก และค่า standard มีค่าลดลงจากเดิม

จากการทดลองพบว่าค่าของ frame length นั้นให้ผล no clear correlation จาก model cnnlstm และ csablstm ลดลงแต่ว่า cnnblstm กลับเพิ่มขึ้น ดังนั้นแสดงว่าจำนวน blstm นั้นมีผลต่อ frame length อย่างมาก แต่เนื่องจาก model csablstm ก็ใช้ blstm เหมือนกันแต่ให้ผลที่ต่างกันในบางส่วน ดังนั้นแสดงว่า self attention นั้นจะทำให้ข้อมูลที่ blstm ควรจะได้รับนั้นเปลี่ยนไปอย่างซับซ้อนมากขึ้น ดูจากกราฟของ wa csablstm และ ua csablstm (เฉพาะกับ feature frame length เท่านั้น)

4. Zoom

รูปภาพที่ 13 การทดลองของ feature zoom

Zoom ที่ใช้เทียบคือ True

  • เมื่อ zoom เท่ากับ False model cnnlstm และ csablstm จะมีค่า accuracy ลดลงและมีค่า standard เท่าเดิม แต่ model cnnblstm นั้นจะมีค่า accuracy เพิ่มขึ้นและค่า standard ลดลง

จากการทดลองจะพบว่าเมื่อเพิ่ม data ที่บันทีกในโปรแกรม zoom ไปในการ train จะทำให้ model สามารถจะเรียนรู้ข้อมูลที่มี noise ได้ดีขึ้นทำให้ model มีความหลากหลายมากขึ้นด้วย

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

--

--