ข้ามไปยังเนื้อหาหลัก

วัดความหน่วงของตัวอักษรแรกอย่างไร: นิยามและเกณฑ์การทดสอบของเรา

ความหน่วงของตัวอักษรแรก (first-token latency) ในการรู้จำเสียงแบบสตรีมมิง มักถูกสรุปเป็นประโยคเดียวว่า หลังเริ่มพูดนานแค่ไหนจึงเห็นตัวอักษรแรก ประโยคนี้ยังไม่ได้บอกสามเรื่อง คือเริ่มจับเวลาตอนไหน หยุดจับตอนไหน และทดสอบภายใต้เงื่อนไขอะไร เงื่อนไขต่างกัน ระบบเดียวกันก็อาจวัดได้ตัวเลขต่างกันมาก บทความนี้อธิบายว่าความหน่วงของตัวอักษรแรกในตารางผลทดสอบของเราวัดอย่างไร และต่างจากค่าที่คุณเห็นในหน้าถอดเสียงและสร้างเสียงพูดแบบสดอย่างไร

1. เรานิยามความหน่วงของตัวอักษรแรกอย่างไร

เซิร์ฟเวอร์รู้จำเสียงแบบสตรีมมิงส่งผลลัพธ์ชั่วคราว (partial) กลับมาระหว่างที่ยังรับเสียงอยู่ ผลลัพธ์ชั่วคราวคือข้อความที่รู้จำได้ ณ ขณะนั้นของประโยคที่กำลังพูด และอาจถูกแก้ไขภายหลัง

ความหน่วงของตัวอักษรแรกพิจารณาเฉพาะผลลัพธ์ชั่วคราวแรกที่มีข้อความ ซึ่งก็คือตัวอักษรแรกที่รู้จำได้ ผลลัพธ์ที่ว่างเปล่าไม่นับ เพราะผู้ใช้ยังไม่เห็นตัวอักษรใดเลย

ความหน่วงของตัวอักษรแรก
= เวลาที่ตัวอักษรแรกส่งกลับมา
− เวลาที่ส่งเฟรมเสียงแรกเข้าบริการ

2. ทำไมจึงวัดภายในศูนย์ข้อมูล

จุดเริ่มจับเวลาไม่ใช่ตอนที่ผู้ใช้กดไมโครโฟน หลังกดผู้ใช้อาจยังไม่เริ่มพูด ถ้านับจากการกด สิ่งที่วัดได้คือเวลาตอบสนองของคน การทดสอบจึงไม่ใช้คน แต่ให้โปรแกรมทดสอบส่งเสียงจากชุดทดสอบเข้าบริการทีละเฟรม

โปรแกรมทดสอบกับบริการรู้จำเสียงอยู่ในศูนย์ข้อมูลเดียวกัน เวลาไป-กลับของเครือข่ายจึงสั้น ตัวเลขที่ได้ส่วนใหญ่คือเวลาที่เซิร์ฟเวอร์ใช้ตั้งแต่รับเสียงจนส่งตัวอักษรแรกกลับ ได้แก่ การถอดรหัส การรู้จำเสียง และการสร้างผลลัพธ์แรก การบัฟเฟอร์เสียงบนอุปกรณ์ของผู้ใช้ และเครือข่ายระหว่างผู้ใช้กับศูนย์ข้อมูล ไม่อยู่ในตัวเลขนี้

3. เงื่อนไขใดบ้างที่ต้องตรึงไว้

เปลี่ยนการ์ดจอ หรือเพิ่มจำนวนสตรีมพร้อมกันอีกไม่กี่สตรีม ความหน่วงของตัวอักษรแรกก็เปลี่ยน ตอนประเมินเราตรึงเงื่อนไขต่อไปนี้ และระบุไว้คู่กับตัวเลข:

  • GPU ฝั่งเซิร์ฟเวอร์: [รุ่น GPU]
  • จำนวนสตรีมพร้อมกัน: [N] สตรีม
  • เวอร์ชันโมเดลและวันที่ทดสอบ: [เวอร์ชัน], [วันที่]
  • ชุดทดสอบ: [ชุดทดสอบ]

ถ้าขาดข้อใดข้อหนึ่ง ตัวเลขนั้นจะนำไปเทียบกับตัวเลขจากที่อื่นโดยตรงไม่ได้

4. P50 และ P90 บอกอะไร

เราวัดความหน่วงของตัวอักษรแรกหนึ่งค่าต่อเสียงทดสอบหนึ่งไฟล์ แล้วเรียงผลทั้งหมดจากน้อยไปมาก

P50: ผลครึ่งหนึ่งไม่ช้ากว่าค่านี้
P90: ผลร้อยละ 90 ไม่ช้ากว่าค่านี้

P50 คือค่ามัธยฐานที่สะท้อนกรณีทั่วไป ส่วน P90 บอกด้านที่ช้า โดยสิบครั้งจะมีหนึ่งครั้งที่ช้ากว่าค่านี้ ผู้ใช้มักสังเกตเห็นจังหวะที่ช้า ดังนั้นถ้าดูแค่ค่าเฉลี่ยหรือ P50 ระบบจะดูลื่นกว่าที่รู้สึกจริง ค่าเฉลี่ยยังถูกดึงให้สูงขึ้นด้วยค่าที่ช้าผิดปกติไม่กี่ครั้ง ขณะเดียวกันก็ซ่อนปัญหาความหน่วงปลายหางไว้ใต้ผลลัพธ์ส่วนใหญ่ที่เร็ว เราจึงไม่ใช้ค่าเฉลี่ย ตารางความหน่วงในหน้าผลทดสอบสาธารณะแสดงครบทั้ง P50 และ P90

5. ค่าที่เห็นในหน้าถอดเสียงและสร้างเสียงพูดแบบสด

เมื่อคุณพูดในหน้าถอดเสียงและสร้างเสียงพูดแบบสด ช่อง “คำแรก” จะแสดงค่าที่วัดได้ในเซสชันของคุณ ก่อนเริ่มพูด ช่องนี้แสดงค่า P50 จากตารางผลทดสอบ

ค่านี้จับเวลาในเบราว์เซอร์ด้วย performance.now() และวัดต่างจากตาราง:

  • จุดเริ่มคือเฟรมเสียงแรกที่มีพลังงานเสียงพูด เมื่อค่ารากที่สองของกำลังสองเฉลี่ย (RMS) ที่ปรับสเกลแล้วของเฟรมหนึ่งถึง 0.015 ถือว่ามีคนกำลังพูด และต้นเฟรมนั้นคือจุดเริ่ม ถ้าทั้งเซสชันไม่มีเฟรมใดถึงเกณฑ์ จุดเริ่มจะถอยไปที่ต้นเฟรมแรกที่ส่งออก
  • นับรวมการบัฟเฟอร์เสียงตอนบันทึก เบราว์เซอร์สะสมสัญญาณเสียงครบ 2048 แซมเพิล (Sample) จึงส่งออกเป็นหนึ่งเฟรม ที่ 16 kHz คือ 128 ms ที่ 48 kHz ประมาณ 43 ms จุดเริ่มคือต้นเฟรม เมื่อเฟรมถูกส่งออก เวลาจึงผ่านไปเต็มหนึ่งเฟรมแล้ว
  • นับรวมเครือข่ายระหว่างคุณกับเซิร์ฟเวอร์ และการประมวลผลที่เซิร์ฟเวอร์

ค่านี้จึงสะท้อนอุปกรณ์และเครือข่ายของคุณในขณะนั้น เหมาะสำหรับดูภาพรวมของเส้นทางทั้งหมด แต่ไม่เหมาะนำไปเทียบกับตาราง ถ้าเสียงรบกวนดังเกินเกณฑ์ จุดเริ่มจะเลื่อนไปอยู่ตรงที่เสียงรบกวนเริ่ม และค่าที่อ่านได้จะสูงขึ้น

6. ควรถามอะไรเมื่ออ่านตัวเลขของที่อื่น

  • เริ่มจับเวลาตอนไหน: ตอนกด ตอนเฟรมเสียงแรก หรือตอนเฟรมแรกที่มีเสียงพูด
  • หยุดจับตอนไหน: ตัวอักษรแรก หรือผลลัพธ์สุดท้ายของประโยค
  • วัดที่ไหน: ภายในศูนย์ข้อมูล หรือในเบราว์เซอร์ของผู้ใช้ และใช้ฮาร์ดแวร์อะไร
  • เป็นค่า P50, P90 หรือค่าเฉลี่ย

เมื่อทั้งสี่คำถามมีคำตอบ ตัวเลขสองตัวจึงเทียบกันได้ ถ้าอยากดูค่าบนอุปกรณ์ของคุณเอง ลองพูดสักสองสามประโยคใส่ไมโครโฟนที่หน้าถอดเสียงและสร้างเสียงพูดแบบสด

ทีมงาน DataArc