Runtime v2.81 · Cập nhật 30 thg 9, 2026

Audio

Giá trị âm thanh chỉ đọc dùng để nhận diện tiếng động trong app hoặc game.

Cú pháp

Audio(name)

Tham số khởi tạo

TênMô tả
nameString
Tên mẫu đã tạo trong Trình quản lý mẫu của macro hiện tại; bắt buộc, không được rỗng và không phải đường dẫn tệp. Nạp mẫu ngay khi gọi, kể cả mẫu đã khôi phục hoặc trong gói được bảo vệ bằng mã hóa; mẫu thiếu hoặc hỏng sẽ báo lỗi. Backup/Store lưu nguồn đã chọn cùng các mẫu của macro: tối đa 32 mẫu WAV PCM16 mono 48 kHz, mỗi mẫu tối đa 10 giây, tổng tối đa 4 MiB.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định

Giá trị trả về

Audio

Hành vi / tác động

Giá trị âm thanh chỉ đọc dùng để nhận diện tiếng động trong app hoặc game. Dùng Audio(name) để nạp mẫu đã lưu, hoặc Audio.recent(duration_ms) để lấy đoạn âm thanh vừa thu. Thu và so khớp trên thiết bị; bộ đệm nghe liên tục không được tải lên và script không truy cập âm thanh thô (PCM).

Thực thi

  • Chờ hoàn tất: Tùy điều kiện
  • An toàn khi chạy đồng thời: Không bảo đảm
  • Chạy song song: Tùy điều kiện

Chi phí thực thi và thời gian chờ tùy thao tác được mô tả. Giữ giá trị có thể thay đổi trong luồng sở hữu; việc chia sẻ đối tượng tùy ý giữa các luồng không có bảo đảm an toàn chung.

Ví dụ

# Nhận diện mẫu âm thanh cục bộ sau khi bật nghe
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()

Lỗi / giới hạn

Không có giới hạn bổ sung được ghi nhận; tuân thủ hợp đồng tham số và hành vi ở trên.

API liên quan

Không có

Thuộc tính

TênMô tả
nameString | None
Tên mẫu đã lưu, hoặc None với snapshot gần nhất.
duration_msNumber
Độ dài snapshot tính bằng mili giây.
start_msNumber
Thời điểm bắt đầu tính bằng mili giây; bằng 0 với mẫu có tên, tính từ đầu phiên nghe với snapshot gần nhất.
end_msNumber
Thời điểm kết thúc không bao gồm, tính bằng mili giây trên cùng mốc thời gian với start_ms.
Ví dụ khởi tạo
# Nạp mẫu đã lưu trong macro này
audio = Audio("alert")

Phương thức

5 phương thức

Audio.start

Bắt đầu nghe âm thanh từ app đã chọn, không dùng microphone.

Cú pháp

Audio.start()

Tham số

Không có

Giá trị trả về

None

Hành vi / tác động

Bắt đầu nghe âm thanh từ app đã chọn, không dùng microphone. Cần Android 10+, quyền ghi âm, đồng ý MediaProjection và app nguồn cho phép thu âm thanh. Gọi lại khi đang nghe giữ nguyên bộ đệm. Bắt đầu lại sau stop sẽ đặt lại mốc thời gian phiên; hãy đặt lại cả mốc phát hiện đã lưu. Pause xóa lịch sử, nhưng Resume giữ mốc bắt đầu của phiên cũ và tính cả khoảng thời gian tạm dừng. Thiếu quyền, cấu hình hoặc phiên thu sẽ báo lỗi.

Thực thi

  • Chờ hoàn tất: Tùy điều kiện
  • An toàn khi chạy đồng thời: Không bảo đảm
  • Chạy song song: Tùy điều kiện

Chi phí thực thi và thời gian chờ tùy thao tác được mô tả. Giữ giá trị có thể thay đổi trong luồng sở hữu; việc chia sẻ đối tượng tùy ý giữa các luồng không có bảo đảm an toàn chung.

Ví dụ

# Bắt đầu thu âm thanh từ app đã cấu hình sau khi được cấp quyền và đồng ý
Audio.start()

Lỗi / giới hạn

Không có giới hạn bổ sung được ghi nhận; tuân thủ hợp đồng tham số và hành vi ở trên.

API liên quan

Audio.stop

Dừng thu âm thanh và xóa bộ đệm.

Cú pháp

Audio.stop()

Tham số

Không có

Giá trị trả về

None

Hành vi / tác động

Dừng thu âm thanh và xóa bộ đệm. Các giá trị âm thanh đã trả về vẫn dùng được; phiên chụp màn hình đang được nơi khác sử dụng vẫn chạy. Kết thúc macro cũng giải phóng phiên thu âm thanh.

Thực thi

  • Chờ hoàn tất: Tùy điều kiện
  • An toàn khi chạy đồng thời: Không bảo đảm
  • Chạy song song: Tùy điều kiện

Chi phí thực thi và thời gian chờ tùy thao tác được mô tả. Giữ giá trị có thể thay đổi trong luồng sở hữu; việc chia sẻ đối tượng tùy ý giữa các luồng không có bảo đảm an toàn chung.

Ví dụ

# Giải phóng bộ thu âm thanh đã cấu hình
Audio.stop()

Lỗi / giới hạn

Không có giới hạn bổ sung được ghi nhận; tuân thủ hợp đồng tham số và hành vi ở trên.

API liên quan

Audio.recent

Lấy đoạn âm thanh vừa thu thành một bản sao độc lập, không chờ thu thêm.

Cú pháp

Audio.recent(duration_ms)

Tham số

TênMô tả
duration_msNumber (1..10000)
Thời lượng bắt buộc, là số nguyên từ 1 đến 10000 mili giây.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định

Giá trị trả về

Audio

Hành vi / tác động

Lấy đoạn âm thanh vừa thu thành một bản sao độc lập, không chờ thu thêm. Chỉ lấy được trong 10 giây gần nhất; không thể lấy âm thanh đã phát trước khi bắt đầu nghe. Chưa đủ lịch sử hoặc bộ thu không sẵn sàng sẽ báo lỗi. Chỉ có im lặng chưa đủ để kết luận app nguồn chặn thu âm thanh.

Thực thi

  • Chờ hoàn tất: Tùy điều kiện
  • An toàn khi chạy đồng thời: Không bảo đảm
  • Chạy song song: Tùy điều kiện

Chi phí thực thi và thời gian chờ tùy thao tác được mô tả. Giữ giá trị có thể thay đổi trong luồng sở hữu; việc chia sẻ đối tượng tùy ý giữa các luồng không có bảo đảm an toàn chung.

Ví dụ

# App nguồn phải đang phát; cần có ít nhất 500 ms dữ liệu lịch sử
Audio.start()
wait(600)
clip = Audio.recent(500)
print(clip.duration_ms)

Lỗi / giới hạn

Không có giới hạn bổ sung được ghi nhận; tuân thủ hợp đồng tham số và hành vi ở trên.

API liên quan

Audio.match

Trượt mẫu tham chiếu trên snapshot và trả mức tương đồng tốt nhất.

Cú pháp

audio.match(sample, threshold)

Tham số

TênMô tả
sampleAudio
Giá trị âm thanh tham chiếu cần tìm bên trong giá trị âm thanh này.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định
thresholdNumber (0..1)
Số hữu hạn bắt buộc từ 0 đến 1. Hiệu chỉnh bằng những lần thu độc lập; 0.85 chỉ là ví dụ, không phải ngưỡng khuyến nghị cho mọi âm thanh.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định

Giá trị trả về

AudioMatch

Hành vi / tác động

Trượt mẫu tham chiếu trên snapshot và trả mức tương đồng tốt nhất. Dùng 64 dải biên độ mel đã chuẩn hóa và lấy trung bình mức tương đồng qua các khung tham chiếu có tín hiệu; đoạn bị thiếu âm làm giảm điểm. Đoạn im lặng không được tính là khớp. Không nhận dạng lời nói hoặc hiệu chỉnh tốc độ, cao độ. Mẫu dài hơn clip là lỗi. Hiệu chỉnh lại ngưỡng sau khi cập nhật bộ so khớp bằng những lần thu độc lập.

Thực thi

  • Chờ hoàn tất: Tùy điều kiện
  • An toàn khi chạy đồng thời: Không bảo đảm
  • Chạy song song: Tùy điều kiện

Chi phí thực thi và thời gian chờ tùy thao tác được mô tả. Giữ giá trị có thể thay đổi trong luồng sở hữu; việc chia sẻ đối tượng tùy ý giữa các luồng không có bảo đảm an toàn chung.

Ví dụ

# Lưu mẫu âm báo trong Trình quản lý mẫu trước khi chạy ví dụ này
sample = Audio("alert")
Audio.start()
wait(1500)
clip = Audio.recent(1500)
result = clip.match(sample, 0.85)
print(result)
Audio.stop()

Lỗi / giới hạn

Không có giới hạn bổ sung được ghi nhận; tuân thủ hợp đồng tham số và hành vi ở trên.

API liên quan

Audio.find

Nghe tìm mẫu tham chiếu này trong âm thanh mới suốt timeout_ms mili giây, trả AudioMatch đầu tiên hoặc None nếu không tìm thấy.

Cú pháp

audio.find(timeout_ms, threshold)

Tham số

TênMô tả
timeout_msNumber (0..2147483647)
Thời lượng cửa sổ thu bắt buộc, là số nguyên từ 0 đến 2147483647 mili giây. Không tính thời gian macro tạm dừng. Ranh giới cửa sổ được ước lượng từ lúc recorder đọc xong, không dùng timestamp phần cứng.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định
thresholdNumber (0..1)
Số hữu hạn bắt buộc từ 0 đến 1. Hiệu chỉnh bằng những lần thu độc lập; 0.85 chỉ là ví dụ, không phải ngưỡng khuyến nghị cho mọi âm thanh.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định

Giá trị trả về

AudioMatch | None

Hành vi / tác động

Nghe tìm mẫu tham chiếu này trong âm thanh mới suốt timeout_ms mili giây, trả AudioMatch đầu tiên hoặc None nếu không tìm thấy. Tự bật nguồn thu đã cấu hình nếu cần và giữ thu đến Audio.stop() hoặc khi macro kết thúc. Chỉ xét âm thanh nhận sau khi lời gọi đăng ký nghe. Quét các đoạn chồng lấn liên tục trên lưới 10 ms, tái sử dụng phổ qua ranh giới khối dữ liệu; tránh khoảng trống do kiểm tra định kỳ nhưng không bảo đảm nhận diện đúng. Với mẫu dài ít nhất 100 ms và có đủ tín hiệu, kết quả gần như khớp tuyệt đối (điểm từ 0,9999) sẽ trả ngay khi nhận đủ mẫu. Các kết quả khớp mạnh khác (điểm từ 0,98) có thể xét thêm tối đa 20 ms để xác định vị trí; kết quả yếu hơn dùng cửa sổ tối đa 50 ms. Nếu điểm lần đầu đạt mức khớp mạnh gần cuối cửa sổ này, hệ thống xét thêm một lần tối đa 20 ms. Mọi kết quả đều phải đạt ngưỡng đã đặt. Timeout giới hạn cửa sổ thu; xử lý dữ liệu hợp lệ có thể làm tăng độ trễ. Giá trị 0 trả None mà không bật thu. Pause macro bỏ dữ liệu chờ và tạm dừng timeout; Resume tìm trên đoạn mới. Mất phiên thu, tràn dữ liệu hoặc âm thanh hỏng là lỗi, không trả None.

Thực thi

  • Chờ hoàn tất: Tùy điều kiện
  • An toàn khi chạy đồng thời: Không bảo đảm
  • Chạy song song: Tùy điều kiện

Chi phí thực thi và thời gian chờ tùy thao tác được mô tả. Giữ giá trị có thể thay đổi trong luồng sở hữu; việc chia sẻ đối tượng tùy ý giữa các luồng không có bảo đảm an toàn chung.

Ví dụ

# Chờ âm thanh mới và xử lý khi hết thời gian
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()

Lỗi / giới hạn

Không có giới hạn bổ sung được ghi nhận; tuân thủ hợp đồng tham số và hành vi ở trên.

API liên quan