Thanh-Lam's picture
Fix: Downgrade to Gradio 4.19.2 - pre-schema-bug version
21d479d
---
title: Diarization Labeling
emoji: "\U0001F4E3"
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: "4.19.2"
app_file: app.py
pinned: false
---
# Vietnamese_Diarization
Kho mã mẫu diarization tiếng Việt dùng pyannote/speaker-diarization-community-1.
## Yêu cầu
- Python 3.10+
- ffmpeg (bắt buộc cho torchcodec audio decoding)
- Đã chấp nhận điều khoản model tại https://huggingface.co/pyannote/speaker-diarization-community-1
- Hugging Face access token (dán vào hugging_face_key.txt hoặc đặt biến môi trường HUGGINGFACE_TOKEN/HUGGINGFACE_ACCESS_TOKEN)
## Cài đặt nhanh
- Cài thư viện: `pip install pyannote.audio gradio yt-dlp` hoặc `uv add pyannote.audio gradio yt-dlp`
- Đảm bảo ffmpeg đã có trong PATH
## Chạy Gradio
- Lệnh: `python app.py`
- Trình duyệt mở tại http://localhost:7860 (hoặc địa chỉ máy chủ nếu chạy từ xa)
- Điền token nếu chưa đặt sẵn, tải file âm thanh hoặc dán URL YouTube/TikTok, chọn thiết bị rồi nhấn Chạy
- Bảng kết quả hiển thị dạng phút:giây; có thể gán nhãn giới tính (nam/nữ), vùng miền (bắc/trung/nam) và transcription, sau đó bấm "Tách và tải" để nhận zip gồm các đoạn WAV và metadata.csv
## Chạy mẫu
- Diarization và in kết quả: `python infer.py path/to/audio.wav`
- Lưu thêm RTTM: `python infer.py path/to/audio.wav --rttm outputs/audio.rttm`
- Lưu JSON: `python infer.py path/to/audio.wav --json outputs/audio.json`
- Chọn thiết bị: thêm `--device cpu` hoặc `--device cuda` (mặc định auto)
## API Python
```
from app import diarize_file
segments = diarize_file("audio.wav", device="auto")
```
## Cấu trúc
- app.py: API Python và giao diện Gradio
- infer.py: CLI chạy diarization
- src/models.py: Bao gói pipeline pyannote
- src/utils.py: Hỗ trợ đọc token, định dạng kết quả
- hugging_face_key.txt: nơi dán Hugging Face access token (không commit token thật)