mirror of
https://github.com/empenoso/offline-audio-transcriber.git
synced 2026-04-19 08:30:30 +05:00
Update README.md
This commit is contained in:
134
README.md
134
README.md
@@ -1,62 +1,71 @@
|
|||||||
# Локальная система распознавания речи на базе OpenAI Whisper
|
# Локальная система распознавания и диаризации речи (Whisper & WhisperX)
|
||||||
|
|
||||||
Этот репозиторий содержит набор скриптов для создания полностью автономной системы расшифровки аудиозаписей (лекций, докладов, совещаний) на вашем компьютере. Решение использует мощную open-source модель **OpenAI Whisper**, что гарантирует высокую точность и полную приватность ваших данных.
|
Этот репозиторий содержит набор скриптов для создания полностью автономной системы расшифровки аудиозаписей на вашем компьютере. Решение позволяет не только превращать речь в текст, но и автоматически разделять его по говорящим (диаризация), что идеально подходит для анализа лекций, интервью и совещаний.
|
||||||
|
|
||||||
## 🚀 Что делает проект?
|
В основе лежат мощные open-source модели **OpenAI Whisper** и **WhisperX**, что гарантирует высокую точность и полную приватность ваших данных.
|
||||||
|
|
||||||
Проект позволяет вам превратить аудиофайлы в текст локально, без отправки данных в облако и без необходимости платных подписок. Это достигается за счет использования модели OpenAI Whisper и скриптов, которые автоматизируют процесс установки, настройки и массовой обработки файлов.
|
## ✨ Ключевые возможности
|
||||||
|
|
||||||
## ✨ Почему это полезно?
|
|
||||||
|
|
||||||
|
* **Два режима работы:**
|
||||||
|
1. **Простая транскрибация (Whisper):** быстрое получение сплошного текста из аудио. Идеально для монологов, лекций.
|
||||||
|
2. **Транскрибация с диаризацией (WhisperX):** получение структурированного диалога с разметкой по спикерам (`SPEAKER_01`, `SPEAKER_02`). Отлично подходит для совещаний, интервью.
|
||||||
* **Приватность:** все ваши аудиозаписи и текстовые расшифровки остаются на вашем компьютере. Никакие данные не передаются третьим лицам.
|
* **Приватность:** все ваши аудиозаписи и текстовые расшифровки остаются на вашем компьютере. Никакие данные не передаются третьим лицам.
|
||||||
* **Бесплатно:** проект построен на бесплатных open-source инструментах. Вы не платите за подписку или поминутное распознавание.
|
* **Бесплатно и Open Source:** проект построен на бесплатных инструментах. Вы не платите за подписку или поминутное распознавание.
|
||||||
* **Высокая точность:** используется модель `large-v3` от OpenAI, которая является одной из самых точных моделей для распознавания речи, включая русский язык.
|
* **Высокая точность:** используется модель `large-v3` от OpenAI, которая является одной из самых точных для распознавания речи, включая русский язык.
|
||||||
* **Полный контроль:** вы контролируете весь процесс — от выбора модели до формата выходных данных.
|
* **Ускорение на GPU:** решение оптимизировано для работы с видеокартами NVIDIA, что многократно ускоряет обработку.
|
||||||
* **Массовая обработка:** скрипт `whisper_transcribe.py` позволяет автоматически обработать все аудиофайлы в указанной папке.
|
* **Простая установка:** для каждого режима предусмотрены bash-скрипты, которые автоматизируют настройку окружения.
|
||||||
|
|
||||||
## 🛠️ Как начать?
|
## 🤔 Какой метод выбрать?
|
||||||
|
|
||||||
Для развертывания системы на вашем компьютере (протестировано на Ubuntu) выполните следующие шаги.
|
| Критерий | Метод 1: Простая транскрибация (Whisper) | Метод 2: Диа-ри-за-ци-я (WhisperX + Docker) |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| **Задача** | Получить сплошной текст из аудио (лекция, доклад) | Разделить речь на реплики разных спикеров (совещание) |
|
||||||
|
| **Результат** | `...текст одного спикера текст другого...` | `[время] SPEAKER_01: текст...`<br>`[время] SPEAKER_02: текст...` |
|
||||||
|
| **Технологии** | Python, PyTorch, Whisper | Docker, NVIDIA Container Toolkit, WhisperX |
|
||||||
|
| **Сложность** | Простая настройка в виртуальном окружении Python | Требует Docker и токен Hugging Face. Установка автоматизирована. |
|
||||||
|
| **Когда использовать** | Для быстрой расшифровки монологов, лекций, личных заметок. | Для анализа диалогов, интервью, совещаний, создания протоколов. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Метод 1: простая транскрибация (Whisper)
|
||||||
|
|
||||||
|
Этот метод идеально подходит для быстрой расшифровки аудиозаписей без необходимости разделять речь по спикерам.
|
||||||
|
|
||||||
### Шаг 1: Подготовка окружения
|
### Шаг 1: Подготовка окружения
|
||||||
|
|
||||||
Для автоматической установки всех необходимых компонентов (Python, FFmpeg, NVIDIA Drivers, CUDA, PyTorch) был написан специальный bash-скрипт.
|
Для автоматической установки всех необходимых компонентов (Python, FFmpeg, NVIDIA Drivers, CUDA, PyTorch) используется специальный bash-скрипт.
|
||||||
|
|
||||||
1. **Клонируйте репозиторий:**
|
1. **Клонируйте репозиторий:**
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/empenoso/offline-audio-transcriber
|
git clone https://github.com/empenoso/offline-audio-transcriber
|
||||||
cd https://github.com/empenoso/offline-audio-transcriber
|
cd offline-audio-transcriber
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Сделайте скрипт установки исполняемым:**
|
2. **Сделайте скрипт установки исполняемым:**
|
||||||
```bash
|
```bash
|
||||||
chmod +x setup_whisper.sh
|
chmod +x whisper_transcribe_setup.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Запустите скрипт:**
|
3. **Запустите скрипт:**
|
||||||
```bash
|
```bash
|
||||||
./setup_whisper.sh
|
./whisper_transcribe_setup.sh
|
||||||
```
|
```
|
||||||
Скрипт обновит систему, установит драйверы NVIDIA (если необходимо), CUDA, создаст виртуальное окружение `.venv` и установит все Python-библиотеки, включая PyTorch и Whisper.
|
Скрипт обновит систему, установит драйверы NVIDIA (если необходимо), CUDA, создаст виртуальное окружение `.venv` и установит все Python-библиотеки.
|
||||||
|
|
||||||
> **Примечание:** Если скрипт установит драйверы NVIDIA, может потребоваться перезагрузка компьютера.
|
> **Примечание:** Если скрипт установит драйверы NVIDIA, может потребоваться перезагрузка компьютера.
|
||||||
|
|
||||||
### Шаг 2: Запись и размещение аудио
|
### Шаг 2: Запуск распознавания
|
||||||
|
|
||||||
* Запишите лекцию, доклад или совещание на диктофон или телефон.
|
1. **Поместите ваши аудиофайлы** (поддерживаются `.mp3`, `.wav`, `.m4a`) в любую папку, например, `audio/`.
|
||||||
* Для лучшего качества располагайте микрофон ближе к источнику звука и избегайте фонового шума.
|
|
||||||
* Скопируйте аудиофайлы (поддерживаются `.mp3`, `.wav`, `.m4a` и другие) в отдельную папку, например, `audio`.
|
|
||||||
|
|
||||||
### Шаг 3: Запуск распознавания
|
2. **Активируйте виртуальное окружение:**
|
||||||
|
|
||||||
1. **Активируйте виртуальное окружение:**
|
|
||||||
```bash
|
```bash
|
||||||
source .venv/bin/activate
|
source .venv/bin/activate
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Запустите скрипт `whisper_transcribe.py`:**
|
3. **Запустите скрипт `whisper_transcribe.py`:**
|
||||||
|
|
||||||
* **Простой запуск** (поиск аудио в текущей папке, использование `large` модели, результаты в папку `transcripts`):
|
* **Простой запуск** (поиск аудио в текущей папке):
|
||||||
```bash
|
```bash
|
||||||
python3 whisper_transcribe.py
|
python3 whisper_transcribe.py
|
||||||
```
|
```
|
||||||
@@ -65,24 +74,78 @@
|
|||||||
```bash
|
```bash
|
||||||
python3 whisper_transcribe.py ./audio large ./results
|
python3 whisper_transcribe.py ./audio large ./results
|
||||||
```
|
```
|
||||||
* `./audio` — папка с вашими аудиофайлами.
|
|
||||||
* `large` — используемая модель Whisper. Доступные модели: `tiny`, `base`, `small`, `medium`, `large`. Чем больше модель, тем выше точность, но и выше требования к ресурсам.
|
|
||||||
* `./results` — папка, куда будут сохранены результаты.
|
|
||||||
|
|
||||||
### Шаг 4: Анализ результатов
|
### Шаг 3: Анализ результатов
|
||||||
|
|
||||||
После выполнения скрипта в выходной папке вы найдете:
|
После выполнения скрипта в выходной папке вы найдете:
|
||||||
* **`.txt` файл** для каждой аудиозаписи с полным текстом.
|
* **`.txt` файл** для каждой аудиозаписи с полным текстом.
|
||||||
* **`.srt` файл** для каждой аудиозаписи с субтитрами и таймкодами.
|
* **`.srt` файл** для каждой аудиозаписи с субтитрами и таймкодами.
|
||||||
* **`all_transcripts.txt`** — один файл, содержащий все расшифровки подряд.
|
* **`all_transcripts.txt`** — один файл, содержащий все расшифровки подряд.
|
||||||
|
|
||||||
## 🔮 Будущие планы: диа-что? Диа-ри-за-ция!
|
---
|
||||||
|
|
||||||
Следующий большой шаг — **диаризация**, то есть автоматическое разделение текста по спикерам. Это позволит не просто получать сплошной текст совещания, а видеть, кто именно и что сказал.
|
## 🚀 Метод 2: транскрибация с диаризацией (WhisperX + Docker)
|
||||||
|
|
||||||
На данный момент интеграция с **WhisperX** (расширенная версия Whisper с поддержкой диаризации) отложена из-за технических сложностей с зависимостями. Планируется решить эту проблему с помощью Docker-контейнеров от NVIDIA. Следите за обновлениями!
|
Этот метод использует Docker для решения проблем с зависимостями и позволяет не только транскрибировать аудио, но и определять, кто из спикеров говорил.
|
||||||
|
|
||||||
Файл `whisperx_diarization.py` в репозитории является заглушкой для будущей реализации.
|
### Пререквизиты
|
||||||
|
|
||||||
|
1. **Docker и NVIDIA GPU:** для работы требуется установленный Docker и видеокарта NVIDIA с актуальными драйверами.
|
||||||
|
2. **Токен Hugging Face:** для диаризации необходим токен доступа.
|
||||||
|
* Получите его в [настройках профиля Hugging Face](https://huggingface.co/settings/tokens).
|
||||||
|
* Примите условия использования моделей [pyannote/speaker-diarization-3.1](https://huggingface.co/pyannote/speaker-diarization-3.1) и [pyannote/segmentation-3.0](https://huggingface.co/pyannote/segmentation-3.0).
|
||||||
|
|
||||||
|
### Шаг 1: Установка и настройка
|
||||||
|
|
||||||
|
Специальный скрипт автоматизирует установку Docker, NVIDIA Container Toolkit и настройку рабочего пространства.
|
||||||
|
|
||||||
|
1. **Сделайте скрипт исполняемым:**
|
||||||
|
```bash
|
||||||
|
chmod +x whisperx_diarization_setup.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Запустите установщик:**
|
||||||
|
```bash
|
||||||
|
./whisperx_diarization_setup.sh
|
||||||
|
```
|
||||||
|
Скрипт установит и настроит Docker, скачает необходимый образ WhisperX и создаст структуру папок (`audio`, `results`) и файл конфигурации `config.env`.
|
||||||
|
|
||||||
|
3. **Настройте `config.env`:**
|
||||||
|
Откройте файл `config.env` и вставьте ваш токен Hugging Face:
|
||||||
|
```ini
|
||||||
|
HF_TOKEN=your_token_here
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Перезагрузка:** После установки может потребоваться перезагрузка, чтобы применились права для группы `docker`.
|
||||||
|
```bash
|
||||||
|
sudo reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
### Шаг 2: Запуск диаризации
|
||||||
|
|
||||||
|
1. **Поместите аудиофайлы** в папку `audio/`.
|
||||||
|
|
||||||
|
2. **Запустите скрипт-оркестратор:**
|
||||||
|
* Для проверки системы:
|
||||||
|
```bash
|
||||||
|
python3 whisperx_diarization.py --check
|
||||||
|
```
|
||||||
|
* Для обработки всех файлов в папке `audio/`:
|
||||||
|
```bash
|
||||||
|
python3 whisperx_diarization.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### Шаг 3: Анализ результатов
|
||||||
|
|
||||||
|
Результаты для каждого аудиофайла будут сохранены в отдельной подпапке внутри `results/`. Вы получите структурированный протокол встречи.
|
||||||
|
|
||||||
|
**Было (обычный Whisper):**
|
||||||
|
> ...да, я согласен с этим подходом но нужно учесть риски которые мы не обсудили например финансовую сторону вопроса и как это повлияет на сроки я думаю нам стоит вернуться к этому на следующей неделе...
|
||||||
|
|
||||||
|
**Стало (WhisperX с диаризацией):**
|
||||||
|
> [00:01:15.520 --> 00:01:19.880] SPEAKER_01: Да, я согласен с этим подходом, но нужно учесть риски, которые мы не обсудили.
|
||||||
|
> [00:01:20.100 --> 00:01:22.740] SPEAKER_02: Например, финансовую сторону вопроса и как это повлияет на сроки?
|
||||||
|
> [00:01:23.020 --> 00:01:25.900] SPEAKER_01: Именно. Я думаю, нам стоит вернуться к этому на следующей неделе.
|
||||||
|
|
||||||
## ❓ Где получить помощь?
|
## ❓ Где получить помощь?
|
||||||
|
|
||||||
@@ -93,6 +156,3 @@
|
|||||||
* **Автор:** Михаил Шардин
|
* **Автор:** Михаил Шардин
|
||||||
* **Онлайн-визитка:** [shardin.name](https://shardin.name/?utm_source=github)
|
* **Онлайн-визитка:** [shardin.name](https://shardin.name/?utm_source=github)
|
||||||
* **Telegram-канал:** ["Умный Дом Инвестора"](https://t.me/+asaEcPax8o41MjQy)
|
* **Telegram-канал:** ["Умный Дом Инвестора"](https://t.me/+asaEcPax8o41MjQy)
|
||||||
|
|
||||||
---
|
|
||||||
Этот проект является демонстрацией того, как современные open-source инструменты позволяют решать сложные задачи без значительных финансовых затрат и с полным контролем над своими данными.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user