ผู้เขียนบทความ นายณัฐดนัย วรรณกุล COE.15
คณะวิศวกรรมศาสตร์ สาขาวิศวกรรมคอมพิวเตอร์
วิชา : 04-513-201 การโปรแกรมคอมพิวเตอร์ขั้นสูง 1/2566
1.ความเป็นมา
ในปัจจุบันเรายังต้องใช้เมาส์หรือคีย์บอร์ดในการสั่งงานเปิดโปรแกรมอยู่เป็นจำนวนมากซึ่งมันอาจจะไม่สะดวกสบายสำหรับบุคคลบางประเภทเช่นผู้พิการทางการเคลื่อนไหวหรือผู้สูงอายุที่ไม่ถนัดเรื่องการใช้อุปกรณ์ ITสมัยใหม่ในการเข้าใช้งานโปรเเกรมการสั่งงานด้วยเสียงจึงเป็นการช่วยแก้ไขปัญหากลุ่มคนเหล่านี้ได้ทำให้พวกเขาสามารถเข้าใช้งานโปรเเกรมได้ง่ายสะดวกสบายมากขึ้นเเละสำหรับบุคคลทั่วไปก็จะช่วยในการประหยัดเวลาการเข้าใช้งานโปรเเกรมได้มากขึ้น
ดั้งนั้นจากปัญหาดังกล่าวผู้จัดทำจึงได้ศึกษาค้นคว้าเเละได้คิดที่จะสร้างการสั่งงานเปิดโปรแกรมด้วยเสียงขึ้นมาโดยการใช้ SpeechRecognitionในการเเปลงเสียงเป็นข้อความ, ใช้Google Text-to-Speechในการสร้างเสียงพูดจากข้อความ,ใช้osในการเปิดโปรเเกรม ,ใช้ctime
และ time
ในการบอกเวลา นี้คือข้อมูลส่วนหลักในการทำโปรเเกรมนี้ขึ้นมา
2.วัตถุประสงค์
2.1เพื่อเพิ่มความสะดวกสบายในการเปิดใช้โปรแกรม
2.2เพื่อแก้ไขปัญหาการเปิดเข้าใช้งานโปรเเกรมสำหรับผู้พิการทางการเคลื่อนไหวหรือผู้สูงอายุ
3.ขอบเขต
3.1สามารถใช้คำสั่งเสียงในการเปิดโปรแกรมที่กำหนดไว้ได้
3.2สามารถถามแล้วตอบเวลาปัจจุบันได้
4.ประโยชน์ที่คาดว่าจะได้รับ
4.1เพิ่มความสะดวกสบายในการเปิดเข้าใช้งานโปรแกรม
4.2สามารถนำความรู้การเขียนโปรแกรมเเบบOOPไปประยุกต์ใช้ได้จริง
4.3สามารถที่จะนำระบบไปต่อยอดหรือประยุกต์ในการพัฒนาต่อได้
5.ความรู้ที่เกี่ยวข้อง
5.1การใช้งานไลบรารี SpeechRecognition: ไลบรารี SpeechRecognition ใช้สำหรับการจดจับและแปลงเสียงเป็นข้อความ คุณจะต้องรู้วิธีการใช้งานไลบรารีนี้เพื่อจับเสียงจากไมโครโฟนและแปลงเสียงเป็นข้อความที่สามารถประมวลผลได้
การติดตั้ง SpeechRecognition คุณต้องติดตั้ง SpeechRecognition โดยใช้ pip ใช้คำสั่งนี้
หลังจากติดตั้ง SpeechRecognition คุณสามารถเริ่มใช้ไลบรารีนี้ได้ ต่อไปนี้คือขั้นตอนที่สำคัญในการใช้ SpeechRecognition
นำเข้าไลบรารี
สร้างอินสแตนซ์ของ Recognizer
รับข้อมูลเสียง ใช้ Microphone หรือแหล่งเสียงอื่น ๆ เพื่อรับข้อมูลเสียง
แปลงเสียงเป็นข้อความ ใช้ API สำหรับรับรู้เสียงเพื่อแปลงข้อมูลเสียงเป็นข้อความ
5.2การใช้งาน gTTS (Google Text-to-Speech): gTTS ใช้สร้างเสียงพูดจากข้อความ คุณจะต้องรู้วิธีการใช้ไลบรารีนี้เพื่อให้ระบบของคุณสามารถตอบกลับผู้ใช้ด้วยเสียงพูด
การติดตั้ง gTTS คุณต้องติดตั้ง gTTS โดยใช้ pip ด้วยคำสั่งนี้
หลังจากติดตั้ง gTTS คุณสามารถเริ่มใช้งานไลบรารีนี้ นี่คือขั้นตอนที่สำคัญในการใช้ gTTS
นำเข้าไลบรารี
สร้างอินสแตนซ์ของ gTTS
บันทึกไฟล์เสียง
ใช้เมธอด save()
เพื่อบันทึกไฟล์เสียง
เล่นไฟล์เสียง คุณสามารถเล่นไฟล์เสียงที่คุณสร้างโดยใช้โปรแกรมเล่นไฟล์เสียงตามความเหมาะสม ตัวอย่างข้างต้นใช้ os.system()
เพื่อเล่นไฟล์เสียงด้วย mpg123
5.3การทำงานกับเวลา: การใช้ ctime และ time ในการแสดงเวลาเป็นส่วนหนึ่งของการให้คำตอบเกี่ยวกับคำถาม “กี่โมงแล้ว”
ctime
และ time
เป็นไลบรารีที่มาพร้อมกับ Python และใช้ในการทำงานกับเวลาและวันที่
นำเข้าไลบรารี time
เพื่อใช้งาน
ctime
เป็นฟังก์ชันที่อยู่ในไลบรารี time
และใช้ในการแปลงเวลา Unix timestamp เป็นรูปแบบข้อความที่แสดงเวลาและวันที่
5.4การทำงานกับระบบปฏิบัติการ: การใช้งานไลบรารี os เพื่อเปิดแอปพลิเคชันเช่น Spotify, Excel, Chrome และการเปิด URL ในเบราว์เซอร์
ไลบรารี os
เป็นไลบรารีใน Python ที่ใช้ในการทำงานกับระบบไฟล์และทำงานร่วมกับระบบปฏิบัติการ
การนำเข้าไลบรารี os
เพื่อใช้งาน
5.5การสร้าง loop รอบอนันต์: การใช้ while True ในการทำให้ Voice Assistant สามารถเชื่อมต่อและตอบสนทนากับผู้ใช้ได้ตลอดเวลา
5.6การใช้งานบริการเสียงสร้างของ Google: การใช้งาน Google Speech Recognition คือการเชื่อมต่อกับบริการเสียงของ Google ซึ่งเป็นหัวใจสำคัญในการแปลงเสียงเป็นข้อความ คุณต้องทราบว่าการใช้งานบริการนี้ต้องการการเชื่อมต่ออินเทอร์เน็ต
5.7การเขียนโปรแกรมเชิงวัตถุ (Object-oriented programming, OOP) คือหนึ่งในรูปแบบการเขียนโปรแกรมคอมพิวเตอร์ ที่ให้ความสำคัญกับ วัตถุ ซึ่งสามารถนำมาประกอบกันและนำมาทำงานรวมกันได้ โดยการแลกเปลี่ยนข่าวสารเพื่อนำมาประมวลผลและส่งข่าวสารที่ได้ไปให้ วัตถุ อื่นๆที่เกี่ยวข้องเพื่อให้ทำงานต่อไป
import speech_recognition as sr
: นี้เป็นการนำเข้าไลบรารีspeech_recognition
และนำมาใช้โดยใช้ชื่อย่อsr
เพื่อใช้ในการรับรู้เสียงและแปลงเสียงเป็นข้อความfrom time import ctime
: นำเข้าฟังก์ชันctime
จากไลบรารีtime
ซึ่งใช้ในการแสดงเวลาปัจจุบันimport time
: นำเข้าไลบรารีtime
เพื่อใช้ฟังก์ชันที่เกี่ยวข้องกับการจัดการเวลาimport os
: นำเข้าไลบรารีos
เพื่อใช้ในการดำเนินการบนระบบ เช่น เรียกใช้โปรแกรมfrom gtts import gTTS
: นำเข้าฟังก์ชันgTTS
จากไลบรารีgtts
ซึ่งใช้ในการแปลงข้อความเป็นเสียง
class VoiceAssistant:
เริ่มต้นการสร้างคลาสVoiceAssistant
เพื่อจัดการกับความสามารถของผู้ช่วยเสียงทั้งหมดdef __init__(self):
นี้เป็นเมธอดที่ถูกเรียกเมื่อสร้างอ็อบเจกต์ของคลาสVoiceAssistant
ในเมธอดนี้ ระบบรับรู้เสียงถูกเริ่มต้นโดยสร้างอ็อบเจกต์recognizer
จากspeech_recognition.Recognizer()
เพื่อใช้ในการรับรู้เสียงdef speak(self, audioString):
เมธอดนี้ใช้ในการแปลงข้อความเป็นเสียงและเล่นออกมา รับพารามิเตอร์ audioString ที่เป็นข้อความที่จะถูกแปลงเป็นเสียง และใช้ไลบรารี gTTS เพื่อสร้างไฟล์เสียงจากข้อความ และเล่นเสียงโดยใช้ os.systemdef record_audio(self):
นี้เป็นเมธอดที่ใช้ในการบันทึกเสียงจากไมโครโฟน ใช้with sr.Microphone() as source:
เพื่อเปิดไมโครโฟนและบันทึกเสียงจากผู้ใช้def process_audio(self, audio):
เมธอดนี้ใช้ในการแปลงเสียงที่บันทึกเป็นข้อความ รับพารามิเตอร์audio
ซึ่งเป็นข้อมูลเสียงและใช้ Google Speech Recognition API เพื่อแปลงเสียงเป็นข้อความ จัดการกับข้อผิดพลาดที่อาจเกิดขึ้น เช่น ไม่รู้จักค่าหรือข้อผิดพลาดในการร้องขอของ API
def run(self):
นี้เป็นเมธอดที่ใช้ในเริ่มต้นการทำงานของผู้ช่วยเสียง หน่วงเวลา 2 วินาที พูดคำทักทาย และจากนั้นเริ่มลูปที่รับคำสั่ง ประมวลผลคำสั่ง และตอบสนองdef Bot(self, data):
นี้เป็นเมธอดที่ใช้ในการดำเนินการตามคำสั่งที่ได้รับ ตรวจสอบคำสำคัญและทำการตามคำสั่งที่ระบุ เช่น การบอกเวลาปัจจุบัน เเละ เปิดแอปพลิเคชันที่กำหนดif __name__ == "__main__":
ในบล็อกนี้ โปรแกรมตรวจสอบว่าถูกเรียกใช้โดยตรงหรือไม่ และหากถูกเรียกใช้โดยตรง จะสร้างอ็อบเจกต์VoiceAssistant
และเริ่มลูปหลักของผู้ช่วยเสียงโดยเรียกเมธอดrun
6.ผลการดำเนินงาน
ตัวโปรเเกรมสามารถบอกเวลาเเละเปิดโปรเเกรมตามที่กำหนดได้
เปิดโปรเเกรมตามคำสั่งเสียงที่กำหนดได้
ตอบเวลาปัจจุบันได้
จากผลการทดลองการเปิดโปรเเกรมเเละถามเวลาจำนวน9ครั้งมีอย่างละ2ครั้งที่ตัวโปรเเกรมไม่ทำงาน
7.สรุปผลเเละข้อเสนอแนะ
ตัวโปรแกรมสามารถทำงานได้ตามขอบเขตที่ต้องการแต่จากผลการทดลองก็ทำให้ได้รู้ว่าตัวโปรเเกรมก็ยังมีปัญหาอยู่บ้างคือถ้าสั่งเปิดโปรเเกรมต่อเนื่องโดยไม่มีการเว้นช่วงพักจะทำให้ตัวโปรเเกรมอาจไม่ทำงานในบางช่วง
ข้อเสนอแนะ
โปรแกรมนี้ยังสามารถที่จะพัฒนาต่อได้อีก ไม่ว่าจะเป็นเรื่องการทำงานของตัวโปรแกรมที่เราสามารถพัฒนาให้มีความเสถียรได้มากกว่านี้และการพัฒนาให้สามารถเปิดโปรเเกรมได้มากกว่าที่กำหนดในตอนนี้ได้
8.อ้างอิง
การเขียนโปรแกรมเชิงวัตถุ (Object-oriented programming, OOP)
ศึกษาการทำเปิดโปรเเกรมด้วยคำสั่งเสียง
www.youtube.com/watch?v=ptOzOlhoayI&t=5s