OddMinutes:开源的全能会议纪要助手

一、前言

开源的智能会议纪要系统,支持实时录音、AI 转录、智能摘要生成和音字联动功能,基本上我能想到的一些功能都已经支持了。

而且也支持全私有化部署,确保所有数据都只能您自己的电脑上,保护您的隐私。

虽然豆包的音频纪要功能仍然免费可用,但OddMinutes 小奥会议纪要是专门做会议纪要的,可以做到比豆包更专业,可用性、安全性、隐私等方面更强。

当然如果您有一些其他的功能需求、功能建议的话,也欢迎给我提出来,我看看是不是可以加进去。

二、使用步骤

  1. 配置你自己的ASR和LLM服务器,只要支持OpenAI接口的都行。ASR推荐用我的 OddAsr 私有部署,LLM推荐用Ollama私有部署或者是任意公有云的。
  2. 导入已有的会议音频,进行转写,并生成会议纪要、会议总结、会议待办
  3. Windows系统上,支持系统托盘,方便快速管理和操作小奥会议纪要

主要有三个外部依赖:
ffmpeg: 用于将录制下来的音频、或者是导入的音频转换成mp3格式
ASR服务:用于将音频转换成文字
LLM服务:用于将会议纪录生成会议纪要、会议总结和会议待办
其中ASR服务和LLM服务,对应到小奥会议纪要 Web 界面左下角的配置里的两个配置项。全都支持私有化本地部署。

三、功能特性

  • 🎙️ 麦克风 + 系统音频双轨录制 – 支持同时录制麦克风和系统音频,带自动增益控制(AGC)
  • 📝 AI 实时转录 – 对接 OddASR 服务,支持字级时间戳输出
  • 🤖 智能摘要生成 – 支持 Ollama/OpenAI/Claude/Groq 多种 LLM 提供商
  • 🔗 音字联动 – 点击文字跳转到音频对应位置,播放时高亮当前文字
  • 📤 多格式导出 – 支持 TXT、Markdown、JSON 格式导出
  • 🔍 全文搜索 – 支持转录内容搜索
  • ⏱️ 录音暂停/恢复 – 支持录音过程中暂停和恢复

四、快速安装

# 基础安装
pip install OddMinutes

# Windows 用户(包含系统托盘和快捷键支持)
pip install OddMinutes[windows]

# 启动程序
OddMinutes

首次运行时,程序会自动初始化数据库并创建用户数据目录。

Windows下会在桌面自动创建两个快捷方式,具体如下图所示:

五、外部服务依赖

主要是两个依赖:一个是ASR服务,另一个是LLM服务。对应到小奥会议纪要 Web 界面左下角的配置里的两个配置项。全都支持私有化本地部署。

1. OddASR 语音识别服务

必需 – 用于音频转录,提供 OpenAI 兼容的 /v1/audio/transcriptions 接口。

安装 OddASR 服务

pip install oddasr

运行 OddASR 服务

oddasr-server

在小奥会议纪要的Web界面左下角配置 OddAsr的地址

  • 默认地址:http://127.0.0.1:9002
  • 配置文件:.env 中的 ODDASR_HOSTODDASR_PORT
  • 支持 verbose_json 响应格式,返回段级和字级时间戳

2. Ollama / LLM 服务

可选 – 用于 AI 摘要生成。

  • 默认地址:http://localhost:11434(Ollama)
  • 支持提供商:Ollama(本地)、OpenAI、Claude、Groq
  • 通过 pydantic-ai 库统一调用

3. FFmpeg

必需pydub 依赖 FFmpeg 进行音频格式转换。

六、安装与运行

环境要求

  • Python 3.12+
  • FFmpeg(需添加到系统 PATH)
  • OddASR 服务(运行中)
  • Ollama(可选,用于本地 LLM 摘要)

PyPI 安装(推荐)

# 基础安装
pip install OddMinutes

# Windows 用户(包含系统托盘和快捷键支持)
pip install OddMinutes[windows]

启动程序

OddMinutes

首次运行时,程序会自动完成以下操作:

  • 初始化数据库(自动执行 migrate)
  • 创建用户数据目录(位于 %APPDATA%\Local\OddMeta\OddMinutes~/.local/share/OddMeta/OddMinutes
  • 复制必要的配置文件

开发安装(从源码)

git clone https://github.com/oddmeta/OddMinutes.git
cd OddMinutes

# 安装开发依赖
pip install -r requirements.txt

# 安装 Windows 额外依赖(Windows 用户)
pip install pywin32 keyboard pynput

# 配置环境变量
copy .env.example .env

编辑 .env 文件,设置关键配置:

# Django 配置
DJANGO_SECRET_KEY=your-secret-key-here
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1

# OddASR 配置(必需)
ODDASR_HOST=127.0.0.1
ODDASR_PORT=9002

# Ollama 配置(可选,用于本地 LLM)
OLLAMA_HOST=http://localhost:11434

# 音频配置
AUDIO_SAMPLE_RATE=16000
AUDIO_CHANNELS=1
AUDIO_CHUNK_DURATION=5

# 会议设置
AUTO_CLEANUP_DAYS=7
MAX_AUDIO_FILE_SIZE=500

初始化数据库

python manage.py migrate
python manage.py init_defaults

启动服务

# 使用启动脚本
start.bat

# 或直接运行
python manage.py runserver 127.0.0.1:9011

# 或使用命令行入口
python launcher.py

服务启动后访问:http://127.0.0.1:9011

用户数据目录

通过 PyPI 安装后,用户数据和配置文件存储在以下位置:

  • Windows: %APPDATA%\Local\OddMeta\OddMinutesC:\Users\<用户名>\AppData\Local\OddMeta\OddMinutes
  • Linux: ~/.local/share/OddMeta/OddMinutes
  • macOS: ~/Library/Application Support/OddMeta/OddMinutes

该目录包含:

  • .env – 环境变量配置文件
  • db.sqlite3 – SQLite 数据库文件
  • media/ – 音频文件存储目录
  • logs/ – 日志文件目录

七、配置说明

环境变量默认值使用模块说明
DJANGO_SECRET_KEYdjango-insecure-change-me全局Django 安全密钥
DEBUGTrue全局调试模式
ALLOWED_HOSTSlocalhost,127.0.0.1全局允许的主机
ODDASR_HOST127.0.0.1transcriptionOddASR 服务主机
ODDASR_PORT9002transcriptionOddASR 服务端口
OLLAMA_HOSThttp://localhost:11434summaryOllama 服务地址
AUDIO_SAMPLE_RATE16000recording音频采样率
AUDIO_CHANNELS1recording音频通道数
AUDIO_CHUNK_DURATION5recording音频块持续时间(秒)
AUTO_CLEANUP_DAYS7meetings自动清理天数
MAX_AUDIO_FILE_SIZE500全局最大音频文件大小(MB)

八、前端功能

音字联动

前端实现了音频播放与文字的双向联动:

  1. 播放时高亮:音频播放到某个时间点,自动高亮对应的 word 和 segment
  2. 点击跳转:点击某个 word,音频跳转到对应时间点并开始播放
  3. 拖动同步:拖动音频进度条,自动滚动到对应的文字位置

转录编辑模式

支持对转录内容进行编辑:

  • 编辑转录文本
  • 修改发言人名称
  • 批量保存修改

实时电平监测

通过 WebSocket 实时显示麦克风和系统音频的电平:

  • 实时电平条显示
  • AGC 增益信息提示
  • 峰值监测

搜索功能

支持在所有会议的转录内容中进行全文搜索,返回匹配的会议列表和上下文。

九、开发命令

# 启动开发服务器
python manage.py runserver 127.0.0.1:9011

# 创建数据库迁移
python manage.py makemigrations

# 执行数据库迁移
python manage.py migrate

# 初始化默认数据
python manage.py init_defaults

# 创建超级用户
python manage.py createsuperuser

# 进入 Django Shell
python manage.py shell

# 运行测试
python manage.py test

十、注意事项

  1. OddASR 服务:使用前请确保 OddASR 服务已启动并正常运行
  2. FFmpeg:安装 pydub 前需确保 FFmpeg 已安装并添加到系统 PATH
  3. Ollama:使用本地 LLM 生成摘要时,需先 ollama pull qwen3:8b 下载模型
  4. 音频设备权限:首次使用录音功能时需授予麦克风权限
  5. 系统音频录制:Windows 下录制系统音频需要启用立体声混音设备或使用虚拟音频线缆

License

MIT License