คำเรียกผู้ช่วยอย่าง คือ Wake up word / Hot word เป็นคำใช้เรียกหรือสั่งงานโปรแกรม ช่วยอำนวยความสะดวกในการใช้งานโปรแกรมผู้ช่วยส่วนตัว ถูกนำไปใช้งานอย่าง siri ใน iPhone และ Ok Google ของ Google
ในภาษาไพทอน มีเครื่องมือง่าย ๆ อย่าง Mycroft Precise ให้เราสามารถสร้าง Wake up word / Hot word ง่าย ๆ ไม่ซับซ้อน
แนะนำให้ train บน Linux ไม่แนะนำให้ใช้ Windows ในการ train
แนะนำให้ train บน Linux ไม่แนะนำให้ใช้ Windows ในการ train
เรามาสร้าง Wake up word / Hot word กันเลยครับ
เริ่มแรก ให้เราใช้โปรแกรม Audacity อัดเสียง โดยตั้งค่า Project Rate (Hz) เป็น 16000 Hz แล้วกดอัดเสียง ตัวอย่างเช่น ผมอัดคำว่า "น้ำฟ้า" ประมาณ 10 ไฟล์ โดยบันทึกเป็น WAV 16-bit PCM
โดยต้องอัดเสียง Hot word ที่ต้องการให้ได้เยอะประมาณหนึ่ง จากนั้นต้องอัดเสียงที่ไม่ใช่ Hot word ไว้แยกว่าเสียงนี้ไม่ใช่ Hot word
จากนั้น เรามาสร้างโฟลเดอร์ และแยกไฟล์ตามที่ Mycroft Precise กำหนด ตัวอย่างเช่น
hi-numfa/ ├── wake-word/ │ ├── numfa.00.wav │ ├── numfa.01.wav │ ├── numfa.02.wav │ ├── numfa.03.wav │ ├── numfa.04.wav │ ├── numfa.05.wav │ ├── numfa.06.wav │ ├── numfa.07.wav │ └── numfa.08.wav ├── not-wake-word/ └── test/ ├── wake-word/ │ ├── numfa.09.wav │ ├── numfa.10.wav │ ├── numfa.11.wav │ └── numfa.12.wav └── not-wake-word/
โฟลเดอร์ wake-word ใช้เก็บไฟล์เสียง Hot word ส่วนโฟลเดอร์ not-wake-word ใช้เก็บไฟล์เสียงที่ไม่ใช่ Hot word โดยแบ่งส่วนหนึ่งไว้สำหรับ Test ในโฟลเดอร์ test
จากนั้น ติดตั้งเครื่องมือสำหรับ Train Model กัน ด้วยคำสั่ง
pip3 install https://github.com/MycroftAI/mycroft-precise/archive/dev.zipจากนั้นเปิดเทอร์มินัท เข้าไปยังที่ตั้งที่เก็บโฟลเดอร์ hey-numfa หรือ Hot word ของเรา จากนั้น Train ด้วยคำสั่ง
precise-train -e จำนวนการtrain ชื่อmodel.net ที่ตั้ง/ตัวอย่างเช่น
precise-train -e 100 hi-numfa.net hi-numfa/เราจะเห็นผลลัพธ์การ train โดยจะโชว์ดังเช่น
...
98/98 [==============================] - 0s 941us/step - loss: 0.0297 - acc: 0.9592 - val_loss: 0.0057 - val_acc: 1.0000
Epoch 100/100
98/98 [==============================] - 0s 354us/step - loss: 0.0275 - acc: 0.9796 - val_loss: 0.0057 - val_acc: 1.0000
จากนั้นให้แปลงออกมาเป็นไฟล์ model ให้นำไปใช้งาน ด้วยคำสั่ง
precise-convert ชื่อmodel.netตัวอย่างเช่น
precise-convert hi-numfa.netจะได้ไฟล์ hi-numfa.pb และ hi-numfa.pb.params
บนเครื่องผู้ใช้ ให้ทำการติดตั้งตัวรัน model ด้วยคำสั่ง
pip install precise-runnerจากนั้น ให้เขียนโค้ด Python
import time
from precise_runner import PreciseEngine, PreciseRunner
print('start')
def on_prediction(prob):
print('!' if prob > 0.5 else '.', end='', flush=True)
def on_activation():
print('Activation')
engine = PreciseEngine('C:\\Users\\Tontan\\Miniconda3\\Scripts\\precise-engine.exe', 'hi-numfa.pb')
# PreciseEngine(ที่ตั้งโฟลเดอร์ Scripts ของ precise-engine , ไฟล์ model)
# หากรันบน Linux ใช้ precise-engine/precise-engine ใน precise-engine
runner = PreciseRunner(engine, on_prediction=on_prediction, on_activation=on_activation, trigger_level=0)
runner.start()
while 1:
time.sleep(1)
โดยไฟล์จะต้องอยู่โฟลเดอร์เดียวกันกับไฟล์ model (เพื่อความสะดวกในการตั้งค่า) จากนั้นลองรันไฟล์ Python โดยลองพูดออกมา
start
........................!Activation
!!!..!.!...............................................................................................................................................
Activation คือ พบเสียง Hotword
อ่านเอกสารเพิ่มเติมได้ที่ https://github.com/MycroftAI/mycroft-precise
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)