MahmoudAshraf97/whisper-diarization
Automatic Speech Recognition with Speaker Diarization based on OpenAI Whisper
해결하는 문제
음성 녹음에서 "누가 언제 말했는지"를 식별하는 문제를 해결합니다. 표준 음성 인식 도구는 음성을 텍스트로 변환할 수 있지만, 대화에서 서로 다른 발화자를 구분하지 못하는 경우가 많아 결과 텍스트에서 대화 흐름을 따라가기 어렵습니다.
작동 방식
이 프로젝트는 음성을 처리하기 위한 다단계 파이프라인을 구현합니다:
- 보컬 추출: 소스 분리 기술을 사용해 배경 잡음에서 보컬을 분리하여 임베딩 정확도를 향상시킵니다.
- 음성 인식: OpenAI Whisper를 사용하여 텍스트를 생성합니다.
- 타임스탬프 정렬:
ctc-forced-aligner를 사용해 타임스탬프를 보정하고 동기화하여 시간 지연 오류를 줄입니다. - 음성 활동 탐지 (VAD): MarbleNet을 사용해 발화 구간을 탐지하고 침묵 부분을 제외합니다.
- 발화자 임베딩: TitaNet을 사용해 각 구간에 대해 고유한 발화자 임베딩을 추출합니다.
- 연결: 식별된 발화자를 특정 단어와 타임스탬프에 매핑한 후, 문장 부호 모델을 사용해 최종 재정렬을 수행합니다.
대상 사용자
고정밀 발화자 분류(다른 발화자 식별)와 자동 음성-텍스트 변환을 필요로 하는 연구자 및 개발자입니다.
주요 특징
- 하이브리드 아키텍처: ASR에는 Whisper, 발화자 분류에는 NVIDIA NeMo(MarbleNet 및 TitaNet)를 결합합니다.
- 타임스탬프 보정: 시간 지연으로 인한 오류를 최소화하기 위해 강제 정렬 기능을 통합합니다.
- 병렬 처리: 고용량 VRAM 시스템을 위한 실험적 병렬 모드(
diarize_parallel.py)를 포함하여 처리 속도를 향상시킵니다. - 사용자 정의 가능: 다양한 Whisper 모델, 수동 언어 선택, 배치 크기 조정을 지원합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch
- 프로젝트