3.8 KiB
3.8 KiB
Speech-to-Text + Speaker Diarization Pipeline
Локальная система транскрипции аудио с автоматическим разделением спикеров.
Возможности
- Распознавание речи (faster-whisper, модель large-v3)
- Диаризация спикеров (pyannote.audio community-1)
- Поддержка форматов:
.m4a,.mp3,.wav,.aac - Аудио до 3 часов / 2 ГБ
- Автоматический чанкинг для длинных записей (>30 мин)
- Предобработка: нормализация громкости, удаление DC offset, конвертация в mono 16kHz
- Экспорт в
.txtи.json - Полностью локальный запуск на GPU
Требования
- Python 3.10+
- ffmpeg (установлен и доступен в PATH)
- CUDA-совместимая GPU (или CPU для тестов)
- HuggingFace токен с доступом к моделям pyannote
Установка
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# .venv\Scripts\activate # Windows
pip install -r requirements.txt
Создайте .env в корне проекта:
HF_TOKEN=hf_your_token_here
Для получения токена: https://huggingface.co/settings/tokens Необходимо принять условия использования моделей:
Использование
# Базовый запуск (GPU, large-v3)
python transcriber.py interview.m4a --output ./result --format txt json
# Локальный тест (CPU, маленькая модель)
python transcriber.py test.wav --output ./result --model tiny --device cpu
# С ограничением спикеров
python transcriber.py meeting.mp3 --max-speakers 3 --min-speakers 2
# Подробный лог
python transcriber.py audio.aac -v
Параметры CLI
| Параметр | По умолчанию | Описание |
|---|---|---|
input |
— | Путь к аудиофайлу |
--output |
./output |
Директория для результатов |
--model |
large-v3 |
Модель Whisper (tiny, base, small, medium, large-v3) |
--device |
cuda |
Устройство (cuda, cpu) |
--language |
ru |
Язык распознавания |
--beam-size |
5 |
Ширина beam search |
--vad |
on |
VAD фильтрация (on, off) |
--max-speakers |
авто | Максимум спикеров |
--min-speakers |
авто | Минимум спикеров |
--format |
txt json |
Форматы экспорта |
--pause-threshold |
1.5 |
Макс. пауза для объединения сегментов (сек) |
--chunk-duration |
1800 |
Макс. длина чанка (сек) |
--hf-token |
из .env |
HuggingFace токен |
-v |
— | Подробное логирование |
Форматы вывода
TXT — читаемый диалог:
[Speaker 1]
Здравствуйте, расскажите о себе.
[Speaker 2]
Добрый день, меня зовут Иван...
JSON — структурированные данные:
[
{
"speaker": "Speaker 1",
"start": 0.52,
"end": 3.18,
"text": "Здравствуйте, расскажите о себе."
}
]
Архитектура
Input → Preprocess (ffmpeg) → Chunking → ASR (Whisper) → Diarization (pyannote) → Alignment → Merge → Export
Производительность
На GPU уровня RTX 3090: ~20 мин на 1.5 часа аудио. VRAM ≤ 8GB, RAM ≤ 16GB.