三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

小奥录音更新:实时字幕500ms、说话人分离优化、导出pdf、加入安全认证等

小奥录音更新:实时字幕500ms、说话人分离优化、导出pdf、加入安全认证等

关于小奥录音 OddMinutes

小奥录音是一个开源的智能音频会议系统,支持实时录音、AI 转录、智能摘要生成和音字联动功能,也支持导入已有的音频进行转录、总结。跟 Meetily 一样,支持全链路私有化部署,完全离线运行。

Slogan:让会议的每一分钟,都被听见、被记录、被理解 —— OddMinutes 小奥录音

项目地址:https://github.com/oddmeta/oddminutes
文档地址:https://oddmeta.net/docs/oddminutes/

安装:pip install oddminutes
运行:oddminutes
Web前端: http://localhost:9011

最近两个周末,一边改 OddASR,一边陆陆续续的用 OddASR 再来一点点完善小奥录音的各项功能,今天向pypi发布了个阶段性的版本v0.1.10。然后这里汇总一下与上个版本相比做的一些修改、调整与完善,简单讲的话主要就是:围绕实时字幕、导出功能、说话人识别、AI纪要等核心体验进行了一些升级。具体看下面。


一、新功能

1. 实时字幕上线(500ms 超低延迟)

结合最新版 OddASR,小奥录音加入了实时字幕功能,首字时延低至500ms

  • 字幕风格参照主流音乐播放器,支持拖动调整字幕显示位置
  • 默认不启用,可在系统设置中手动开启
  • 录音控制面板新增「显示字幕」按钮,一键控制字幕显隐

2. 导出功能全新重构

导出功能经过彻底重设计:

  • 点击导出按钮后弹出选择框,可自由勾选导出内容:音频文件、会议文本、AI摘要
  • 导出前自动检查数据库中是否已有对应的 PDF 文件,智能判断是否需要重新生成
  • 勾选的导出文件自动打包成ZIP提供下载,文件名用会议名称(中文文件名兼容)
  • 导出的 PDF 新增页眉小奥录音 Logo + Slogan、页脚副标题与官网地址
  • PDF 支持水印,包含产品标识与导出时的登录用户信息,防泄漏更安心
  • 导出接口必须登录后才能操作

3. 说话人能力增强

利用最新版本的 OddASR,对说话人分离功能进行了一些优化,可指定本会议中最多有多少人发言,包括自动检测说话人的最大数据和实际分离的数量,同时转写后生成的说话人0,说话人1,说话人2也可支持在界面上修改名字,并支持同一说话人修改后,在整个会议里批量改名更新。

  • 说话人名字编辑:转录文本界面双击说话人即可编辑名字;若某说话人修改了名字,会提示是否将本会议中所有相同说话人的名称一并替换,界面与数据库同步更新
  • 离线说话人分离人数配置:根据 OddASR 接口支持,可指定本会议中最多有多少人发言(offlinePresetSpkNum/offlineMaxNumSpks

需要配合OddASR v2.5.5 才能支持,要体验此功能,需先升级一下 OddASR。

pipinstall-Uoddasr

4. AI 纪要全面升级

这些功能都是我自己这几天使用中一点点完善的,有的问题是受限于硬件配置(受限于大模型最大上下文,AI摘要的时候切片进行摘要,然后再合并成一个完整的摘要)。

  • AI摘要滑动窗口可配置:块大小 5000、重叠 1000、步进 4000 三个参数可在系统设置中调整并持久化
  • AI摘要面板全新改版:从卡片列表样式重设计为正式的报告/纪要文档样式,包含报告头部(会议名、生成时间、元信息)与精致排版,支持打印/PDF 导出
  • 启动自动初始化模板:启动时自动检测 AI 摘要模板是否存在,缺失时自动补全初始化数据

5. 用户体系接入

这个功能的主要目的是想保护一下数据,原先的时候没有用户、权限的管理,启动了OddMinutes后就直接可以看到所有会议,感觉这样不太安全,也没有什么隐私,所以就顺手给加了个简易的用户认证子系统。

  • 所有数据表加入user 属性
  • 所有业务 API(会议、录音、转写、摘要等)现在均需要携带有效的 Token才能访问
  • 正在评估中国电信 API 数据结构规划新版本适配(只是看到了一个中国电信的API文档,感觉有点意思,但是没实际需求,所以做不做什么时候做,要看心情)

二、体验优化

一些勉强可以称得上优化的调整。

  • 转录文本分段优化:按句号、问号、感叹号智能分段,避免同一人超长语音堆挤成超大段落
  • 编辑模式重构:编辑按钮移动到每个 segment,悬浮时显示,支持逐段编辑;编辑未保存的内容会在界面标出
  • 编辑后播放定位修复:编辑状态下点播放,文字位置重新计算,准确定位到当前片段
  • 音频收发日志优化:音频收发与流式转写 WebSocket 状态日志更清晰
  • 通知历史优化:标题中增加会议名称,方便快速定位
  • Tailwind 本地化:将 CDN 引入的 Tailwind 改为本地资源,离线环境也可用
  • 静音裁剪开关:音频转 MP3 后是否去首尾静音改为配置项控制

三、Bug 修复

使用中发现的一堆杂七杂八的问题,一个个修复了一下。

  • 静音裁剪过度剪切:修复裁剪导致大量有效音频内容被误剪的问题(FFmpeg 7.x 兼容处理)
  • 音频进度条无法拖动:新增修复功能,重新编码 MP3 修复 VBR 头信息与 seek 表,解决浏览器播放进度条定位不准的问题
  • AI 摘要无法重新生成:修复生成一半服务端退出后无法再次生成的问题
  • Linux 版本号异常:修复 Linux 环境下检测到版本号为 0.0.0 的问题
  • 系统通知错误:修复修改系统配置时通知标题误显示为会议名称的问题
  • 会议标题更新:更新标题前先判断是否有变化,避免无效触发

四、工程与部署

  • 打包优化:构建 wheel 时排除编译临时文件(__pycache__/.pyc),避免 “is not a supported wheel on this platform” 等跨平台安装报错
  • 版本检查:新增自动检测新版本功能(从 PyPI 获取最新版本),方便及时更新

五、下期预告

  • 中国电信 API 版本适配(别期待,做不做看心情)
  • 持续打磨实时字幕与导出体验

感谢大家的关注与支持!有任何问题或建议,欢迎留言反馈 🙌

Slogan:让会议的每一分钟,都被听见、被记录、被理解 —— OddMinutes 小奥录音

项目地址:https://github.com/oddmeta/oddminutes
文档地址:https://oddmeta.net/docs/oddminutes/

← 返回列表