MahmoudAshraf97/whisper-diarization

Automatic Speech Recognition with Speaker Diarization based on OpenAI Whisper

해결하는 문제

음성 녹음에서 "누가 언제 말했는지"를 식별하는 문제를 해결합니다. 표준 음성 인식 도구는 음성을 텍스트로 변환할 수 있지만, 대화에서 서로 다른 발화자를 구분하지 못하는 경우가 많아 결과 텍스트에서 대화 흐름을 따라가기 어렵습니다.

작동 방식

이 프로젝트는 음성을 처리하기 위한 다단계 파이프라인을 구현합니다:

  1. 보컬 추출: 소스 분리 기술을 사용해 배경 잡음에서 보컬을 분리하여 임베딩 정확도를 향상시킵니다.
  2. 음성 인식: OpenAI Whisper를 사용하여 텍스트를 생성합니다.
  3. 타임스탬프 정렬: ctc-forced-aligner를 사용해 타임스탬프를 보정하고 동기화하여 시간 지연 오류를 줄입니다.
  4. 음성 활동 탐지 (VAD): MarbleNet을 사용해 발화 구간을 탐지하고 침묵 부분을 제외합니다.
  5. 발화자 임베딩: TitaNet을 사용해 각 구간에 대해 고유한 발화자 임베딩을 추출합니다.
  6. 연결: 식별된 발화자를 특정 단어와 타임스탬프에 매핑한 후, 문장 부호 모델을 사용해 최종 재정렬을 수행합니다.

대상 사용자

고정밀 발화자 분류(다른 발화자 식별)와 자동 음성-텍스트 변환을 필요로 하는 연구자 및 개발자입니다.

주요 특징

  • 하이브리드 아키텍처: ASR에는 Whisper, 발화자 분류에는 NVIDIA NeMo(MarbleNet 및 TitaNet)를 결합합니다.
  • 타임스탬프 보정: 시간 지연으로 인한 오류를 최소화하기 위해 강제 정렬 기능을 통합합니다.
  • 병렬 처리: 고용량 VRAM 시스템을 위한 실험적 병렬 모드(diarize_parallel.py)를 포함하여 처리 속도를 향상시킵니다.
  • 사용자 정의 가능: 다양한 Whisper 모델, 수동 언어 선택, 배치 크기 조정을 지원합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • Dispatch
  • 프로젝트