mirror of
https://github.com/empenoso/offline-audio-transcriber.git
synced 2026-04-19 00:20:29 +05:00
107 lines
6.1 KiB
Python
107 lines
6.1 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
🎙️ [ПЛАН] Распознавание с диаризацией (WhisperX через Docker) 🎙️
|
||
|
||
Этот файл — заготовка для будущего скрипта, который будет выполнять диаризацию
|
||
(разделение речи по спикерам) с помощью WhisperX.
|
||
|
||
ВНИМАНИЕ: Прямая установка WhisperX в локальное Python-окружение вызывает
|
||
конфликты зависимостей, особенно с новыми видеокартами NVIDIA.
|
||
Поэтому реализация будет основана на **Docker-контейнерах**, что является
|
||
более надёжным и воспроизводимым решением.
|
||
|
||
-----------------------------------------------------------------------
|
||
ПОЧЕМУ DOCKER?
|
||
-----------------------------------------------------------------------
|
||
|
||
Проблема:
|
||
WhisperX требует определённых версий библиотек (например, PyTorch, torchaudio),
|
||
которые могут конфликтовать с последними драйверами NVIDIA или другими
|
||
пакетами в вашей системе. Это классическая "dependency hell".
|
||
|
||
Решение:
|
||
NVIDIA предоставляет готовые Docker-контейнеры (через NGC и сообщество),
|
||
в которых уже настроено всё необходимое: CUDA, PyTorch и нужные библиотеки.
|
||
Это избавляет от ручной настройки и гарантирует, что окружение будет
|
||
работать "из коробки". Мы будем использовать готовый образ с WhisperX.
|
||
|
||
-----------------------------------------------------------------------
|
||
ПЛАНИРУЕМЫЙ ФУНКЦИОНАЛ
|
||
-----------------------------------------------------------------------
|
||
|
||
- Распознавание речи с помощью оптимизированной модели Whisper.
|
||
- Выравнивание временных меток на уровне слов для высокой точности.
|
||
- **Диаризация спикеров** для определения, кто и когда говорит.
|
||
- Сохранение результатов в форматах .txt, .srt, .json с разметкой спикеров
|
||
(например, "[SPEAKER_01]: Здравствуйте!").
|
||
|
||
-----------------------------------------------------------------------
|
||
ПОРЯДОК ИСПОЛЬЗОВАНИЯ (ПЛАН)
|
||
-----------------------------------------------------------------------
|
||
|
||
Процесс будет включать следующие шаги:
|
||
|
||
1. **Установка Docker и NVIDIA Container Toolkit.**
|
||
Это позволит Docker-контейнерам использовать вашу GPU.
|
||
|
||
2. **Загрузка готового Docker-образа с WhisperX:**
|
||
```bash
|
||
docker pull ghcr.io/jim60105/whisperx
|
||
```
|
||
|
||
3. **Запуск контейнера для обработки аудио:**
|
||
Этот скрипт (`whisperx_diarization.py`) в будущем станет обёрткой,
|
||
автоматизирующей запуск Docker-контейнера для обработки ваших файлов.
|
||
Пример команды, которая будет выполняться "под капотом":
|
||
|
||
```bash
|
||
# Токен Hugging Face нужен для скачивания моделей диаризации
|
||
export HF_TOKEN=ваш_токен_доступа
|
||
|
||
docker run --gpus all --rm \
|
||
-e HF_TOKEN=$HF_TOKEN \
|
||
-v /путь/к/вашим/аудио:/app/audio \
|
||
-v /путь/к/результатам:/app/results \
|
||
ghcr.io/jim60105/whisperx \
|
||
--audio /app/audio/meeting.mp3 \
|
||
--output_dir /app/results \
|
||
--diarize \
|
||
--model large-v3
|
||
```
|
||
|
||
Автор: Михаил Шардин https://shardin.name/
|
||
Дата создания: 30.08.2025
|
||
Версия: 0.2-alpha (План реализации через Docker)
|
||
|
||
Актуальная версия скрипта всегда здесь: https://github.com/empenoso/offline-audio-transcriber
|
||
"""
|
||
|
||
#
|
||
# В будущей версии здесь будет код, который формирует и выполняет
|
||
# команду `docker run` на основе переданных аргументов (путь к файлам, модель и т.д.).
|
||
#
|
||
# import subprocess
|
||
# import sys
|
||
# ...
|
||
#
|
||
|
||
def main():
|
||
"""Информационное сообщение о статусе скрипта."""
|
||
print("======================================================================")
|
||
print("🎙️ Скрипт для распознавания с диаризацией (План: WhisperX + Docker)")
|
||
print("======================================================================")
|
||
print("\n⚠️ ВНИМАНИЕ: Этот скрипт является заготовкой для будущей реализации.")
|
||
print("\nТекущий план — использовать Docker для решения проблем с зависимостями,")
|
||
print("что обеспечит стабильную работу на системах с GPU NVIDIA.")
|
||
print("\nПроцесс будет выглядеть так:")
|
||
print(" 1. Вы запускаете этот скрипт с указанием папки аудио.")
|
||
print(" 2. Скрипт автоматически запускает Docker-контейнер с WhisperX.")
|
||
print(" 3. Результаты с разметкой по спикерам сохраняются в указанную папку.")
|
||
print("\nСледите за обновлениями в репозитории!")
|
||
print("[ссылка на ваш GitHub репозиторий]")
|
||
print()
|
||
|
||
if __name__ == "__main__":
|
||
main() |