강제 정렬
Qwen3-ForcedAligner는 오디오에 대한 단어 수준 타임스탬프 정렬을 제공합니다. 비자기회귀 단일 순방향 패스로 전사의 각 단어를 오디오 파형의 정확한 위치에 정렬합니다.
동작 방식
정렬기는 LIS (Longest Increasing Subsequence, 최장 증가 부분 수열) 단조성 보정 단계와 함께 CTC (Connectionist Temporal Classification) 정렬을 사용합니다. 이를 통해 raw CTC 출력에 사소한 불일치가 있더라도 타임스탬프가 항상 순서대로 유지됩니다.
| 속성 | 값 |
|---|---|
| 정렬 방법 | LIS 단조성 보정을 적용한 CTC |
| 타임스탬프 해상도 | 80 ms |
| 출력 클래스 | 5000 |
| 추론 모드 | 비자기회귀 (단일 순방향 패스) |
CLI 사용법
오디오 파일을 정렬합니다. 전사가 제공되지 않으면 먼저 Qwen3-ASR을 사용하여 오디오가 자동 전사됩니다:
.build/release/audio align recording.wav
자동 전사를 건너뛰려면 알려진 전사를 제공하세요:
.build/release/audio align recording.wav --text "The quick brown fox jumps over the lazy dog"
옵션
# 전사 텍스트 직접 지정
.build/release/audio align recording.wav --text "known transcript"
# 자동 전사 단계의 ASR 모델 선택
.build/release/audio align recording.wav --model 1.7b
# 정렬기 모델 변형 지정
.build/release/audio align recording.wav --aligner-model default
# 언어 설정
.build/release/audio align recording.wav --language en
모델 변형
여러 모델 변형이 제공되며 크기와 정확도를 트레이드오프합니다:
| 변형 | 모델 ID | 크기 |
|---|---|---|
| MLX 4비트 (기본) | aufklarer/Qwen3-ForcedAligner-0.6B-4bit | 약 979 MB |
| MLX 8비트 | aufklarer/Qwen3-ForcedAligner-0.6B-8bit | 약 1.3 GB |
| MLX bf16 | aufklarer/Qwen3-ForcedAligner-0.6B-bf16 | 약 1.8 GB |
| CoreML INT4 | aufklarer/Qwen3-ForcedAligner-0.6B-CoreML-INT4 | 약 662 MB |
| CoreML INT8 | aufklarer/Qwen3-ForcedAligner-0.6B-CoreML-INT8 | 약 1.1 GB |
--aligner-model로 변형을 선택합니다:
.build/release/audio align recording.wav --aligner-model aufklarer/Qwen3-ForcedAligner-0.6B-8bit
출력 형식
정렬기는 단어당 한 줄씩 시작과 종료 타임스탬프를 초 단위로 출력합니다:
[0.24 - 0.48] The
[0.48 - 0.72] quick
[0.72 - 1.04] brown
[1.04 - 1.36] fox
[1.36 - 1.68] jumps
[1.68 - 1.92] over
[1.92 - 2.08] the
[2.08 - 2.40] lazy
[2.40 - 2.80] dog
각 타임스탬프 쌍은 80 ms 해상도로 오디오에서 해당 단어의 시작과 종료 시간을 나타냅니다.
중요
--text가 제공되지 않으면 정렬기는 먼저 전체 Qwen3-ASR 전사 패스를 실행한 다음 결과 텍스트를 정렬합니다. 이는 첫 실행 시 ASR 모델과 정렬기 모델을 모두 로드한다는 의미입니다. --text를 제공하면 ASR 단계를 건너뛰고 정렬기만 로드합니다.