VoxLock: 음성 에이전트를 위한 등록 단계 없는 목표 화자 추출 (Target-Speaker Extraction for Voice Agents Without an Enrollment Step)

음성 에이전트의 인식기는 마이크 근처에 있는 모든 사람의 말을 전사합니다. VoxLock은 공개된 REAL-TSE 기반 모델을 단일 GPU에서 미세 조정하여 만든 27M 파라미터의 인과적 목표 화자 추출 모델입니다. 이 모델은 통화 자체에서 발신자의 음성 샘플을 추출합니다(기본적으로 처음 15초를 사용하며, 스트리밍 모드에서는 3초를 들은 후 시작). 이후 해당 사람의 음성만 유지하고 주변 소음을 제거한 후 음성 인식으로 전달합니다.

음성 에이전트의 인식기는 마이크 근처에 있는 모든 사람의 말을 전사합니다. VoxLock은 공개된 REAL-TSE 기반 모델을 단일 GPU에서 미세 조정하여 만든 27M 파라미터의 인과적 목표 화자 추출 모델입니다. 이 모델은 통화 자체에서 발신자의 음성 샘플을 추출합니다(기본적으로 처음 15초를 사용하며, 스트리밍 모드에서는 3초를 들은 후 시작). 이후 해당 사람의 음성만 유지하고 주변 소음을 제거한 후 음성 인식으로 전달합니다.

좋아요 3 · 코드 스타 수 88

이유

  • 저자는 Krisp의 실제 녹음 265개에서 단어 오류율을 23.21%에서 4.95%으로 낮췄다고 주장하며, 이는 Krisp의 최고급 유료 필터링과 유의미한 차이가 없습니다. 또한 학습에 사용되지 않은 AMI 회의 구간에서는 42.95%에서 10.63%로 개선되었습니다.
  • 경량 및 실시간 처리 가능: 8비트 모델은 CPU 스레드 하나에서 77%의 리소스로 한 통의 통화를 처리할 수 있으며, 알고리즘 지연은 24ms입니다. ONNX는 int8 / fp16 / fp32 등 다양한 정밀도를 지원합니다.
  • 간편한 통합: pip install voxlock을 통해 설치할 수 있으며, Pipecat 오디오 필터와 LiveKit Agents 플러그인이 포함되어 있고, sherpa-onnx 2.0.1부터 내장되어 있습니다. 모델, 코드 및 파일별 점수가 모두 공개되어 있으며, 라이선스는 Apache-2.0입니다.

사용법

  • 명령줄: pip install voxlock → voxlock call.wav -o caller.wav (첫 실행 시 모델이 자동으로 다운로드됩니다).
  • Python 스트리밍: vl = voxlock.VoxLock(threads=1); stream = vl.live()를 설정한 후, 16kHz 오디오 청크를 받을 때마다 stream.push(chunk)을 호출하고, 종료 시 stream.flush()를 호출합니다. 이미 발신자 샘플이 있는 경우 vl.stream(sample)을 사용하여 첫 청크부터 격리를 시작할 수 있습니다.
  • 음성 에이전트: pip install "voxlock[pipecat]" 설치 후 VoxLockFilter()를 audio_in_filter로 설정합니다. LiveKit의 경우 "voxlock[livekit]"을 설치하고 noise_cancellation으로 전달합니다.
  • 브라우저 체험: Hugging Face Space arbazsiddiqui/voxlock에서 확인하세요.

리스크

  • 학습 데이터는 영어(LibriSpeech, AMI)이며, 모델 카드의 언어는 영어로 표기되어 있어 중국어 등 다른 언어에 대한 성능은 보고되지 않았습니다.
  • 처음 몇 초 동안은 통화 시작 부분에서 자동으로 발신자를 찾아야 하므로, 시작 부분에 다른 사람이 말하고 있을 경우 잘못된 사람을 식별할 수 있습니다. 이 경우 sample을 수동으로 전달하여 회피할 수 있습니다. 상용 제품과의 비교는 저자가 직접 테스트한 결과입니다.
  • 개인 개발자 프로젝트이며, 평가 스크립트와 파일별 결과는 저장소의 bench/ 폴더에 있어 직접 확인할 수 있습니다.

열기 · 코드 · Hugging Face 논문 페이지

Hugging Face Daily Papers

최신 AI 소식 보기