From c196f14ae9aeaffd36447675802759988e3ae1af Mon Sep 17 00:00:00 2001 From: slonovaad Date: Tue, 21 Apr 2026 18:07:11 +0000 Subject: [PATCH] Add md files --- QUICKSTART.md | 17 ++++++++++ README.md | 72 +++++++++++++++++++++++++++++++++++++++ SKILL.md | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 183 insertions(+) create mode 100644 QUICKSTART.md create mode 100644 README.md create mode 100644 SKILL.md diff --git a/QUICKSTART.md b/QUICKSTART.md new file mode 100644 index 0000000..4cf3c69 --- /dev/null +++ b/QUICKSTART.md @@ -0,0 +1,17 @@ +# QUICKSTART — meeting-report + +## 1. Зависимости +apt-get update && apt-get install -y ffmpeg +pip install faster-whisper weasyprint + +## 2. Если故意 запускаешь long транскрипцию +export MKL_SERVICE_FORCE_INTEL=1 +export OMP_NUM_THREADS=2 + +bash scripts/transcribe_chunked.sh /app/hermes_data/meetings/2026-03-18 + +## 3. Генерация PDF +python3 scripts/generate_pdf.py report.md report.pdf + +## ПАМЯТКА +Всегда используй MKL_SERVICE_FORCE_INTEL=1 OMP_NUM_THREADS=2 перед запуском Python + faster-whisper! diff --git a/README.md b/README.md new file mode 100644 index 0000000..d45688d --- /dev/null +++ b/README.md @@ -0,0 +1,72 @@ +# meeting-report — генерация отчётов по аудиозаписям встреч + +## Функционал +- Транскрипция WAV аудио через faster-whisper +- Генерация аналитического отчёта в Markdown +- Экспорт в PDF (через pandoc или weasyprint) + +## Установка зависимостей (Docker/Debian-based) +apt-get update && apt-get install -y ffmpeg pandoc texlive-xetex texlive-lang-cyrillic fonts-noto +pip install faster-whisper weasyprint + +## Быстрый старт + +### Шаг 0. Подготовка аудио +Положите WAV файл(ы) в папку встречи: +/app/hermes_data/meetings/YYYY-MM-DD/ + +### Шаг 1. Установка переменных окружения (КРИТИЧНО!) +Перед запуском транскрипции НУЖНО установить: +export MKL_SERVICE_FORCE_INTEL=1 +export OMP_NUM_THREADS=2 + +Без этого скрипт упадёт на втором чанке с ошибкой: +Intel oneMKL FATAL ERROR: Cannot load libctranslate2.so + +### Шаг 2. Запуск транскрипции +bash /app/hermes_data/skills/meeting-report/scripts/generate_report.sh /app/hermes_data/meetings/2026-03-18 + +Для длительных файлов (>30 мин) используется автоматическое разбиение на чанки. + +### Шаг 3. Создание аналитического отчёта +После получения transcription/merged_plain.txt: +1. Прочитайте транскрипцию +2. Создайте report.md со структурой: + - Краткая выжимка (1-2 абзаца) + - Ход совещания (подробно) + - Ключевые решения (список) + - Задачи и ответственные + - Итоги и следующие шаги + +### Шаг 4. Генерация PDF + +Вариант A: Через pandoc (требует texlive) +pandoc report.md -o report.pdf --pdf-engine=xelatex -V mainfont="Noto Sans CJK SC" + +Вариант B: Через weasyprint (проще) +pip install weasyprint +python3 generate_pdf.py report.md report.pdf + +## Результаты +- transcription/merged_plain.txt — полная транскрипция +- report.md — аналитический отчёт Markdown +- report.pdf — финальный PDF документ + +## Типичные ошибки + +Ошибка: Intel oneMKL FATAL ERROR +Решение: Установите MKL_SERVICE_FORCE_INTEL=1 OMP_NUM_THREADS=2 + +Ошибка: pandoc command not found +Решение: apt-get install pandoc texlive-xetex texlive-lang-cyrillic + +Ошибка: weasyprint command not found +Решение: pip install weasyprint + +Ошибка: Нет кириллицы в PDF +Решение: Используйте fonts-noto или weasyprint + +## Время обработки +- Модель small: 5-10 мин на 10 мин аудио +- 1 час аудио = 30-60 минут обработки +- Длительные процессы запускайте в фоне: nohup script.sh & diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..df9b11d --- /dev/null +++ b/SKILL.md @@ -0,0 +1,94 @@ +--- +name: meeting-report +description: "Генерирует PDF-отчёт по аудиозаписи встречи: расшифровка, аналитический пересказ, ключевые решения и задачи. Использует faster-whisper (model small), ffmpeg, weasyprint." +--- + +# Навык: автоматическая генерация отчёта по аудиозаписи встречи + +## Важные ограничения (читай первым!) +- **ОБЯЗАТЕЛЬНО установи переменные окружения** перед запуском транскрипции: `MKL_SERVICE_FORCE_INTEL=1 OMP_NUM_THREADS=2`. Без этого скрипт упадёт на втором чанке с ошибкой "Intel oneMKL FATAL ERROR: Cannot load libctranslate2.so". +- **НЕ пытайся запускать `faster-whisper`** как отдельную команду без этих переменных. Это Python-библиотека, вызывается через скрипты (`local_whisper.py`, `transcribe.sh`) с правильными параметрами. +- **НЕ изобретай свои собственные команды** для транскрипции или конвертации. Всё уже реализовано в готовых bash-скриптах. +- **Единственное, что ты должен сделать** – определить папку с аудио, убедиться, что переменные окружения установлены, и выполнить один скрипт. +- **Для генерации PDF:** Если `pandoc` не работает (нет шрифтов кириллицы), используй `weasyprint` (Python пакет). +- **Все процессы более 5 минут запускай в фоне** (`nohup ... &`) — execute_code имеет таймаут 5 минут. + +## Структура навыка +- `scripts/overlay.sh` — обёртка запуска с MKL переменными +- `scripts/local_whisper.py` — транскрипция аудио through faster-whisper +- `scripts/transcribe_chunked.sh` — транскрипция больших файлов (>30 мин) с разбиением на чанки +- `scripts/merge_transcriptions.py` — объединение результатов транскрипции +- `scripts/generate_pdf.py` — генерация PDF через weasyprint +- `README.md` — полная документация +- `QUICKSTART.md` — шпаргалка по быстрому запуску + +## Как именно запускать + +### Шаг 0. Определи директорию встречи +Пользователь укажет папку с аудиофайлами. По умолчанию: +``` +/app/hermes_data/meetings/YYYY-MM-DD/ +``` +Если пользователь указал другой путь – используй его. + +### Шаг 1. Проверь наличие аудиофайлов +```bash +ls /app/hermes_data/meetings/2026-03-18/*.wav +``` + +### Шаг 2. Установи переменные окружения (КРИТИЧНО!) +```bash +export MKL_SERVICE_FORCE_INTEL=1 +export OMP_NUM_THREADS=2 +``` +Или передай перед python3: +```bash +MKL_SERVICE_FORCE_INTEL=1 OMP_NUM_THREADS=2 python3 local_whisper.py ... +``` + +### Шаг 3. Запусти транскрипцию +Для коротких файлов (<30 мин): +```bash +bash scripts/overlay.sh /app/hermes_data/meetings/2026-03-18 +``` + +Для длинных файлов (>30 мин): +```bash +bash scripts/transcribe_chunked.sh /app/hermes_data/meetings/2026-03-18 +``` + +### Шаг 4. Создай аналитический отчёт +После получения `transcription/merged_plain.txt`: +1. Прочитай транскрипцию +2. Создай `report.md` со структурой: + - Краткая выжимка (1-2 абзаца) + - Ход совещания (подробно) + - Ключевые решения (список) + - Задачи и ответственные (срок действия) + - Итоги и следующие шаги + +### Шаг 5. Генерация PDF +Если pandoc недоступен: +```bash +python3 scripts/generate_pdf.py report.md report.pdf +``` + +## Типичные ошибки + +| Ошибка | Причина | Решение | +|--------|---------|---------| +| `Intel oneMKL FATAL ERROR` | Нет переменных окружения | Добавить `MKL_SERVICE_FORCE_INTEL=1 OMP_NUM_THREADS=2` | +| `No WAV file found` | Нет аудиофайлов | Положить WAV в папку встречи | +| `weasyprint: command not found` | Нет пакета | `pip install weasyprint` | +| `ffmpeg: command not found` | Нет ffmpeg | `apt-get install ffmpeg` | + +## Время обработки +- Модель small: ~5-10 мин на 10 мин аудио +- 1 час аудио = 30-60 минут обработки +- Запускай в фоне: `nohup bash script.sh > /tmp/transcribe.log 2>&1 &` +- Следи: `tail -f /tmp/transcribe.log` + +## Результат +- `transcription/merged_plain.txt` — полная транскрипция +- `report.md` — аналитический отчёт Markdown +- `report.pdf` — финальный PDF документ