{"id":28996839,"url":"https://github.com/m0nkkke/whisperx-protocol-manager","last_synced_at":"2026-02-08T04:32:15.061Z","repository":{"id":299956746,"uuid":"1004728960","full_name":"m0nkkke/whisperx-protocol-manager","owner":"m0nkkke","description":"A simple protocol manager for your audios","archived":false,"fork":false,"pushed_at":"2025-07-09T12:20:21.000Z","size":8544,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-26T04:03:57.873Z","etag":null,"topics":["fastapi","huggingface","pyannote-audio","python","whisper","whisperx"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m0nkkke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-19T05:06:58.000Z","updated_at":"2025-07-11T04:09:46.000Z","dependencies_parsed_at":"2025-06-19T06:23:01.725Z","dependency_job_id":"e6520432-3a6d-4f63-ba94-8f7904028ec4","html_url":"https://github.com/m0nkkke/whisperx-protocol-manager","commit_stats":null,"previous_names":["m0nkkke/whisperx-protocol-manager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/m0nkkke/whisperx-protocol-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m0nkkke%2Fwhisperx-protocol-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m0nkkke%2Fwhisperx-protocol-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m0nkkke%2Fwhisperx-protocol-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m0nkkke%2Fwhisperx-protocol-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m0nkkke","download_url":"https://codeload.github.com/m0nkkke/whisperx-protocol-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m0nkkke%2Fwhisperx-protocol-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29220460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T03:18:47.732Z","status":"ssl_error","status_checked_at":"2026-02-08T03:15:31.985Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fastapi","huggingface","pyannote-audio","python","whisper","whisperx"],"created_at":"2025-06-25T05:46:03.285Z","updated_at":"2026-02-08T04:32:15.056Z","avatar_url":"https://github.com/m0nkkke.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎙️ WhisperX Protocol Manager\n\nНебольшое веб-приложение на FastAPI для загрузки и транскрибации аудиофайлов с поддержкой диаризации спикеров и генерации кратких протоколов содержания.\n\n## 🚀 Возможности\n\n1. 📤 Загрузка аудиофайлов форматов: `ogg`, `wav`, `mp3`, и др.\n2. 📝 Транскрибация аудио с возможностью скачать текст.\n3. 🧑‍🤝‍🧑 Поддержка **диаризации спикеров** (определение \"кто и когда говорил\") с возможностью указания количества говорящих.\n4. 🧠 Генерация **протокола/конспекта** по результатам транскрипции.\n5. ⚙️ Настройка параметров транскрибации (модель, качество и др.).\n6. 💬 Возможность задавать **промпты** (подсказки) для улучшения транскрибации и протоколирования.\n\n## 📸 Интерфейс приложения\n\n[![Главный интерфейс приложения](https://i.ibb.co/Z1R5nnvF/wxpm.png)](https://ibb.co/vvCp77fT)\n\n## 📂 Структура проекта\n\n```\n├── app.py                  # основной FastAPI сервер\n├── index.html              # веб-интерфейс\n├── styles.css              # стили\n├── requirements.txt        # зависимости проекта\n├── .env                    # переменные окружения\n├── prompts/                # пользовательские промпты (текстовые файлы .txt)\n└── reference_voices/       # голосовые образцы для диаризации\n```\n\n## 🛠️ Технологии\n\n- [FastAPI](https://fastapi.tiangolo.com/)\n- [WhisperX](https://github.com/m-bain/whisperx)\n- [PyAnnote-Audio](https://github.com/pyannote/pyannote-audio)\n- [Hugging Face Transformers](https://huggingface.co/)\n- [Gemini API (Google)](https://ai.google.dev/)\n\n## 🧠 Диаризация и банк голосов\n\nДля диаризации используется **голосовой банк (reference voices)**.  \nЧтобы добавить свой голос, поместите **отрывок речи длиной от 15 до 30 секунд** в папку `reference_voices/`.  \nИмя файла будет использоваться как метка (например, `ivan.wav` → `ivan:` в тексте).\n\n\u003e Если не указаны кастомные голоса, будет использована автоматическая кластеризация по количеству спикеров.\n\n## 💬 Промпты\n\nДля улучшения качества распознавания и конспектирования можно задать **промпты**.  \nРазместите текстовые подсказки в виде `.txt` файлов в папке `prompts/`.  \nНапример:\n- `context.txt` — описание ситуации (лекция, совещание и т.д.)\n- `names.txt` — список возможных участников разговора\n- `vocabulary.txt` — терминология по теме\n\n## 📦 Установка\n\n```bash\ngit clone https://github.com/yourusername/audio-transcriber-api.git\ncd audio-transcriber-api\npython -m venv venv\nsource venv/bin/activate  # или .\\venv\\Scripts\\activate для Windows\npip install -r requirements.txt\n```\n\nСоздайте .env файл в корне проекта:\n```\n# Токен Hugging Face для pyannote\nHUGGINGFACE_TOKEN=ваш_токен\n\n# API ключ Gemini\nGEMINI_API_KEY=ваш_ключ\n\n# Прокси (если необходимо)\nHTTP_PROXY=\nHTTPS_PROXY=\n\n# Параметры WhisperX\nMODEL_NAME=large-v3\nCOMPUTE_TYPE=int8\n\n# Параметры диаризации (рекомендуемые)\nMIN_SPEAKERS=2\nMAX_SPEAKERS=2\nSEGMENTATION_THRESHOLD=0.60\nSEGMENTATION_MIN_DURATION_OFF=0.20\nCLUSTERING_THRESHOLD=0.50\nCLUSTERING_MIN_CLUSTER_SIZE=8\n```\n## 🔐 Требования к авторизации\n\n### Hugging Face Access\nДля работы с диаризацией через PyAnnote необходимо:\n1. Получить токен на [Hugging Face](https://huggingface.co/settings/tokens)\n2. **Обязательно подтвердить доступ к следующим моделям:**\n   - [pyannote/segmentation](https://huggingface.co/pyannote/segmentation)\n   - [pyannote/speaker-diarization](https://huggingface.co/pyannote/speaker-diarization)\n3. Для каждой модели нужно:\n   - Перейти по ссылке\n   - Нажать \"Agree to access\"\n   - Авторизоваться при необходимости\n\n### Gemini API\nДля генерации протоколов требуется:\n1. Получить API ключ в [Google AI Studio](https://ai.google.dev/)\n2. Добавить его в `.env` файл как `GEMINI_API_KEY`\n\n▶️ Запуск\n```\nuvicorn app:app --reload\n```\n\nОткройте в браузере: http://localhost:8000\n\n## ⚙️ Настраиваемые параметры\n\n| Переменная                       | Описание                                                                 |\n|----------------------------------|--------------------------------------------------------------------------|\n| `MODEL_NAME`                     | Модель WhisperX (`base`, `medium`, `large-v3`)                           |\n| `COMPUTE_TYPE`                   | Тип вычислений (`int8`, `float16`, `float32`)                            |\n| `MIN_SPEAKERS`, `MAX_SPEAKERS`  | Количество предполагаемых спикеров (рекомендуется одинаковое значение)  |\n| `SEGMENTATION_THRESHOLD`        | Порог вероятности для сегментации речи (оптимум `0.60`)                 |\n| `SEGMENTATION_MIN_DURATION_OFF` | Мин. продолжительность тишины между сегментами (в секундах)             |\n| `CLUSTERING_THRESHOLD`          | Порог объединения сегментов одного спикера                              |\n| `CLUSTERING_MIN_CLUSTER_SIZE`   | Мин. количество сегментов в одном кластере                               |\n\n## 📄 Примеры использования\n\n- **Загрузка файла:**  \n  Загрузите аудиофайл через веб-интерфейс.\n\n- **Диаризация:**  \n  Установите флаг \"Диаризация\", выберите количество спикеров или используйте кастомные голоса (папка `reference_voices/`).\n\n- **Промпты:**  \n  Добавьте текстовые подсказки в папку `prompts/` перед запуском транскрипции.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm0nkkke%2Fwhisperx-protocol-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm0nkkke%2Fwhisperx-protocol-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm0nkkke%2Fwhisperx-protocol-manager/lists"}