In-Depth

ในตอนที่แล้ว ผมได้พูดถึงโปรแกรม PocketSphinx ซึ่งเป็นโปรแกรมรู้จำเสียงอัตโนมัติ (Automatic Speech Recognition หรือ ASR) ที่เป็น open source สามารถปรับแต่งให้รู้จำเสียงแบบใด ภาษาใดก็ได้ โดยผมได้พูดถึงการสร้างโมเดลที่จำเป็นต้องใช้สำหรับโปรแกรมรู้จำเสียงทั้งสามแบบ ได้แก่ language model, phonetic dictionary และ acoustic model ไปแล้ว ในตอนนี้จะเป็นการทดสอบโมเดลเพื่อวัดประสิทธิภาพของโมเดล การนำเอาโมเดลทั้งสามไปใช้งานจริง การทำ adaptation acoustic model และการทำ voice activation ครับ

การทดสอบ Acoustic Model

ขั้นตอนการทดสอบ acoustic model ถือเป็นสิ่งที่จำเป็นมาก เพราะจะเป็นการประเมินโมเดลของเราว่าสามารถนำไปใช้งานได้หรือไม่ โดย Sphinx จะใช้ค่า WER เป็นตัวประเมิน

WER (Word Error Rate) นิยามดังนี้

กำหนดให้มีข้อความที่ถูกต้อง (original text) กับข้อความที่คอมพิวเตอร์สามารถฟังได้ (recognition text) ยาว N คำ ถ้าคำที่คอมพิวเตอร์ฟังผิดเป็นคำที่ถูกแทรกขึ้นมาจากข้อความเดิม I คำ (inserted words) เป็นคำที่หายไปจากข้อความเดิม D คำ (deleted words) และเป็นคำที่ถูกแทนที่ไปจากคำเดิม S คำ (substituted words) แล้ว word error rate สามารถคิดได้ดังนี้

WER = (I + D + S) / N

ค่า WER จะวัดเป็นเปอร์เซ็นต์ สังเกตว่ายิ่งค่า WER เยอะ ประสิทธิภาพของโมเดลก็จะยิ่งแย่

สำหรับคำถามที่ว่าค่า WER ระดับไหนถึงเหมาะสมกับการใช้งาน อันนี้ต้องขึ้นอยู่กับการนำไปใช้ อย่างงานของผมซึ่งใช้คำสั่งเพียงไม่กี่คำก็อาจจะมีค่า WER น้อยกว่า 5% เป็นต้น

สำหรับวิธีการทดสอบ acoustic model สามารถเข้าไปดูได้ที่ http://cmusphinx.sourceforge.net/wiki/tutorialam#testing

การนำโมเดลไปใช้งาน

หลังจากที่ทำการฝึกและทดสอบ acoustic model เรียบร้อยแล้ว จะมีโฟลเดอร์ใหม่งอกขึ้นมาจากเดิมดังนี้ (ตอนก่อนฝึกเราจะมีแค่โฟลเดอร์ etc กับ wav)

  • etc
  • feat
  • logdir
  • model_parameters
  • model_architecture
  • wav

ซึ่งไฟล์ acoustic model ที่เราจะเอาไปใช้จริงๆ อยู่ในไดเรกทอรีนี้ครับ

model_parameters/<your_db_name>.cd_semi_<number_of senones>/

การนำเอาไปใช้งานก็ให้ก็อบปี้โฟลเดอร์นั้นทั้งหมด รวมทั้งไฟล์ language model และ phonetic dictionary มาไว้ในไดเรกทอรีเดียวกัน เมื่อจะใช้งานก็ให้สั่งใน terminal ว่า

รอให้ terminal ขึ้นสถานะว่า Ready… ก่อน จากนั้นก็ลองพูดดูครับ ถ้าโปรแกรมไม่มีปัญหาอะไร มันจะขึ้นว่า Listening ทันทีที่เราพูดจบหรือไม่มีเสียงภายนอกรบกวน และจะแสดงข้อมูลว่าโปรแกรมรู้จำคำศัพท์อะไรได้บ้าง

สำหรับ Troubleshooting ของการสร้าง acoustic model สามารถเข้าไปดูได้ที่ลิงก์นี้ http://cmusphinx.sourceforge.net/wiki/tutorialam#troubleshooting

การทำ Adaptation Acoustic Model

วิธีการเพิ่มประสิทธิภาพของ acoustic model วิธีหนึ่งคือการทำ adaptation ครับ อย่างที่ผมได้บอกไว้ตั้งแต่ตอนที่แล้วว่าบางครั้งเราไม่จำเป็นต้องสร้าง acoustic model ใหม่ทุกครั้ง (ความจำเป็นในการฝึก acoustic model ใหม่นั้นสามารถดูได้ในตอนที่หนึ่ง)

Adaptation acoustic model สามารถ

  • ช่วยให้โมเดลสามารถรู้จำเสียงของเราได้ดียิ่งขึ้น
  • ช่วยเพิ่มประสิทธิภาพการรู้จำของโมเดลได้ดีขึ้น
  • ช่วยให้โมเดลรู้จำสำเนียง (accent) อื่นๆ ในภาษาเดียวกันได้
  • หากต้องการให้โมเดลรู้จำเสียงในสภาพแวดล้อมอื่นๆ ได้มากขึ้น เช่น ในออฟฟิศ การทำ adaptation ก็ช่วยได้เช่นกัน
  • ภาษาจำพวก cross-language เช่น จะให้โมเดลสามารถรู้จำภาษาอื่นๆ ที่ยืมเอาภาษาอังกฤษ หรือจะให้รู้จำภาษาลาวจากโมเดลภาษาไทย ก็สามารถทำได้เช่นเดียวกัน

ข้อดีอย่างหนึ่งของการทำ adaptation acoustic model คือใช้ข้อมูลเสียงน้อยกว่าการสร้าง acoustic model ใหม่ค่อนข้างมาก CMUSphinx เคลมว่าใช้ข้อมูลเสียงแค่ 5 นาทีก็สามารถเพิ่มประสิทธิภาพของโมเดลขึ้นอย่างเห็นได้ชัด

เตรียมข้อมูลสำหรับทำ Adaptation Acoustic Model

ไฟล์สำหรับทำ adaptation acoustic model มีแค่ 3 ไฟล์เท่านั้น (your_db คือชื่อ database ของเรา จะตั้งชื่อเป็นอะไรก็ได้)

  • your_db.fileids
  • your_db.transcription
  • your_db.dic
  • ข้อมูลเสียงสำหรับทำ adaptation

ไฟล์ทั้งหมดจะคล้ายๆ กับที่ใช้ในการสร้าง acoustic model

กระบวนการ Adaptation

สำหรับวิธีการทำ adaptation และรายละเอียดอื่นๆ สามารถอ่านเพิ่มเติมได้ที่ http://cmusphinx.sourceforge.net/wiki/tutorialadapt

อย่าลืมว่าหลังการทำ adaptation แล้วต้องทำการทดสอบเหมือนกับการสร้าง acoustic model ด้วยทุกครั้ง

การทำ Voice Activation

สังเกตไหมครับว่าการสั่งงานด้วยเสียงบนสมาร์ทโฟนถ้าไม่กดปุ่มก่อนก็ต้องพูดคีย์เวิร์ดก่อนทุกครั้ง อย่างเช่น วลีเด็ดของกูเกิล “OK Google” หรืออย่าง “Hey, Siri” บน iOS 8 ซึ่งการกระทำในลักษณะนี้เราเรียกว่า voice activation

เหตุผลที่ต้องทำ voice activation ส่วนหนึ่งเข้าใจว่าเป็นการแยกระหว่างคำสั่งเสียงบนสมาร์ทโฟนกับคำพูดที่เราใช้พูดในชีวิตประจำวัน (ถ้าเราจะสั่งสมาร์ทโฟนให้ทำงานก็ต้องพูดคีย์เวิร์ดซะก่อน) อีกเหตุผลหนึ่งก็เนื่องมาจากว่าตัว automatic speech recognition ต้องประมวลผลข้อมูลเยอะมากเพื่อบอกว่าแต่ละคำที่เราพูดคืออะไรบ้าง ถ้าให้ตัว automatic speech recognition ทำงานตลอดเวลา สมาร์ทโฟนจะต้องประมวลผลมากจนเกินความจำเป็น ดังนั้น จะดีกว่าหากจะมีโปรแกรมหรือวิธีการที่จะสามารถจับเฉพาะคีย์เวิร์ดที่เราต้องการ ซึ่งน่าจะทำให้ใช้ทรัพยากรในการประมวลผลน้อยลง วิธีการในการจับเฉพาะคีย์เวิร์ดที่ต้องการดังที่อธิบายข้างต้น เราเรียกกันว่า keyword spotting ครับ

ผมจะสรุปความแตกต่างระหว่าง keyword spotting กับ speech recognition เป็นอย่างนี้ครับ

Speech recognition เป็นการประมวลผลคำพูดของผู้พูดโดยแปลงจากเสียงของผู้พูดให้เป็นข้อความทั้งหมด เช่น ถ้าผมพูดว่า “เย็นนี้ไปกินข้าวกันไหม” โปรแกรมนี้จะต้องสามารถบอกได้ว่าผมกำลังพูดประโยคที่ว่า “เย็นนี้ไปกินข้าวกันไหม” ได้ทั้งหมด

Keyword spotting เป็นการประมวลผลคำพูดของผู้พูดโดยจับเอาเฉพาะคีย์เวิร์ดที่เราต้องการเท่านั้น ไม่จำเป็นต้องแปลงคำพูดทั้งหมด เช่น ผมตั้งโปรแกรมให้จับคีย์เวิร์ดคำว่า “กินข้าว” แล้วผมพูดว่า “เย็นนี้ไปกินข้าวกันไหม” โปรแกรมจะบอกว่าผมได้พูดคำว่า “กินข้าว” ไปแล้ว

CMUSphinx’s Keyword Spotting

CMUSphinx มีฟีเจอร์ keyword spotting ครับ แต่ต้องพูดก่อนว่าเวอร์ชันที่ใช้ปัจจุบัน (PocketSphinx-0.8) นั้นกลับไม่มีฟีเจอร์นี้มาให้ครับ (ทั้งๆ ที่เวอร์ชัน 0.7 ซึ่งเป็นเวอร์ชันก่อนหน้า หรือเวอร์ชัน 5prealpha ซึ่งเป็นเวอร์ชันที่ยังพัฒนากันอยู่กลับมีฟีเจอร์นี้มาให้) ดังนั้น ถ้าต้องการจะใช้จริงๆ ผมแนะนำให้ติดตั้งโปรแกรมเวอร์ชันที่พัฒนาอยู่แทน (เวอร์ชัน 0.7 ผมใช้แล้วไม่ค่อยเวิร์คเท่าไหร่) ลิงก์ดาวน์โหลดจะอยู่ที่ http://sourceforge.net/p/cmusphinx/code/HEAD/tree/trunk/ คลิกที่ Download Snapshot ซึ่งวิธีการติดตั้งเหมือนกับเวอร์ชันก่อนๆ

ผมทดลองใช้ pocketsphinx_continuous กับ acoustic model ที่ถูกสร้างมาจาก sphinxtrain-1.0.8 แล้วไม่มีปัญหา (แถมยังใช้งานได้ดีกว่าเวอร์ชัน 0.8 เสียด้วยซ้ำ) ส่วนการสร้าง acoustic model จาก sphinxtrain ที่อยู่ใน snapshot ดังกล่าวพบว่าไม่สามารถใช้งานได้ครับ (แต่เนื่องจากเป็นเวอร์ชันพัฒนา ก็ไม่แน่ว่าอาจจะมีการแก้ไขแล้ว)

วิธีการใช้งาน keyword spotting นั้นจะใช้คำสั่งดังนี้

Option ที่เพิ่มขึ้นมาของ keyword spotting ใน PocketSphinx คือ -kws ครับ โดยสิ่งที่ตามหลัง -kws คือไฟล์ keyphrase ซึ่งเป็นไฟล์ที่เก็บคีย์เวิร์ดที่เราต้องการให้มันตรวจจับครับ โดยหนึ่งบรรทัดจะประกอบด้วยคีย์เวิร์ดซึ่งเป็นศัพท์ที่มีใน phonetic dictionary หนึ่งตัว ตัวอย่างเช่น ถ้าสมมติผมต้องการให้คำว่า “ฮัลโหล” เป็นคีย์เวิร์ดสำหรับทำ keyword spotting ผมก็เขียนแค่ว่า “ฮัลโหล” ก็พอแล้ว อีกสิ่งหนึ่งที่อยากให้สังเกตคือการทำ keyword spotting นั้นไม่ใช้ไฟล์ language model ครับ

การใช้งานของ pocketsphinx_continuous รุ่นที่กำลังพัฒนาอยู่นั้นจะแตกต่างจากเวอร์ชัน 0.8 อยู่อย่างหนึ่งตรงที่เราต้องบอกโปรแกรมเสมอว่าจะให้รับข้อมูลนำเข้าเป็นอะไร สังเกตได้ว่า ผมเพิ่ม option อันสุดท้ายคือ -inmic ลงไป แล้วตามด้วย yes ในที่นี้จะหมายถึงว่าให้โปรแกรมรับข้อมูลเสียงจากไมโครโฟนครับ (กรณีที่ต้องการให้รับข้อมูลเป็นไฟล์เสียงก็ใช้ -infile เหมือนเดิม)

Thresholding ใน Keyword Spotting

กรณีที่เราต้องการ (หรือไม่ต้องการ) ให้โปรแกรม detect คำที่ใกล้เคียงกับคีย์เวิร์ด เช่น ต้องการให้โปรแกรมจับคำได้ง่ายขึ้น หรือไม่ต้องการจับคำว่า “หมั่นโถว” แทนที่จะเป็นคำว่า “ฮัลโหล” ก็สามารถปรับค่า threshold ของตัว keyword spotting ได้โดยเขียนคำสั่งดังนี้

โดยค่า default ของ kws_threshold คือ 1.00 ครับ ผมทดลองใช้ค่า default ในการให้ pocketsphinx_continuous จับคีย์เวิร์ดพบว่ามันยังใช้ได้ไม่ดีนัก เลยลองปรับเพิ่ม/ลดค่าของ kws_threshold ดู ปรากฏว่ายิ่งค่าของ kws_threshold ลดลงเท่าไหร่ ยิ่งทำให้โปรแกรมจับคำคีย์เวิร์ดที่มีเสียงใกล้เคียงได้มากขึ้นเท่านั้น ส่วนจะปรับเท่าไหร่นั้นอันนี้ขึ้นอยู่กับการทดลอง (ผมลองปรับไปถึง 1e-10 หรือก็คือ 0.0000000001 แต่ผมลองหาบางกระทู้เค้าแนะนำถึง 1e-50 เลยครับ)

ประเด็นเพิ่มเติมของ PocketSphinx

ต่อไปนี้จะพูดถึงประเด็นต่างๆ ที่น่าสนใจของ PocketSphinx เพิ่มเติมครับ

ประเด็นที่ 1: Speech Recognition ใน PocketSphinx ไม่สามารถปรับค่า thresholding ได้

อันนี้เป็นปัญหาใน speech recognition นะครับ ไม่ใช่ปัญหาของ keyword spotting

ปัญหาเกิดขึ้นหลังจากที่ผมลองพูดคำอื่นๆ ที่ไม่ใช่คำสั่งที่ต้องการ อย่างเช่นคำว่า “ปิดไฟ” ผมลองพูดคำว่า “กินไก่” แทน สังเกตได้ว่าคำสองคำนี้เสียงใกล้เคียงกันเลยทำให้ PocketSphinx นึกว่าผมพูดคำว่า “ปิดไฟ” ดังนั้น ผมจึงพยายามหาวิธีเพื่อที่จะทำให้ PocketSphinx ไม่ต้องหาคำใกล้เคียงกับที่ผมพูด (ศัพท์ทางเทคนิคของคำที่ใกล้เคียงกันแต่ไม่ต้องการให้โปรแกรมรู้จำได้นั้นเรียกว่า out-of-vocabulary word หรือ OOV word) แต่ปรากฏว่าหลายๆ เว็บต่างก็บอกว่าโปรแกรมนี้ไม่สามารถทำแบบนั้นได้

วิธีการหนึ่งที่จะแก้ปัญหานี้ได้คือต้องสร้างโมเดลที่จำคำที่ใกล้เคียงกับคำว่า “ปิดไฟ” ทั้งหมด เช่น คำว่า “มิด” “คิด” “ไผ่” “ไก่” เป็นต้น ซึ่งนั่นจะทำให้ต้องใช้เวลาในการสร้างโมเดลมากขึ้นครับ ส่วน Sphinx4 เข้าใจว่ามีเทคนิคหนึ่งคือการทำ phone loop แต่ไม่ได้ศึกษามาว่าต้องทำยังไงบ้าง

ศึกษาเรื่องของการทำ Rejecting Out-of-Grammar Utterances เพิ่มเติมได้ที่ http://cmusphinx.sourceforge.net/wiki/sphinx4:rejectionhandling

สำหรับผู้ที่พัฒนาโปรแกรมบน iOS นั้นจะมีโปรแกรมเพิ่มเติมชื่อว่า OpenEars ของ PolitePix ซึ่งพัฒนามาจาก CMUSphinx มาอีกต่อหนึ่ง สามารถทำได้ทั้ง speech recognition และ text-to-speech synthesis และยังมี plugin เสริมเพื่อเพิ่มประสิทธิภาพของ OpenEars ด้วย ซึ่ง plugin ตัวหนึ่งที่มีคือ Rejecto สามารถปรับค่า thresholding สำหรับการทำ speech recognition ได้ แต่โปรแกรมนี้จะฟรีเฉพาะ OpenEars เท่านั้น plugin ที่เหลือต้องเสียเงินครับ สำหรับรายละเอียดโปรแกรมเพิ่มเติมสามารถอ่านได้ที่ http://www.politepix.com/

ประเด็นที่ 2: การพัฒนาโปรแกรม speech recognition บน Android และ iOS

โมเดลที่ได้จากการทำ training นั้นสามารถนำไปใช้งานบน Android หรือ iOS ได้ครับ โดย iOS นั้นสามารถใช้โปรแกรม OpenEars ช่วยได้ ส่วนบน Android นั้นทาง CMUSphinx ได้ให้รายละเอียดเรื่องของวิธีการทำและมีตัว demo ด้วยครับ ซึ่งในบทความนี้จะขออนุญาตไม่พูดถึงรายละเอียดของการพัฒนาโปรแกรมบนสมาร์ทโฟนนะครับ ซึ่งรายละเอียดของการพัฒนาโปรแกรม speech recognition บน Android และ iOS เพิ่มเติมดูที่ http://cmusphinx.sourceforge.net/wiki/building

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

สำหรับบทความ, tutorial ฉบับเต็ม, FAQ เอกสารประกอบของ PocketSphinx และ Sphinx4 หรือเนื้อหาอื่นๆ เพิ่มเติม สามารถเข้าไปชมได้ที่ลิงก์นี้ครับ http://cmusphinx.sourceforge.net/wiki/ สำหรับฟอรั่มถามตอบสามารถเข้าได้ที่ลิงก์นี้ http://sourceforge.net/p/cmusphinx/discussion/ หากมีข้อสงสัยใดๆ จะถามในคอมเมนต์ได้แต่ผมแนะนำให้ถามในฟอรั่มน่าจะได้คำตอบที่ดีกว่าครับ :)

สุดท้ายนี้ ขอให้สนุกกับการเขียนโปรแกรมครับ

Hiring! บริษัทที่น่าสนใจ

CP AXTRA Public Company Limited - Lotus's company cover
CP AXTRA Public Company Limited - Lotus's
CP AXTRA Lotus's is revolutionizing the retail industry as a Retail Tech company.
Token X company cover
Token X
Blockchain, ICO, Tokenization, Digital Assets, and Financial Service
Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
United Information Highway Co., Ltd. company cover
United Information Highway Co., Ltd.
UIH is Thailand’s leading Digital Infrastructure and Solution Provider for Business
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
CDG GROUP company cover
CDG GROUP
Provider of IT solutions to public, state, and private sectors in Thailand for over 56 years
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
Gofive company cover
Gofive
“We create world-class software experience”
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
LTMH TECH company cover
LTMH TECH
LTMH TECH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

nuntawat Sat, 07/12/2014 - 21:09

In reply to by littletail

  • Tutorial สะกดด้วยตัวพิมพ์เล็กทั้งหมด
  • "บทความ Tutorial ฉบับเต็ม FAQ เอกสารประกอบของ PocketSphinx และ Sphinx4 หรือเนื้อหาอื่นๆ เพิ่มเติม" น่าจะใส่ลูกน้ำคั่นระหว่างสิ่งต่างๆ คนละสิ่งกัน อาทิ หาก "บทความ" ไม่เกี่ยวกับ "tutorial" ก็ควรมีลูกน้ำคั่น

เยี่ยมมากเลยครับอยากลองศึกษาบ้าง แต่ฝั่งไมโครซอฟท์มีบิงอยู่ผมอยากรู้ว่ามันต่างจากมาใช้โปแกรมนี้มากแค่ไหนอะครับ อย่างหนึ่งก็คงจะใช้เน็ตกับไม่ใช้

ผมไม่เคยใช้ Bing แฮะ แต่ที่แน่ๆ คือ PocketSphinx กับ Sphinx4 เป็น open source ใช้ได้กับหลายๆ แพลตฟอร์มครับ ยิ่ง Sphinx4 นี่เป็นภาษาจาวาเลย

มีวิธีที่สามารถนำ PocketSphinx มาบันทึกเสียงเป็นเสียงคำศัพท์ภาษาอังกฤษ มาเปรียบเทียบ เสียงของผู้ใช้ให้ถูกต้องไหมคะ

Apple
public://topics-images/apple_webp.png
SCB10X
public://topics-images/347823389_774095087711602_515970870797767330_n_webp.png
Windows 11
public://topics-images/hero-bloom-logo.jpg
Doom
public://topics-images/doom_logo.png
Huawei
public://topics-images/huawei_standard_logo.svg_.png
Threads
public://topics-images/threads-app-logo.svg_.png
Google Keep
public://topics-images/google_keep_2020_logo.svg_.png
Fortnite
public://topics-images/fortnitelogo.svg_.png
Instagram
public://topics-images/instagram_logo_2022.svg_.png
SCB
public://topics-images/9crhwyxv_400x400.jpg
Microsoft
public://topics-images/microsoft_logo.svg_.png
Basecamp
public://topics-images/bwpepdi0_400x400.jpg
Tinder
public://topics-images/hwizi8ny_400x400.jpg
FTC
public://topics-images/seal_of_the_united_states_federal_trade_commission.svg_.png
Pinterest
public://topics-images/pinterest.png
Palantir
public://topics-images/-nzsuc6w_400x400.png
Gemini
public://topics-images/google_gemini_logo.svg__0.png
AIS Business
public://topics-images/logo-business-2021-1.png
PostgreSQL
public://topics-images/images.png
JetBrains
public://topics-images/icx8y2ta_400x400.png
Krungthai
public://topics-images/aam1jxs6_400x400.jpg
Palworld
public://topics-images/mccyhcqf_400x400.jpg
Bill Gates
public://topics-images/bill_gates-september_2024.jpg
VMware
public://topics-images/1nj4i1gp_400x400.jpg
Take-Two Interactive
public://topics-images/0khle7nh_400x400.jpg
OpenAI
public://topics-images/ztsar0jw_400x400.jpg
Thailand
public://topics-images/flag_of_thailand.svg_.png
NVIDIA
public://topics-images/srvczsfq_400x400.jpg
ServiceNow
public://topics-images/ytnrfphe_400x400.png
PS5
public://topics-images/playstation_5_logo_and_wordmark.svg_.png
Klarna
public://topics-images/urcllpjp_400x400.png
Google Play
public://topics-images/play.png
Drupal
public://topics-images/drupal.png
Virtua Fighter
public://topics-images/virtua_figther_2024_logo.png
Paradox Interactive
public://topics-images/paradox_interactive_logo.svg_.png
Europa Universalis
public://topics-images/europa-icon.png
Nintendo Switch 2
public://topics-images/mainvisual.png
Cloudflare
public://topics-images/cloudflare_logo.svg_.png
Samsung
public://topics-images/samsung.png
Google
public://topics-images/google_2015_logo.svg_.png
Uber
public://topics-images/uber.png
Microsoft 365
public://topics-images/m365.png
USA
public://topics-images/flag_of_the_united_states.svg_.png
GM
public://topics-images/0pe0po-z_400x400.jpg
Perplexity
public://topics-images/perplex.jpg