В интернете огромное количество гайдов на тему транскрибации аудио и анализа совещаний через ИИ. Но все они описывают разрозненные решения: отдельно транскрибируй аудио, затем отправь в ChatGPT, и так далее.

Я решил комплексно подойти к этому вопросу и навайбкодить веб-приложение, где все задачи решаются в одном окне, а именно:

  • Хранение транскрипций

  • Чат с ИИ по содержимому встречи

  • Структурированные протоколы (задачи, решения, события)

  • Рекомендации ИИ на базе текущей и предыдущих встреч

  • Интеграция с CRM в один клик (beta)

Моя цель — скомбинировать транскрипцию и ИИ-анализ на одном сервере среднего уровня, на одной GPU. Загрузил аудиофайл и ответил на все вопросы: транскрипция, протокол, задачи и тд. Без ручных запросов к ИИ. А если хочется что-то уточнить — чат тут же, с сохранением истории.

Готовый проект: github.com/Chashchin-Dmitry/meeting-llm


1. Подготовка системы

1.1. Требования к железу

Компонент

Минимум

Рекомендуется

GPU (для LLM)

16GB VRAM

24GB VRAM (RTX 3090/4090)

CPU (для STT)

4 ядра

8+ ядер

RAM

8GB

16GB+

Диск

50GB

100GB+ (модели весят много)

В проекте я тестирую на RTX 3090 (24GB), но подойдёт и видеокарта с 16GB VRAM при использовании квантизации.

1.2. Выбор моделей

Транскрипция — T-One (T-Tech):

Все гайды про транскрипцию используют измученную модель Whisper-large-v3, но я бы хотел обратить внимание на STT от T-Банка, которая показывает достойнейшее качество. Единственный момент, что не выдается пунктуация, но ее можно докрутить мелкой ИИ моделью по типу sbert_punc_case_ru. Вот мои плюсы по модели:

  • Отлично работает на CPU (GPU не требуется!)

  • Оптимизирована для русского языка и телефонии

  • Отличный баланс скорость/качество

Подробнее о том, какие модели можно выбрать в качестве STT: alphacephei.com/nsh/2025/04/18/russian-models.html

ИИ-анализ — GPT-OSS-20B (OpenAI):

Мне нравится эта модель тем, что это идеальный баланс, между размером и качеством. Я акти��но ее использую для всех своих проектов, ведь она покрывает 90% требований по проектам. Также пробижимся по плюсам:

  • 20 миллиардов параметров — не так много для современных стандартов

  • Высокая скорость генерации (tokens/sec)

  • Встроенные режимы рассуждения

  • Отличные аналитические способности

1.3. Поддерживаемые ОС

  • Ubuntu / Debian

  • Windows (через WSL или Docker Desktop)

  • macOS (на M1/M2/M3 — с ограничениями)

1.4. Установка Docker

Скачайте Docker для вашей ОС:

1.5. Архитектура системы

Общий пайплайн обработки совещания:

Архитектура Meeting-LLM
Архитектура Meeting-LLM

2. Установка Docker-образов

2.1. T-One (транскрипция)

# Первый запуск (скачивание и создание контейнера)
docker run -d --name t-one-stt -p 8080:8080 tinkoffcreditsystems/t-one:0.1.0

# Проверить что запустился
docker ps | grep t-one

# Последующие запуски
docker start t-one-stt

После запуска откройте http://localhost:8080 — там веб-интерфейс для тестирования (можно закинуть аудио или говорить в микрофон).

Подробнее: https://github.com/voicekit-team/T-one

2.2. GPT-OSS-20B через vLLM

Важно: Версия vLLM зависит от вашей видеокарты!

# Первый запуск (скачивание модели ~40GB, займёт время)
docker run -d --gpus all --name vllm-server -p 8000:8000 --ipc=host \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  vllm/vllm-openai:v0.10.2 \
  --model openai/gpt-oss-20b

# Проверить что запустился (модель грузится ~5-10 мин)
docker logs -f vllm-server

# Последующие запуски
docker start vllm-server

Совместимость vLLM и CUDA:

Версия

Примечание

v0.10.2

минимальная для GPT-OSS-20B

v0.11.2

стабильная, работает с CUDA 12.8

v0.12.0

требует CUDA 12.9+

Чтобы узнать какая версия vLLM вам нужна — скиньте вашу видеокарту в ChatGPT вместе с этой ссылкой: https://docs.vllm.ai/projects/recipes/en/latest/OpenAI/GPT-OSS.html


3. Установка проекта

# Клонируем репозиторий
git clone https://github.com/Chashchin-Dmitry/meeting-llm.git
cd meeting-llm

4. Настройка окружения

4.1. Создайте файл .env

cp .env.example .env

4.2. Отредактируйте .env

# База данных (MySQL)
DATABASE_URL=mysql+pymysql://root:ваш_пароль@localhost:3306/meeting_llm

# Сервисы
STT_URL=http://localhost:8080
LLM_URL=http://localhost:8000/v1/chat/completions
LLM_MODEL=openai/gpt-oss-20b

# Логирование
LOG_LEVEL=INFO

4.3. Создайте базу данных

mysql -u root -p -e "CREATE DATABASE meeting_llm;"

5. Запуск приложения

5.1. Запустите Docker-контейнеры

# Если контейнеры уже созданы (см. пункт 2)
docker start t-one-stt vllm-server

# Проверить статус
docker ps

5.2. Установите Python-зависимости

# Создать виртуальное окружение
python -m venv venv

# Активировать (Linux/Mac)
source venv/bin/activate

# Активировать (Windows)
venv\Scripts\activate

# Установить зависимости
pip install -r requirements.txt

Первый запуск занимает время — скачиваются все пакеты.

5.3. Запустите backend

python -m uvicorn backend.main:app --host 0.0.0.0 --port 8001

5.4. Откройте приложение

http://localhost:8001

Backend сам отдаёт frontend — отдельный веб-сервер не нужен.


6. Что получилось

Вот так нас встречает приложение:

Изоб. 1. Главный экран (светлая тема)
Изоб. 1. Главный экран (светлая тема)
Изоб. 2. Главный экран (темная тема)
Изоб. 2. Главный экран (темная тема)

Давайте загрузим файл нашего Zoom совещания:

Изоб. 3. Экран загрузки совещания
Изоб. 3. Экран загрузки совещания
Изоб. 4. Успешная загрузка файла.
Изоб. 4. Успешная загрузка файла.

Слева нажимаем на наше совещание и посмотрим прогресс. Результат транскрипции мы видим в режиме реального времени.

Изоб. 5. Анализ в режиме реального времени
Изоб. 5. Анализ в режиме реального времени

Давайте же посмотрим, что выдаст наше вайб-приложение в анализе с ИИ.

Изоб. 6. Первый результат анализа с ИИ
Изоб. 6. Первый результат анализа с ИИ
Изоб. 7. Продолжение анализа с ИИ
Изоб. 7. Продолжение анализа с ИИ
Изоб. 8. Продолжение анализа с ИИ (х2)
Изоб. 8. Продолжение анализа с ИИ (х2)

Как мы видим, ИИ сам сгенерировал резюме, задачи и ключевые моменты встречи прямо с тайм-кодами. События, правда, пустые, потому что о них речи действительно не шло.

Давайте же помучаем ручными запросами ИИ на тему нашего совещания.

Изоб. 9. Открываем окно "Чат" внутри совещания
Изоб. 9. Открываем окно "Чат" внутри совещания
Изоб. 10. Получаем первый результат в окне "Чат"
Изоб. 10. Получаем первый результат в окне "Чат"

Если мы нажмем на "Спросить у ИИ" случайный элемент внутри совещания, то наш бекенд автоматически пошлет запрос в ИИ. Например, тут я нажимаю на "Ключевые моменты", чтобы он мне их разжевал.

Изоб. 11. Нажимаем на "Спросить у ИИ"
Изоб. 11. Нажимаем на "Спросить у ИИ"
Изоб. 12. Результат "Спросить AI"
Изоб. 12. Результат "Спросить AI"

Резюмируем возможности:

  1. Загрузка аудио/видео — drag & drop, поддержка WAV, MP3, M4A, MP4

  2. Автоматическая транскрипция — с таймкодами

  3. ИИ-анализ — резюме, задачи, решения, события, вопросы

  4. Чат с ИИ — задавайте вопросы по совещанию

  5. Готовые промпты — частые вопросы одним кликом

  6. История — все встречи и чаты сохраняются

  7. Интеграция CRM — (в разработке)


Заключение

Получился достойный подарок вам на будущий год! Копируйте, пользуйтесь, и держите ваши данные в безопасности, развернув это веб-приложение на своем железе!


Ссылки


Буду рад за лайк и подписку на канал :) https://t.me/notes_from_cto