AAYMA
RU
Войти

Cactus

Локальное Streamlit-приложение: распознаёт аудиозапись совещания с диаризацией, извлекает поручения локальной LLM и выгружает протокол в DOCX.

Рабочий MVP
Команда «Cactus» 6💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Cactus
Кейс HackAlem.ai: Инновации — Самрук-Казына
Стадия: Рабочий MVP

Задача кейса: «Хаттама»: протокол и поручения по аудиозаписи совещания (каз./рус./смешанная речь)

Суть

Локальное Streamlit-приложение: распознаёт аудиозапись совещания с диаризацией, извлекает поручения локальной LLM и выгружает протокол в DOCX.

Как устроено

Аудио обрабатывается локально на Apple Silicon: ASR whisper-large-v3-turbo-q4 (MLX) с пословными таймстемпами, диаризация pyannote speaker-diarization-community-1, выравнивание слов по спикерам с ручной правкой меток. Затем Ollama с qwen2.5:7b извлекает поручения, пользователь редактирует их и скачивает протокол DOCX; есть пакетная обработка и проверка результатов.

Ключевые решения

  • Whisper large-v3-turbo (MLX, q4)
  • pyannote speaker diarization
  • word-level timestamp alignment
  • local LLM action extraction
  • DOCX export

Особенности

Полностью локальная обработка: аудио и транскрипты не покидают Mac, модели закреплены по ревизиям HuggingFace.

Стек

Python · Streamlit · MLX · pyannote · Ollama · FFmpeg

Модели

whisper-large-v3-turbo-q4 · pyannote speaker-diarization-community-1 · qwen2.5:7b (Ollama)


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-0aa7de99-cactus.

README

README.md

Cactus — local meeting protocol (Track 8)

This is the team's local Track 8 app. It has been run on an Apple Silicon Mac with macOS and Python 3.12. Use an Apple Silicon Mac with enough memory and disk for the local models; Intel Macs and other platforms have not been tested. Install FFmpeg (including ffprobe) and have curl and tar available. The first setup needs internet access to install dependencies and download models. Processing uses local models; meeting audio and transcripts stay on the Mac.

One-time setup

From a clone of this repository:

cd ~/Downloads/track8
python3.12 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
mkdir -p models/whisper models/diarization models/ollama-runtime
.venv/bin/python - <<'PY'
from huggingface_hub import snapshot_download
snapshot_download(
    repo_id="mlx-community/whisper-large-v3-turbo-q4",
    revision="660c343bbf4e52ac257f0b7d952e5388e6f93bef",
    local_dir="models/whisper",
)
snapshot_download(
    repo_id="pyannote-community/speaker-diarization-community-1",
    revision="8a527374977391da736e0daaef26855d949d9685",
    local_dir="models/diarization",
)
PY
curl -fL https://github.com/ollama/ollama/releases/download/v0.34.3/ollama-darwin.tgz -o /private/tmp/track8-ollama.tgz
tar -xzf /private/tmp/track8-ollama.tgz -C models/ollama-runtime

Start Ollama in one terminal, from the repository root:

OLLAMA_HOST=127.0.0.1:11434 OLLAMA_NO_CLOUD=1 \
OLLAMA_MODELS="$PWD/models/ollama" models/ollama-runtime/ollama serve

In another terminal, download the extraction model once:

cd ~/Downloads/track8
OLLAMA_HOST=127.0.0.1:11434 OLLAMA_MODELS="$PWD/models/ollama" \
models/ollama-runtime/ollama pull qwen2.5:7b

Launch and export a protocol

Keep Ollama running. In the second terminal:

cd ~/Downloads/track8
export ASR_MODEL="$PWD/models/whisper"
export DIARIZATION_MODEL="$PWD/models/diarization"
export OLLAMA_MODEL=qwen2.5:7b
export OMP_NUM_THREADS=1
export VECLIB_MAXIMUM_THREADS=1
.venv/bin/python -m streamlit run app.py --server.address 127.0.0.1 --server.port 8501

Open http://127.0.0.1:8501. Upload a local MP3, WAV, or M4A recording. Click “1. Распознать запись / принять транскрипт”; correct speaker labels if needed. Click “2. Извлечь поручения локально”, review or edit the actions, then click “Скачать протокол DOCX”. The browser downloads the generated document; do not commit recordings, transcripts, or generated protocols. For batch processing and local output checks, see LOCAL_RUN.md.

Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
10
Авторы
2
Файлы
9
Ветки
1

Авторы коммитов

Mustafa Darkhanuly 8Mustafa_dk18 2

История коммитов

  • 2026-09-23 17:53Document local Track 8 deployment and ignore local artifactsMustafa Darkhanuly
  • 2026-09-23 17:47Revert "Import safe local protocol implementation from adiletexe"Mustafa Darkhanuly
  • 2026-09-23 17:40Import safe local protocol implementation from adiletexeMustafa Darkhanuly
  • 2026-09-23 17:10Generalize local action extraction and track batch regressionMustafa Darkhanuly
  • 2026-09-23 17:03Add batch processing and document exportMustafa Darkhanuly
  • 2026-09-23 15:43Add word-level timestamps for speaker alignmentMustafa Darkhanuly
  • 2026-09-23 15:40Merge HackAlem repository historyMustafa Darkhanuly
  • 2026-09-23 15:28Initial Track 8 prototype with ASR and diarization pipelineMustafa Darkhanuly
Все коммиты (10)
  • 2026-09-23 13:58Update README.mdMustafa_dk18
  • 2026-09-23 13:57Update README.mdMustafa_dk18
Структура репозитория (9 файлов)
.gitignore
LOCAL_RUN.md
README.md
app.py
batch_run.py
check_results.py
document_export.py
pipeline.py
requirements.txt

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.