An open API service indexing awesome lists of open source software.

https://github.com/m0nkkke/whisperx-protocol-manager

A simple protocol manager for your audios
https://github.com/m0nkkke/whisperx-protocol-manager

fastapi huggingface pyannote-audio python whisper whisperx

Last synced: 5 months ago
JSON representation

A simple protocol manager for your audios

Awesome Lists containing this project

README

          

# πŸŽ™οΈ WhisperX Protocol Manager

НСбольшоС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° FastAPI для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ транскрибации Π°ΡƒΠ΄ΠΈΠΎΡ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π΄ΠΈΠ°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ спикСров ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² содСрТания.

## πŸš€ ВозмоТности

1. πŸ“€ Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π°ΡƒΠ΄ΠΈΠΎΡ„Π°ΠΉΠ»ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ²: `ogg`, `wav`, `mp3`, ΠΈ Π΄Ρ€.
2. πŸ“ Вранскрибация Π°ΡƒΠ΄ΠΈΠΎ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ тСкст.
3. πŸ§‘β€πŸ€β€πŸ§‘ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° **Π΄ΠΈΠ°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ спикСров** (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ "ΠΊΡ‚ΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»") с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ указания количСства говорящих.
4. 🧠 ГСнСрация **ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°/конспСкта** ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ транскрипции.
5. βš™οΈ Настройка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² транскрибации (модСль, качСство ΠΈ Π΄Ρ€.).
6. πŸ’¬ Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ **ΠΏΡ€ΠΎΠΌΠΏΡ‚Ρ‹** (подсказки) для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ транскрибации ΠΈ протоколирования.

## πŸ“Έ Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ прилоТСния

[![Π“Π»Π°Π²Π½Ρ‹ΠΉ интСрфСйс прилоТСния](https://i.ibb.co/Z1R5nnvF/wxpm.png)](https://ibb.co/vvCp77fT)

## πŸ“‚ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

```
β”œβ”€β”€ app.py # основной FastAPI сСрвСр
β”œβ”€β”€ index.html # Π²Π΅Π±-интСрфСйс
β”œβ”€β”€ styles.css # стили
β”œβ”€β”€ requirements.txt # зависимости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
β”œβ”€β”€ .env # ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния
β”œβ”€β”€ prompts/ # ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠΏΡ‚Ρ‹ (тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹ .txt)
└── reference_voices/ # голосовыС ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ для Π΄ΠΈΠ°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ
```

## πŸ› οΈ Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

- [FastAPI](https://fastapi.tiangolo.com/)
- [WhisperX](https://github.com/m-bain/whisperx)
- [PyAnnote-Audio](https://github.com/pyannote/pyannote-audio)
- [Hugging Face Transformers](https://huggingface.co/)
- [Gemini API (Google)](https://ai.google.dev/)

## 🧠 Диаризация ΠΈ Π±Π°Π½ΠΊ голосов

Для Π΄ΠΈΠ°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ **голосовой Π±Π°Π½ΠΊ (reference voices)**.
Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свой голос, помСститС **ΠΎΡ‚Ρ€Ρ‹Π²ΠΎΠΊ Ρ€Π΅Ρ‡ΠΈ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΎΡ‚ 15 Π΄ΠΎ 30 сСкунд** Π² ΠΏΠ°ΠΏΠΊΡƒ `reference_voices/`.
Имя Ρ„Π°ΠΉΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `ivan.wav` β†’ `ivan:` Π² тСкстС).

> Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ кастомныС голоса, Π±ΡƒΠ΄Π΅Ρ‚ использована автоматичСская кластСризация ΠΏΠΎ количСству спикСров.

## πŸ’¬ ΠŸΡ€ΠΎΠΌΠΏΡ‚Ρ‹

Для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ качСства распознавания ΠΈ конспСктирования ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ **ΠΏΡ€ΠΎΠΌΠΏΡ‚Ρ‹**.
РазмСститС тСкстовыС подсказки Π² Π²ΠΈΠ΄Π΅ `.txt` Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅ `prompts/`.
НапримСр:
- `context.txt` β€” описаниС ситуации (лСкция, совСщаниС ΠΈ Ρ‚.Π΄.)
- `names.txt` β€” список Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… участников Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π°
- `vocabulary.txt` β€” тСрминология ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

## πŸ“¦ Установка

```bash
git clone https://github.com/yourusername/audio-transcriber-api.git
cd audio-transcriber-api
python -m venv venv
source venv/bin/activate # или .\venv\Scripts\activate для Windows
pip install -r requirements.txt
```

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ .env Ρ„Π°ΠΉΠ» Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:
```
# ВокСн Hugging Face для pyannote
HUGGINGFACE_TOKEN=ваш_Ρ‚ΠΎΠΊΠ΅Π½

# API ΠΊΠ»ΡŽΡ‡ Gemini
GEMINI_API_KEY=ваш_ΠΊΠ»ΡŽΡ‡

# ΠŸΡ€ΠΎΠΊΡΠΈ (Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ)
HTTP_PROXY=
HTTPS_PROXY=

# ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ WhisperX
MODEL_NAME=large-v3
COMPUTE_TYPE=int8

# ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π΄ΠΈΠ°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ (Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅)
MIN_SPEAKERS=2
MAX_SPEAKERS=2
SEGMENTATION_THRESHOLD=0.60
SEGMENTATION_MIN_DURATION_OFF=0.20
CLUSTERING_THRESHOLD=0.50
CLUSTERING_MIN_CLUSTER_SIZE=8
```
## πŸ” ВрСбования ΠΊ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

### Hugging Face Access
Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΈΠ°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· PyAnnote Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:
1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ Π½Π° [Hugging Face](https://huggingface.co/settings/tokens)
2. **ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ доступ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ модСлям:**
- [pyannote/segmentation](https://huggingface.co/pyannote/segmentation)
- [pyannote/speaker-diarization](https://huggingface.co/pyannote/speaker-diarization)
3. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½ΡƒΠΆΠ½ΠΎ:
- ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ ссылкС
- ΠΠ°ΠΆΠ°Ρ‚ΡŒ "Agree to access"
- ΠΠ²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ нСобходимости

### Gemini API
Для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² трСбуСтся:
1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ API ΠΊΠ»ΡŽΡ‡ Π² [Google AI Studio](https://ai.google.dev/)
2. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² `.env` Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ `GEMINI_API_KEY`

▢️ Запуск
```
uvicorn app:app --reload
```

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅: http://localhost:8000

## βš™οΈ НастраиваСмыС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

| ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ | ОписаниС |
|----------------------------------|--------------------------------------------------------------------------|
| `MODEL_NAME` | МодСль WhisperX (`base`, `medium`, `large-v3`) |
| `COMPUTE_TYPE` | Π’ΠΈΠΏ вычислСний (`int8`, `float16`, `float32`) |
| `MIN_SPEAKERS`, `MAX_SPEAKERS` | ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡ‹Ρ… спикСров (рСкомСндуСтся ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) |
| `SEGMENTATION_THRESHOLD` | ΠŸΠΎΡ€ΠΎΠ³ вСроятности для сСгмСнтации Ρ€Π΅Ρ‡ΠΈ (ΠΎΠΏΡ‚ΠΈΠΌΡƒΠΌ `0.60`) |
| `SEGMENTATION_MIN_DURATION_OFF` | Мин. ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΡˆΠΈΠ½Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ сСгмСнтами (Π² сСкундах) |
| `CLUSTERING_THRESHOLD` | ΠŸΠΎΡ€ΠΎΠ³ объСдинСния сСгмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ спикСра |
| `CLUSTERING_MIN_CLUSTER_SIZE` | Мин. количСство сСгмСнтов Π² ΠΎΠ΄Π½ΠΎΠΌ кластСрС |

## πŸ“„ ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

- **Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π°:**
Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π°ΡƒΠ΄ΠΈΠΎΡ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-интСрфСйс.

- **Диаризация:**
УстановитС Ρ„Π»Π°Π³ "Диаризация", Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ количСство спикСров ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ кастомныС голоса (ΠΏΠ°ΠΏΠΊΠ° `reference_voices/`).

- **ΠŸΡ€ΠΎΠΌΠΏΡ‚Ρ‹:**
Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ тСкстовыС подсказки Π² ΠΏΠ°ΠΏΠΊΡƒ `prompts/` ΠΏΠ΅Ρ€Π΅Π΄ запуском транскрипции.