ในหน้านี้
ข้อมูล JSON ต้นฉบับ ↗ Runtime v2.81 · อัปเดต 30 ก.ย. 2569
ค่าเสียงแบบอ่านอย่างเดียวสำหรับตรวจจับเสียงในแอปหรือเกม ใช้ Audio(name) เพื่อโหลดตัวอย่างที่บันทึกไว้ หรือ Audio.recent(duration_ms) เพื่อคัดลอกเสียงที่เพิ่งจับมา การจับและจับคู่เสียงทำบนอุปกรณ์ โดยไม่อัปโหลดบัฟเฟอร์การฟังต่อเนื่องและไม่ให้สคริปต์เข้าถึงข้อมูลเสียงดิบ (PCM)
พารามิเตอร์สำหรับสร้างออบเจ็กต์ พฤติกรรม / ผลข้างเคียง ค่าเสียงแบบอ่านอย่างเดียวสำหรับตรวจจับเสียงในแอปหรือเกม ใช้ Audio(name) เพื่อโหลดตัวอย่างที่บันทึกไว้ หรือ Audio.recent(duration_ms) เพื่อคัดลอกเสียงที่เพิ่งจับมา การจับและจับคู่เสียงทำบนอุปกรณ์ โดยไม่อัปโหลดบัฟเฟอร์การฟังต่อเนื่องและไม่ให้สคริปต์เข้าถึงข้อมูลเสียงดิบ (PCM)
การทำงาน รอให้เสร็จ: ขึ้นอยู่กับเงื่อนไข ความปลอดภัยเมื่อทำงานพร้อมกัน: ไม่รับประกัน การทำงานแบบขนาน: ขึ้นอยู่กับเงื่อนไข ระยะเวลาประมวลผลและการรอขึ้นอยู่กับการทำงานที่อธิบายไว้ เก็บค่าที่เปลี่ยนแปลงได้ไว้ในโฟลว์เจ้าของ ไม่มีการรับประกันความปลอดภัยทั่วไปเมื่อแชร์ออบเจ็กต์ระหว่างโฟลว์
ตัวอย่าง # ตรวจจับตัวอย่างเสียงในเครื่องหลังเริ่มฟัง
sample = Audio("alert")
Audio.start()
wait(2000)
clip = Audio.recent(duration_ms=2000)
result = clip.match(sample, threshold=0.85)
if result.matched:
print(result.score, result.start_ms, result.end_ms)
Audio.stop()ข้อผิดพลาด / ข้อจำกัด ไม่มีข้อจำกัดเพิ่มเติมที่ระบุไว้ ให้ปฏิบัติตามพารามิเตอร์และพฤติกรรมข้างต้น
# โหลดตัวอย่างที่บันทึกในมาโครนี้
audio = Audio("alert")เริ่มฟังเสียงจากแอปที่เลือก ไม่ใช้ไมโครโฟน ต้องใช้ Android 10 ขึ้นไป สิทธิ์บันทึกเสียง ความยินยอม MediaProjection และแอปต้นทางที่อนุญาตให้จับเสียง เรียกซ้ำขณะฟังจะรักษาบัฟเฟอร์เดิม การเริ่มใหม่หลัง stop จะรีเซ็ตเวลาของเซสชัน จึงต้องรีเซ็ตเวลาตรวจพบที่บันทึกไว้ด้วย Pause ล้างประวัติ แต่ Resume ยังคงนับเวลาจากจุดเริ่มต้นของเซสชันเดิมและรวมช่วงที่หยุดชั่วคราว หากขาดสิทธิ์ การตั้งค่า หรือเซสชันจับเสียง จะรายงานข้อผิดพลาด
พฤติกรรม / ผลข้างเคียง เริ่มฟังเสียงจากแอปที่เลือก ไม่ใช้ไมโครโฟน ต้องใช้ Android 10 ขึ้นไป สิทธิ์บันทึกเสียง ความยินยอม MediaProjection และแอปต้นทางที่อนุญาตให้จับเสียง เรียกซ้ำขณะฟังจะรักษาบัฟเฟอร์เดิม การเริ่มใหม่หลัง stop จะรีเซ็ตเวลาของเซสชัน จึงต้องรีเซ็ตเวลาตรวจพบที่บันทึกไว้ด้วย Pause ล้างประวัติ แต่ Resume ยังคงนับเวลาจากจุดเริ่มต้นของเซสชันเดิมและรวมช่วงที่หยุดชั่วคราว หากขาดสิทธิ์ การตั้งค่า หรือเซสชันจับเสียง จะรายงานข้อผิดพลาด
การทำงาน รอให้เสร็จ: ขึ้นอยู่กับเงื่อนไข ความปลอดภัยเมื่อทำงานพร้อมกัน: ไม่รับประกัน การทำงานแบบขนาน: ขึ้นอยู่กับเงื่อนไข ระยะเวลาประมวลผลและการรอขึ้นอยู่กับการทำงานที่อธิบายไว้ เก็บค่าที่เปลี่ยนแปลงได้ไว้ในโฟลว์เจ้าของ ไม่มีการรับประกันความปลอดภัยทั่วไปเมื่อแชร์ออบเจ็กต์ระหว่างโฟลว์
ตัวอย่าง # เริ่มบันทึกเสียงจากแอปที่ตั้งค่าไว้หลังได้รับสิทธิ์และความยินยอม
Audio.start()ข้อผิดพลาด / ข้อจำกัด ไม่มีข้อจำกัดเพิ่มเติมที่ระบุไว้ ให้ปฏิบัติตามพารามิเตอร์และพฤติกรรมข้างต้น
หยุดจับเสียงและล้างบัฟเฟอร์ ค่าเสียงที่คืนไปแล้วจะยังใช้ได้ และการจับภาพหน้าจอที่ส่วนอื่นใช้อยู่ยังทำงานต่อ เมื่อมาโครจบจะคืนทรัพยากรจับเสียงด้วย
พฤติกรรม / ผลข้างเคียง หยุดจับเสียงและล้างบัฟเฟอร์ ค่าเสียงที่คืนไปแล้วจะยังใช้ได้ และการจับภาพหน้าจอที่ส่วนอื่นใช้อยู่ยังทำงานต่อ เมื่อมาโครจบจะคืนทรัพยากรจับเสียงด้วย
การทำงาน รอให้เสร็จ: ขึ้นอยู่กับเงื่อนไข ความปลอดภัยเมื่อทำงานพร้อมกัน: ไม่รับประกัน การทำงานแบบขนาน: ขึ้นอยู่กับเงื่อนไข ระยะเวลาประมวลผลและการรอขึ้นอยู่กับการทำงานที่อธิบายไว้ เก็บค่าที่เปลี่ยนแปลงได้ไว้ในโฟลว์เจ้าของ ไม่มีการรับประกันความปลอดภัยทั่วไปเมื่อแชร์ออบเจ็กต์ระหว่างโฟลว์
ตัวอย่าง # ปล่อยตัวบันทึกเสียงที่ตั้งค่าไว้
Audio.stop()ข้อผิดพลาด / ข้อจำกัด ไม่มีข้อจำกัดเพิ่มเติมที่ระบุไว้ ให้ปฏิบัติตามพารามิเตอร์และพฤติกรรมข้างต้น
คัดลอกเสียงล่าสุดเป็นสแนปช็อตอิสระโดยไม่รอข้อมูลเพิ่ม เรียกได้เฉพาะ 10 วินาทีล่าสุด และไม่สามารถเรียกคืนเสียงที่เล่นก่อนเริ่มฟัง หากประวัติไม่พอหรือเครื่องบันทึกไม่พร้อมจะรายงานข้อผิดพลาด ความเงียบเพียงอย่างเดียวไม่ยืนยันว่าแอปต้นทางบล็อกการจับเสียง
รูปแบบคำสั่ง Audio.recent(duration_ms)พฤติกรรม / ผลข้างเคียง คัดลอกเสียงล่าสุดเป็นสแนปช็อตอิสระโดยไม่รอข้อมูลเพิ่ม เรียกได้เฉพาะ 10 วินาทีล่าสุด และไม่สามารถเรียกคืนเสียงที่เล่นก่อนเริ่มฟัง หากประวัติไม่พอหรือเครื่องบันทึกไม่พร้อมจะรายงานข้อผิดพลาด ความเงียบเพียงอย่างเดียวไม่ยืนยันว่าแอปต้นทางบล็อกการจับเสียง
การทำงาน รอให้เสร็จ: ขึ้นอยู่กับเงื่อนไข ความปลอดภัยเมื่อทำงานพร้อมกัน: ไม่รับประกัน การทำงานแบบขนาน: ขึ้นอยู่กับเงื่อนไข ระยะเวลาประมวลผลและการรอขึ้นอยู่กับการทำงานที่อธิบายไว้ เก็บค่าที่เปลี่ยนแปลงได้ไว้ในโฟลว์เจ้าของ ไม่มีการรับประกันความปลอดภัยทั่วไปเมื่อแชร์ออบเจ็กต์ระหว่างโฟลว์
ตัวอย่าง # แอปต้นทางต้องกำลังเล่น และต้องมีข้อมูลย้อนหลังอย่างน้อย 500 ms
Audio.start()
wait(600)
clip = Audio.recent(500)
print(clip.duration_ms)ข้อผิดพลาด / ข้อจำกัด ไม่มีข้อจำกัดเพิ่มเติมที่ระบุไว้ ให้ปฏิบัติตามพารามิเตอร์และพฤติกรรมข้างต้น
เลื่อนตัวอย่างอ้างอิงไปบนสแนปช็อตนี้ แล้วคืนค่าความคล้ายที่ดีที่สุด ใช้แถบแอมพลิจูด mel ที่ปรับให้เป็นมาตรฐาน 64 แถบ และหาค่าเฉลี่ยความคล้ายจากเฟรมอ้างอิงที่มีสัญญาณ ช่วงที่เสียงขาดหายจะลดคะแนน ช่วงเงียบไม่ถือว่าตรงกัน ไม่มีการรู้จำคำพูดหรือปรับแก้ความเร็วและระดับเสียง หากตัวอย่างยาวกว่าคลิปจะรายงานข้อผิดพลาด หลังอัปเดตตัวจับคู่ ควรปรับเกณฑ์ใหม่ด้วยการบันทึกคนละครั้ง
รูปแบบคำสั่ง audio.match(sample, threshold)พฤติกรรม / ผลข้างเคียง เลื่อนตัวอย่างอ้างอิงไปบนสแนปช็อตนี้ แล้วคืนค่าความคล้ายที่ดีที่สุด ใช้แถบแอมพลิจูด mel ที่ปรับให้เป็นมาตรฐาน 64 แถบ และหาค่าเฉลี่ยความคล้ายจากเฟรมอ้างอิงที่มีสัญญาณ ช่วงที่เสียงขาดหายจะลดคะแนน ช่วงเงียบไม่ถือว่าตรงกัน ไม่มีการรู้จำคำพูดหรือปรับแก้ความเร็วและระดับเสียง หากตัวอย่างยาวกว่าคลิปจะรายงานข้อผิดพลาด หลังอัปเดตตัวจับคู่ ควรปรับเกณฑ์ใหม่ด้วยการบันทึกคนละครั้ง
การทำงาน รอให้เสร็จ: ขึ้นอยู่กับเงื่อนไข ความปลอดภัยเมื่อทำงานพร้อมกัน: ไม่รับประกัน การทำงานแบบขนาน: ขึ้นอยู่กับเงื่อนไข ระยะเวลาประมวลผลและการรอขึ้นอยู่กับการทำงานที่อธิบายไว้ เก็บค่าที่เปลี่ยนแปลงได้ไว้ในโฟลว์เจ้าของ ไม่มีการรับประกันความปลอดภัยทั่วไปเมื่อแชร์ออบเจ็กต์ระหว่างโฟลว์
ตัวอย่าง # บันทึกตัวอย่างเสียงเตือนใน Template Manager ก่อนเรียกใช้ตัวอย่างนี้
sample = Audio("alert")
Audio.start()
wait(1500)
clip = Audio.recent(1500)
result = clip.match(sample, 0.85)
print(result)
Audio.stop()ข้อผิดพลาด / ข้อจำกัด ไม่มีข้อจำกัดเพิ่มเติมที่ระบุไว้ ให้ปฏิบัติตามพารามิเตอร์และพฤติกรรมข้างต้น
ฟังเพื่อค้นหาเสียงอ้างอิงนี้ในเสียงใหม่เป็นเวลา timeout_ms มิลลิวินาที คืน AudioMatch แรก หรือ None หากไม่พบ เริ่มจับเสียงจากต้นทางที่ตั้งค่าไว้หากจำเป็น และจับต่อจนเรียก Audio.stop() หรือมาโครจบ พิจารณาเฉพาะเสียงที่ได้รับหลังคำสั่งนี้เริ่มสมัครรับข้อมูล สแกนช่วงเสียงที่ซ้อนทับกันอย่างต่อเนื่องทุก 10 ms โดยใช้สเปกตรัมซ้ำข้ามขอบเขตบล็อก ป้องกันช่องว่างจากการตรวจเป็นระยะ แต่ไม่รับประกันการรู้จำ สำหรับตัวอย่างเสียงที่ยาวอย่างน้อย 100 ms และมีสัญญาณเสียงเพียงพอ ผลที่ตรงกันเกือบสมบูรณ์ (คะแนนอย่างน้อย 0.9999) จะคืนทันทีเมื่อได้รับเสียงครบทั้งตัวอย่าง ผลที่ตรงกันมากอื่น ๆ (คะแนนอย่างน้อย 0.98) อาจตรวจตำแหน่งต่อได้สูงสุด 20 ms ส่วนผลที่อ่อนกว่านั้นใช้ช่วงตรวจเพิ่มสูงสุด 50 ms หากคะแนนเพิ่งตรงกันมากใกล้สิ้นสุดช่วงนั้น ระบบอาจตรวจตำแหน่งต่ออีกครั้งได้สูงสุด 20 ms ทุกผลต้องผ่านเกณฑ์ที่กำหนด Timeout จำกัดช่วงบันทึก การประมวลผลเสียงที่อยู่ในช่วงอาจเพิ่มความหน่วง ค่า 0 คืน None โดยไม่เริ่มจับเสียง Pause มาโครจะทิ้งเสียงที่รอและหยุดนับ timeout ส่วน Resume ค้นหาในช่วงเสียงใหม่ หากเซสชันหาย ข้อมูลล้น หรือเสียงเสียหาย จะรายงานข้อผิดพลาด ไม่ใช่ None
รูปแบบคำสั่ง audio.find(timeout_ms, threshold)ค่าที่ส่งกลับ AudioMatch | None
พฤติกรรม / ผลข้างเคียง ฟังเพื่อค้นหาเสียงอ้างอิงนี้ในเสียงใหม่เป็นเวลา timeout_ms มิลลิวินาที คืน AudioMatch แรก หรือ None หากไม่พบ เริ่มจับเสียงจากต้นทางที่ตั้งค่าไว้หากจำเป็น และจับต่อจนเรียก Audio.stop() หรือมาโครจบ พิจารณาเฉพาะเสียงที่ได้รับหลังคำสั่งนี้เริ่มสมัครรับข้อมูล สแกนช่วงเสียงที่ซ้อนทับกันอย่างต่อเนื่องทุก 10 ms โดยใช้สเปกตรัมซ้ำข้ามขอบเขตบล็อก ป้องกันช่องว่างจากการตรวจเป็นระยะ แต่ไม่รับประกันการรู้จำ สำหรับตัวอย่างเสียงที่ยาวอย่างน้อย 100 ms และมีสัญญาณเสียงเพียงพอ ผลที่ตรงกันเกือบสมบูรณ์ (คะแนนอย่างน้อย 0.9999) จะคืนทันทีเมื่อได้รับเสียงครบทั้งตัวอย่าง ผลที่ตรงกันมากอื่น ๆ (คะแนนอย่างน้อย 0.98) อาจตรวจตำแหน่งต่อได้สูงสุด 20 ms ส่วนผลที่อ่อนกว่านั้นใช้ช่วงตรวจเพิ่มสูงสุด 50 ms หากคะแนนเพิ่งตรงกันมากใกล้สิ้นสุดช่วงนั้น ระบบอาจตรวจตำแหน่งต่ออีกครั้งได้สูงสุด 20 ms ทุกผลต้องผ่านเกณฑ์ที่กำหนด Timeout จำกัดช่วงบันทึก การประมวลผลเสียงที่อยู่ในช่วงอาจเพิ่มความหน่วง ค่า 0 คืน None โดยไม่เริ่มจับเสียง Pause มาโครจะทิ้งเสียงที่รอและหยุดนับ timeout ส่วน Resume ค้นหาในช่วงเสียงใหม่ หากเซสชันหาย ข้อมูลล้น หรือเสียงเสียหาย จะรายงานข้อผิดพลาด ไม่ใช่ None
การทำงาน รอให้เสร็จ: ขึ้นอยู่กับเงื่อนไข ความปลอดภัยเมื่อทำงานพร้อมกัน: ไม่รับประกัน การทำงานแบบขนาน: ขึ้นอยู่กับเงื่อนไข ระยะเวลาประมวลผลและการรอขึ้นอยู่กับการทำงานที่อธิบายไว้ เก็บค่าที่เปลี่ยนแปลงได้ไว้ในโฟลว์เจ้าของ ไม่มีการรับประกันความปลอดภัยทั่วไปเมื่อแชร์ออบเจ็กต์ระหว่างโฟลว์
ตัวอย่าง # รอเสียงใหม่และจัดการเมื่อหมดเวลา
audio = Audio("alert")
result = audio.find(timeout_ms=5000, threshold=0.85)
if result is not None:
print(result.score, result.start_ms, result.end_ms)
Audio.stop()ข้อผิดพลาด / ข้อจำกัด ไม่มีข้อจำกัดเพิ่มเติมที่ระบุไว้ ให้ปฏิบัติตามพารามิเตอร์และพฤติกรรมข้างต้น