94 lines
5.3 KiB
Markdown
94 lines
5.3 KiB
Markdown
---
|
||
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 документ
|