VoxLock: Trích xuất người nói mục tiêu cho tác nhân giọng nói mà không cần bước đăng ký giọng nói (Target-Speaker Extraction for Voice Agents Without an Enrollment Step)

Bộ nhận dạng của các tác nhân giọng nói thường chuyển ngữ tất cả lời nói của mọi người xung quanh micro. VoxLock là một mô hình trích xuất người nói mục tiêu nhân quả với 27M tham số, được tinh chỉnh từ baseline REAL-TSE công khai trên một GPU duy nhất: mô hình lấy một đoạn giọng nói của người gọi từ chính cuộc gọi làm mẫu (mặc định lấy 15 giây đầu tiên, chế độ stream bắt đầu sau khi nghe được 3 giây), sau đó chỉ giữ lại giọng của người này, loại bỏ tiếng nói của người khác, rồi chuyển sang cho hệ thống nhận dạng giọng nói.

Bộ nhận dạng của các tác nhân giọng nói thường chuyển ngữ tất cả lời nói của mọi người xung quanh micro. VoxLock là một mô hình trích xuất người nói mục tiêu nhân quả với 27M tham số, được tinh chỉnh từ baseline REAL-TSE công khai trên một GPU duy nhất: mô hình lấy một đoạn giọng nói của người gọi từ chính cuộc gọi làm mẫu (mặc định lấy 15 giây đầu tiên, chế độ stream bắt đầu sau khi nghe được 3 giây), sau đó chỉ giữ lại giọng của người này, loại bỏ tiếng nói của người khác, rồi chuyển sang cho hệ thống nhận dạng giọng nói.

Thích 3 · Số sao mã nguồn 88

Lý do

  • Tác giả tuyên bố đã giảm tỷ lệ lỗi từ (WER) từ 23.21% xuống 4.95% trên 265 bản ghi âm thực tế của Krisp, không khác biệt đáng kể so với bộ lọc trả phí tốt nhất của Krisp; trên các cửa sổ hội nghị AMI không dùng trong quá trình huấn luyện, tỷ lệ này giảm từ 42.95% xuống 10.63%.
  • Nhẹ và có thể xử lý thời gian thực: mô hình 8 bit chiếm 77% trên một luồng CPU để xử lý một cuộc gọi, độ trễ thuật toán là 24 ms; định dạng ONNX hỗ trợ nhiều mức độ chính xác như int8 / fp16 / fp32.
  • Dễ tích hợp: pip install voxlock, đi kèm bộ lọc âm thanh Pipecat và plugin LiveKit Agents, sherpa-onnx tích hợp sẵn từ phiên bản 2.0.1; mô hình, mã nguồn và điểm số từng tệp đều được mở, giấy phép Apache-2.0.

Cách sử dụng

  • Dòng lệnh: pip install voxlock → voxlock call.wav -o caller.wav (tự động tải mô hình lần đầu).
  • Python stream: vl = voxlock.VoxLock(threads=1); stream = vl.live(), mỗi khi nhận một đoạn âm thanh 16 kHz thì gọi stream.push(chunk), khi kết thúc gọi stream.flush(); nếu đã có mẫu người gọi, có thể dùng vl.stream(sample) để bắt đầu tách giọng ngay từ đoạn đầu tiên.
  • Tác nhân giọng nói: sau khi pip install "voxlock[pipecat]", đặt VoxLockFilter() làm audio_in_filter; với LiveKit dùng "voxlock[livekit]", truyền vào dưới dạng noise_cancellation.
  • Dùng thử trên trình duyệt: Hugging Face Space arbazsiddiqui/voxlock.

Rủi ro

  • Dữ liệu huấn luyện là tiếng Anh (LibriSpeech, AMI), thẻ mô hình ghi ngôn ngữ là tiếng Anh, hiệu quả trên tiếng Trung và các ngôn ngữ khác không được báo cáo.
  • Trong vài giây đầu, hệ thống tự động xác định người gọi từ phần đầu cuộc gọi; nếu người khác đang nói ở phần đầu, hệ thống có thể khóa nhầm người, có thể truyền thủ công sample để tránh; việc so sánh với các sản phẩm thương mại do chính tác giả thực hiện.
  • Đây là dự án cá nhân, các script đánh giá và kết quả từng tệp nằm trong thư mục bench/ của kho lưu trữ, người dùng có thể tự kiểm tra.

Mở · Mã nguồn · Trang bài báo trên Hugging Face

Hugging Face Daily Papers

Xem tin AI mới nhất