𝗕𝗲𝘆𝗼𝗻𝗱 𝟭𝟱𝟬𝗺𝘀: 𝗛𝗼𝘄 𝗜 𝗥𝗲𝗱𝘂𝗰𝗲𝗱 𝗟𝗮𝘁𝗲𝗻𝗰𝘆 𝗳𝗼𝗿 𝗮 𝗥𝗲𝗮𝗹-𝗧𝗶𝗺𝗲 𝗔𝗜 𝗩𝗼𝗶𝗰𝗲 𝗔𝘀𝘀𝗶𝘀𝘁𝗮𝗻𝘁

การทำ Live coding และการสัมภาษณ์ทางเทคนิคสร้างความเครียดให้กับนักพัฒนา หลายคนมักจะลำบากเมื่อมีผู้เชี่ยวชาญคอยจ้องมองทุกบรรทัดของโค้ดใน IDE ที่ใช้ร่วมกัน

Generative AI กำลังเปลี่ยนสิ่งนี้ ตอนนี้คุณสามารถจำลองสถานการณ์การสัมภาษณ์จริงผ่านการฝึกฝนแบบโต้ตอบได้แล้ว

ผมใช้เวลาหลายเดือนในการสร้างเครื่องมือ SaaS สำหรับการสรรหาบุคลากร และผมต้องเผชิญกับปัญหาใหญ่ประการหนึ่ง นั่นคือ network latency เพื่อสร้างผู้ช่วยสัมภาษณ์ด้วย AI ที่ลื่นไหล เวลาในการตอบสนอง (response time) จะต้องต่ำกว่า 150ms

มนุษย์จะรู้สึกว่าความล่าช้าที่เกิน 200ms นั้นดูไม่เป็นธรรมชาติ เพื่อให้ความหน่วงอยู่ภายใต้ขีดจำกัดนี้ ทุกขั้นตอนใน pipeline จะต้องทำงานอย่างรวดเร็ว: • Audio capture (การบันทึกเสียง) • Streaming (การสตรีม) • LLM inference (การประมวลผล LLM) • Text-to-Speech (การแปลงข้อความเป็นเสียง) • Audio playback (การเล่นเสียง)

การส่ง HTTP requests แบบมาตรฐานนั้นช้าเกินไปสำหรับงานนี้ คุณจำเป็นต้องประมวลผลข้อมูลที่ฝั่ง client

Voice Activity Detection (VAD) คืออุปสรรคด่านแรก คุณต้องรู้ให้แน่ชัดว่าผู้ใช้เริ่มพูดและหยุดพูดเมื่อใด เพื่อป้องกันไม่ให้ส่งเสียงเงียบไปยังเซิร์ฟเวอร์ของคุณ

ผมใช้ JavaScript AudioWorklet ในการแก้ปัญหานี้ ซึ่งจะย้ายการประมวลผลเสียง PCM แบบดิบไปยัง thread แยกต่างหาก ช่วยให้ main UI thread ว่างอยู่เสมอ ซึ่งหมายความว่า AI จะยังคงทำงานอยู่เบื้องหลังได้โดยไม่ทำให้เบราว์เซอร์หรือ IDE ของผู้ใช้ช้าลง

การวิเคราะห์โค้ดแบบ Real-time เป็นอีกหนึ่งความท้าทาย ระบบต้องเข้าใจทั้งเสียงและโค้ดใน editor ผมใช้ WebSockets เพื่อซิงค์ข้อมูลจาก text editor เข้ากับเสียงที่ป้อนเข้ามา วิธีนี้ช่วยให้ AI สามารถตรวจจับบั๊กหรือแนะนำการปรับปรุงโค้ด (optimizations) ได้ในขณะที่ผู้ใช้กำลังพิมพ์

หากคุณต้องการเตรียมตัวสำหรับการสัมภาษณ์ทางเทคนิค ลองทำตามขั้นตอนเหล่านี้:

  • ฝึกคิดดังๆ (thinking aloud) อธิบายตรรกะของคุณในขณะที่เขียนโค้ด
  • ใช้การจำลองด้วย AI เพื่อรับรายงานเกี่ยวกับเวลาในการตอบสนองและความลื่นไหลในการเขียนโค้ดของคุณ

การสร้างแอปพลิเคชันเสียงที่มี latency ต่ำ จำเป็นต้องสร้างสมดุลระหว่างการบีบอัดเสียง (audio compression) และประสิทธิภาพของเซิร์ฟเวอร์

คุณจัดการกับการสตรีมเสียงในโปรเจกต์ของคุณอย่างไร? คุณใช้โมเดล VAD ในเบราว์เซอร์หรือไม่?

ร่วมแบ่งปันความคิดเห็นของคุณได้ในคอมเมนต์

แหล่งที่มา: https://dev.to/websterliu/oltre-i-150ms-come-ho-ridotto-la-latenza-per-creare-un-assistente-vocale-ai-in-tempo-reale-1jj5