Text To Speech Synthesis หรือ เรียกย่อๆว่า TTS คำจำกัดความสั้นๆก็คือ การแปลงข้อความเป็นคำพูด ... ซึ่งทางต่างประเทศเขาก็พัฒนากันมาไกลมากโขแล้ว หน่วยงานภาครัฐของไทย ก็วิจัยกันมานับสิบปี ... ส่วนภาคเอกชนของไทยก็มีบ้าง แต่ไม่มากนัก ... นี่เลย ... ต้องไปดูของต่างประเทศที่สามารถอ่านคำภาษาไทยได้น่ะครับ www.oddcast.com ผมคิดว่าต้องมีคนไทยร่วมพัฒนาด้วยแน่ๆ แหม อยากรู้จักจริงๆเลยเนี่ย เรียกได้ว่าสุดยอดมากๆ ... ที่จริงแล้วการอ่านข้อความภาษาอังกฤษใน Windows XP ก็จะมีอยู่แล้วที่ Start -> Programs -> Accessories -> Accessibility -> Narrator หรือไปดูที่ Control Panel -> Speech แต่ก็อย่างว่าแหละครับ เราก็คงใช้งานมันเท่าที่มันจะทำได้ เพราะต้องประยุกต์ใช้ประโยชน์ของ TTS ด้วยการเขียนโปรแกรมขึ้นมาใช้งานเอง นอกเหนือไปจากการที่สามารถนำมาใช้ในทางการศึกษาได้แล้ว ก็ยังมีประโยชน์ให้กับกลุ่มผู้พิการทางสายตาได้อีก หรือ ใช้ในธุรกิจแบบระบบตอบรับด้วยเสียง และ การสั่งงานด้วยเสียง ฯลฯ ... แต่บทความนี้จะนำเสนอแนวคิดของการประยุกต์ใช้เทคโนโลยี เพื่อใช้เป็นสื่อในด้านการเรียน การสอนภาษาอังกฤษด้วย MS Visual Basic 6.0/SP6 น่ะครับ |
ก่อนที่จะใช้งาน TTS ใน VB6 ได้ คุณต้องทำการดาวน์โหลดไฟล์ และ ติดตั้งเข้าไปในเครื่องก่อน
การติดตั้งไฟล์ต่างๆ ค่า Default จะปรากฏที่ C:\Windows\Speech\ น่ะครับผม ... คิดว่าคงไม่ยาก
Project --> Components ... Microsoft Direct Text-To-Speech
 Project --> References ... พอเลือก Component เรียบร้อย ไฟล์ตัวนี้มันจะเข้ามาให้ทันทีอัตโนมัติ
 การออกแบบ - Design Time
 ตอนสั่งให้โปรแกรมทำงาน (Run Time) ... เสียงที่ปรากฏ เขามีชื่อว่า Microsoft Sam
 การแสดงทั้งข้อความ รูปภาพ และ เสียง ... สามารถนำไปประยุกต์ใช้ให้กับเด็กๆเรียนรู้เรื่องของคำศัพท์ได้อย่างดีเยี่ยมเลย ...
มาดูโค้ดกันเถอะ ...
Option Explicit
' #####################################################
' กดปุ่ม CommandButton แต่ละตัว
' #####################################################
Private Sub cmdShowPicture_Click(Index As Integer)
txtMessage.Visible = False
' เลือก Index ตามปุ่ม CommandButton ที่กด
Select Case Index
' Dog
Case 0:
Call SpeakEnglish(cmdShowPicture(0).Caption)
' Cat
Case 1:
Call SpeakEnglish(cmdShowPicture(1).Caption)
' Pig
Case 2:
Call SpeakEnglish(cmdShowPicture(2).Caption)
' Ambulance
Case 3:
Call SpeakEnglish(cmdShowPicture(3).Caption)
End Select
End Sub
' #####################################################
' การทำงานคล้ายกัน ซ้ำกัน แยกออกมาเป็นโปรแกรมย่อยซ่ะดีๆ
' โดยส่งค่า Caption ของปุ่มคำสั่งแต่ละตัวมา
' #####################################################
Sub SpeakEnglish(cmdName As String)
Dim ctl As Control
' ตรวจสอบก่อนว่ามีการสร้าง Image และ Label Control หรือยัง หากมีให้ลบออกไป
For Each ctl In Controls
If ctl.Name = "imageTemp" Then
Controls.Remove "imageTemp"
Controls.Remove "LabelTemp"
Exit For
End If
Next
' ประกาศใช้งานตัวแปร Image Control และ Label Control
Dim img As Image
Dim lbl As Label
' การสร้าง Image Control แบบ Run Time
Set img = Controls.Add("VB.Image", "imageTemp")
' ตั้งค่าคุณสมบัติ (Properties) แบบ Run Time
With img
' จัดวางตำแหน่งทางมุมซ้ายบนสุด
.Move 60, 90
.Visible = True
End With
' การสร้าง Label Control แบบ Run Time
Set lbl = Controls.Add("VB.Label", "LabelTemp")
' ตั้งค่าคุณสมบัติ (Properties) แบบ Run Time
With lbl
' จัดวางตำแหน่งตัวอักษรในการแสดงผล
.Move 60, sldSpeed.Top - 800
.Font.Name = "Tahoma"
.Font.Size = 16
.FontBold = True
' ปรับให้พอดีกับข้อความ
.AutoSize = True
' ปรับให้มีขอบแบบ Fixed Single
.BorderStyle = 1
' สีตัวอักษร
.ForeColor = vbRed
' สีพื้นหลัง
.BackColor = vbYellow
.Visible = True
End With
' เลือกรายการตามป้าย (Caption) ของปุ่มกด (CommandButton) แต่ละตัว
Select Case LCase(cmdName)
Case "dog"
img.Picture = LoadPicture(App.Path & "\images\dog.jpg")
lbl.Caption = "THEY ARE THE DOGS."
Case "cat"
img.Picture = LoadPicture(App.Path & "\images\cat.jpg")
lbl.Caption = "IT IS A CAT."
Case "pig"
img.Picture = LoadPicture(App.Path & "\images\pig.jpg")
lbl.Caption = "PIG, MOO NOI NOI."
Case "ambulance"
img.Picture = LoadPicture(App.Path & "\images\ambulance.jpg")
lbl.Caption = "THIS IS AN AMBULANCE."
End Select
' เคลียร์เสียงเดิมก่อน เพราะอาจมีเสียงเดิมค้างไว้อยู่
dssSpeak.AudioReset
' เริ่มอ่านตามข้อความใน Caption ของ Label Control
dssSpeak.Speak lbl.Caption
End Sub
' #####################################################
' จะอ่านประโยคตามที่อยู่ใน TextBox Control (txtMessage)
' #####################################################
Private Sub cmdSpeakMessage_Click()
txtMessage.Visible = True
' เคลียร์เสียงเดิมก่อน เพราะอาจมีเสียงเดิมค้างไว้อยู่
dssSpeak.AudioReset
' เริ่มอ่านตามข้อความใน TextBox
dssSpeak.Speak txtMessage.Text
End Sub
' #####################################################
' เริ่มต้นการทำงาน และ สาธิตการตั้งค่าคุณสมบัติของ Control แบบ Run Time
' #####################################################
Private Sub Form_Load()
Me.Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
' การตั้งค่าคุณสมบัติของ Control แบบ Run Time
With dssSpeak
.MaxPitch = 200
.MinPitch = 50
.Pitch = 100
.MaxSpeed = 450
.MinSpeed = 30
.Speed = 150
End With
' ตั้งค่า Speed SliderBar ให้ตรงกับ Speed ของ DirectSS
With sldSpeed
.Max = 450
.Min = 30
.Value = 150
End With
' ตั้งค่า Pitch SliderBar ให้ตรงกับ Pitch ของ DirectSS
With sldPitch
.Max = 200
.Min = 50
.Value = 100
End With
' กำหนดประโยคให้กับ TextBox และมีเครื่องหมาย คอมม่า , จะทำให้หยุดรอสักครู่
txtMessage.Text = "Hello world, my name is thongkorn."
End Sub
' #####################################################
' ปรับระดับเสียง
' #####################################################
Private Sub sldPitch_Change()
dssSpeak.Pitch = sldPitch.Value
End Sub
' #####################################################
' ปรับความเร็วเสียง
' #####################################################
Private Sub sldSpeed_Change()
dssSpeak.Speed = sldSpeed.Value
End Sub
Private Sub cmdExit_Click()
' เคลียร์เสียงเดิมก่อน เพราะอาจมีเสียงเดิมค้างไว้อยู่
dssSpeak.AudioReset
' โปรแกรมเมอร์ขี้เล่น และ ขี้เมา 55555+
dssSpeak.Speak "Ja Joob, Program, chai maii, ha ha ha"
'dssSpeak.Speak "Ja Joob, Program, Click OK, ha ha ha"
If MsgBox("คุณแน่ใจว่าต้องการจบการทำงานของโปรแกรม ?", vbQuestion + _
vbOKCancel + vbDefaultButton2, "ยืนยันการจบโปรแกรม") = vbOK Then
Set frmTextToSpeech = Nothing
End
End If
End Sub
|
Conclusion: นี่เป็นแค่การนำเสนอบางเสี้ยว บางตอนเท่านั้นเองน่ะครับ เผื่อครู อาจารย์ท่านใดที่สอนภาษาอังกฤษอยู่ จะได้มีไอเดียปิ๊งกระฉูด นำไปประยุกต์ใช้ ในการจัดทำสื่อการเรียน การสอน ให้เด็กๆไทยเราได้พัฒนาทักษะ ทั้งด้านการฟัง การอ่าน ทั้งด้านคำศัพท์ หรืออื่นๆอีก ... ซึ่งหากจะพัฒนาให้ดีกว่านี้ ก็คงต้องศึกษา เรียนรู้ระบบฐานข้อมูล (DataBase) เข้ามาด้วย เพื่อช่วยจัดเก็บข้อมูลคำศัพท์ คำอธิบาย ตำแหน่งเก็บรูปภาพ ตำแหน่งการเก็บเสียงแปล (ก็อัดเสียงจากที่นี่ไปเลย www.oddcast.comและอื่นๆได้ ... ก็ลองนำไปใส่ติ่งไอเดีย คิดๆดูกันเอาเองล่ะครับ ... พี่น้อง
|