Skip to content

Releases: Bronzesakon/MiMo-ASR-Assistant

Latest build (main, 2026-09-11 18:44:18 UTC+8)

Choose a tag to compare

@github-actions github-actions released this 11 Sep 06:51

构建开始 2026-09-11 18:44:18(UTC+8) · 提交 2026-09-11 18:43:38(UTC+8) · commit f318ac4 · v1.1.4

1.1.4

Choose a tag to compare

@Bronzesakon Bronzesakon released this 08 Aug 14:48

MiMo ASR Assistant v1.1.4 发布说明

2026-08-07 | 音频解码引擎切换版本

本说明逐条对照当前代码/diff 核验,不保留「代码未实现/已被替换但文档宣称已完成」的条目。


核心变更:改用精简 ffmpeg 实现音视频通吃,取代有限支持的 Rust 自实现

问题背景:此前音频解码依赖纯 Rust 自实现(symphonia + rubato + hound)做「输入容器 → 解码 → 重采样 → PCM」的逐采样管线。该方案对解码器支持面有限(仅覆盖部分常见编码),对扩展容器/编码组合常解析失败,且重采样等密集计算在纯 Rust 慢路径下性能受限。

本次变更:音频解码整体切换到捆绑的精简 ffmpeg.exe(FFmpeg 9.0 --disable-everything 精简构建)作为外部进程,实现音视频通吃:

  • 输入通吃:WAV / MP3 / M4A / FLAC / AAC / OGG 等音频,以及 MP4 / MKV / MOV / AVI / FLV / TS 等视频容器——统一经 ffmpeg 提取音轨并转码为 16kHz / mono / 16bit WAV。
  • 取代 Rust 自实现:symphonia / rubato 依赖移除(Cargo.toml 不再声明),原 src-tauri/src/ffmpeg/mod.rs(纯 Rust 解码管线)删除,由 src-tauri/src/ffmpeg_exe.rs 接管。
  • 纯 Rust WAV 切片保留:WAV 域切片/解析仍由 wav_codec(纯字节操作,零解码依赖)完成;WAV 文件走直接切片快路径,非 WAV 先经 ffmpeg 归一为 WAV。
  • 完整性门禁:resources/ffmpeg.exe 与 ffmpeg.exe.sha256 入库,build.rs 编译期 SHA-256 fail-closed 门禁 + 运行时 FfmpegBin::resolve 二次校验。
  • 静默运行:ffmpeg 以 CREATE_NO_WINDOW 后台运行,无黑窗口;stderr 独立线程抽干,主线程轮询 try_wait + 取消/超时检查,Windows 上用 taskkill /T 杀进程树。
  • 无网络能力:精简构建禁用网络协议,转码全程本地,不上传任何数据。

注:v1.1.3 说明中「convert_to_wav 分段解码」「Channel buffer 8→4」等针对旧纯 Rust 解码管线(symphonia/rubato)的优化条目,已随解码整体迁移到捆绑 ffmpeg.exe 而移除,不再适用于当前代码。

其他更新

  • Markdown 实时渲染修复(延续 v1.1.3 持续优化):转写/规整结果改为实时按内容判定渲染(needsMarkdownParsing),修复「任务完成后 Markdown 仍原样显示」;流式输出时 # 标题 换行即渲染为标题、**加粗** 即时生效。移除已无用的 fileRenderMode/getRenderMode/resetRenderMode/finalizeRenderMode 死代码。
  • 导入后选中修复:导入文件后用新文件 UUID 选中(此前误用磁盘路径作 selectedFileId,导致工作区恒空);selectFile 增加 ID 存在性校验。
  • 滚动智能跟踪:滞回(deadband)双阈值,追踪中滚离底部超 60px 才关闭、回滚至 8px 内才重开,修复「跳转到底部」按钮滑动时闪烁。
  • 提示词上下按钮:设置页上移/下移按钮宽度由 28px 缩窄为 17px(原宽度五分之三)。
  • 精简诊断日志:移除逐 chunk 诊断日志,转写与规整不再刷屏;关键日志仍落盘。
  • release 文档收纳:历史 RELEASE_v*.md 统一移入 release说明文档/ 目录,该目录加入 .gitignore(不追踪)。

版本号

index.html, package.json, package-lock.json, Cargo.toml, Cargo.lock, tauri.conf.json → 1.1.4

v1.1.3

Choose a tag to compare

@Bronzesakon Bronzesakon released this 10 Jul 13:57

MiMo ASR Assistant v1.1.3 发布说明

2026-07-10 | 工程优化版本


可维护性

  • Base64 编码去重:audio/mod.rs 和 dpapi.rs 中的重复 Base64 实现提取到 src-tauri/src/base64.rs,两处引用同一份代码
  • 重试逻辑统一:三处独立的 retry loop 收归 api/mod.rs(transcribe_with_retry / chat_with_retry),消除参数不一致风险

性能

  • SSE buffer 优化:parse_sse_stream 中用 drain/consumed 模式替代 buffer = buffer[N..].to_string(),消除长流场景下的每行堆重分配
  • slice_wav 快路径:16-bit PCM 切片跳过 hound 逐采样写入,直接构造 WAV 头 + dump 原始 PCM 字节,切片速度提升 3-5x
  • convert_to_wav 分段解码:全量解码积累(60 分钟 44.1kHz 立体声 ≈ 1.27GB)改为 30 秒分段解码(峰值 ~7MB),余料结转确保无音频丢失
  • Channel buffer 8→4:内存峰值减半
  • Markdown 三层渲染:纯文本快速路径(escapeHtml 跳过 marked.js)+ 150ms debounce 聚合 + marked.js 兜底,流式场景 CPU 开销降低 ~90%
  • 规整可中断:规整中按钮变为"停止规整",点击即取消后台任务,不再需要被动等完整结果

边界条件修复

  • 音频尾部阈值 1.0→0.2s:短音频(1.5s)最后 0.5s 不再丢失
  • chunks_exact(2)→chunks(2):防御计算误差导致的尾部字节静默丢弃
  • load_config 损坏保护:JSON 解析失败时备份原文件为 config.json.bak 并输出 error 日志,不再静默降级为默认配置
  • 文件导入去重:同一 path 的文件重复导入时 toast 提示,不再添加重复条目
  • Markdown 行间距修复:white-space: pre-wrap 仅纯文本模式生效,修复 Markdown 内容 5-7x 行高问题
  • 类型安全:移除 4 处不必要的 as any

版本号

index.html, package.json, Cargo.toml, tauri.conf.json → 1.1.3

v1.1.2

Choose a tag to compare

@Bronzesakon Bronzesakon released this 08 Jul 07:48

MiMo ASR Assistant v1.1.2

新功能

自定义 OpenAI 兼容服务商

  • 规整功能新增"自定义服务商"选项,支持任意 OpenAI 兼容的 API(如 OpenRouter、硅基流动、自建代理等)
  • 点击"添加自定义服务商"打开独立弹窗,填写服务商名称、Base URL、API Key
  • "获取模型列表"按钮调用 GET /v1/models 端点,自动获取所有可用模型
  • 复选框多选模型,支持全选/取消全选,保存到 config.json
  • 选择自定义服务商后显示单独的"规整模型"下拉菜单,和内置服务商样式完全一致
  • API Key 通过 Windows DPAPI 加密存储,安全可靠
  • 点击服务商名称选中,点击编辑按钮修改配置,点击删除按钮移除

改进

视觉优化

  • 恢复主题按钮完整样式(跟随系统/亮色/暗色),选中状态增加阴影效果
  • 导出下拉框宽度缩减到 100px(原 120px 的 5/6)
  • 导出下拉框 z-index 提升到 200,防止被左侧文件栏遮挡
  • 添加自定义服务商按钮的圆角统一为 6px,和内置选项样式一致
  • 设置弹窗动画恢复(scale(0.96) + opacity,和语言选择弹窗一致)
  • 删除按钮样式和关闭按钮完全一致(28x28px),hover 显示背景框

交互改进

  • 更新模型列表后自动回退到第一个模型,防止选中模型在新列表中消失导致留空
  • 自定义服务商的字体、大小、排版完全和内置服务商(DeepSeek/MiMo)一致

Bug 修复

  • 修复设置菜单无法关闭的问题(v-show 与 Transition 冲突导致关闭事件无法传播)
  • 修复设置弹窗动画丢失(Transition 未正确触发)
  • 修复更新模型列表后选中模型留空的问题
  • 修复自定义服务商字体/样式和内置服务商不一致的问题
  • 修复导出下拉框被左侧文件栏边框遮挡的问题
  • 修复添加自定义服务商按钮的高亮背景边框不规则(上面直角下面圆弧)
  • 修复设置弹窗 padding 导致选项边框不规则的问题

技术改进

  • 新增 fetch_custom_models Tauri 命令,支持 GET /v1/models 请求和智能 URL 候选
  • 移除死代码 encodeCustomPolishValue/decodeCustomPolishValue,简化数据存储格式
  • polishProvider 格式从 custom_{providerId}{model} 简化为 custom{providerId}
  • 18 个文件修改,1172 行增加,53 行删除

v1.1.1

Choose a tag to compare

@Bronzesakon Bronzesakon released this 07 Jul 14:53

MiMo ASR Assistant v1.1.1

新功能

暂停 / 继续转写

  • 转写过程中可随时暂停,当前正在接收的分片完成后停止,已转写文本完整保留
  • 暂停后点击"继续转写"从断点分片继续,不重新切片,不丢失进度
  • 四态转写按钮:转写(默认)→ 暂停转写(红色)→ 正在暂停(黄色)→ 继续转写(绿色)
  • 暂停状态下可进行 AI 规整和导出操作
  • 应用启动时自动清理遗留的临时切片文件夹

切片时长可配置

  • 设置面板新增"切片时长"下拉菜单:10秒 / 30秒 / 60秒 / 150秒
  • 默认 10 秒(原 150 秒),按需选择更短响应或更少分片
  • 有转写/暂停任务时自动禁用修改,防止切片不一致
  • 配置持久化到 config.json,重启保持

ASR 并发提升

  • 并发数从 3 提升到 8,多文件同时转写速度显著提升
  • RPM 滑动窗口(90 RPM)自动限流,不影响 API 限制

进度条重构

  • 切片阶段不再贡献进度,进度条纯由 API 完成情况驱动
  • 公式简化为 已完成分片数 / 总分片数 × 97%
  • 分片阶段显示"准备中"文字,无进度条;首个 API 响应到达后切换为"转写中 XX%"
  • 进度条以等间距跳跃前进,每步约 0.5%(200 分片时)

转写结果去重(API 侧)

  • 经 Python 脚本独立复现确认:部分音频分片的重复输出为 MiMo ASR 模型行为,非客户端代码问题
  • 客户端数据链路(切片→编码→传输)已通过日志验证全程无损

TagFilter 增强

  • 新增对无 < 前缀的 think> 文本块的检测(逐字符状态机匹配)
  • SkipContent 模式增加 5000 字符安全限,防止未闭合标签吞掉后续所有文本

其他改进

  • 日志开关提示文字修正:移除"重启后生效"(实际已是实时生效)
  • 切片时长设置项移至"转文字"分区(原错误放在"规整"分区下)

Bug 修复

  • 修复继续转写时 API Key 使用错误字段导致 401 认证失败的问题
  • 修复继续转写时进度条回退再跃进的问题(保留累积的 transcriptionChunks)
  • 修复暂停后删除文件时临时目录未清理的问题
  • 修复设置面板切片时长下拉框在有暂停文件时仍可修改的问题

v1.1.0

Choose a tag to compare

@Bronzesakon Bronzesakon released this 05 Jul 03:26

MiMo ASR Assistant v1.1.0

新增功能

任务取消机制

  • 支持在转写/规整进行中移除文件,立即取消对应任务
  • 转写、规整三个异步流程均支持优雅取消,不影响队列中其他文件
  • 取消后静默退出,不产生错误提示

日志系统优化

  • 新增日志全局开关,设置面板实时切换
  • 精简冗余日志(前端 12→5 条,后端删除 10 条噪音日志)
  • 统一输出格式:全部改为文件名标识,便于定位
  • 日志开关状态持久化到 config.json

UI/UX 修复(9 项)

  1. 导出菜单:点击导出项后立即关闭;切换其他操作时自动关闭
  2. 设置弹窗动画:修复关闭时无动画的问题,背景渐变与面板缩放同步
  3. 进度条准确性:公式改为上传 70% + 流式接收 30% 加权,不再提前到达 100%
  4. 拖拽导入:左栏支持音频文件直接拖入,移除冗余守卫逻辑
  5. 文本选中:转写结果支持鼠标选中复制
  6. 底栏速度:删除冗余上传速度显示,保留输出字数/s,每秒自动刷新
  7. 导出弹框:修复被父容器裁切的问题,改用 opacity+transform 动画
  8. 自动滚动:转写中显示"跳转底部"按钮;向上滚动暂停自动跟随;切换文件重置
  9. 横向溢出:修复文件列表横向滚动条问题

Markdown 渲染器重写

全部 13 项修复:

  • 代码块/行内代码不再被标题、粗体等规则误匹配
  • 多行引用合并为单个 blockquote,支持内部嵌套渲染
  • 嵌套列表按缩进层级递归解析子列表
  • 自动链接裸 URL(http/https/www)
  • 新增:图片、粗斜体、任务列表、缩进代码块、转义字符支持
  • 表格单元格内容支持行内格式渲染
  • 斜体匹配改为单词边界,不再误触发变量名

设置面板

  • 新增日志开关 Toggle 组件
  • 提示文字样式优化:去掉边框和背景,改为纯灰文字

1.0.0

Choose a tag to compare

@Bronzesakon Bronzesakon released this 23 Jun 01:49

MiMo ASR Assistant v1.0.0

首个正式发布版本 — 本地音频转文字 + AI 规整增强工具


核心功能

  • 语音转文字:导入 WAV/MP3/M4A 音频,FFmpeg 自动转码为 16kHz 单声道,按分片流式调用 ASR API,实时显示转写结果
  • AI 规整:内置可自定义提示词,支持 MiMo / DeepSeek 等多个服务商,流式输出规整结果,双栏对比显示
  • 多文件批量处理:独立进度追踪,文件切换无串扰,每个文件独立的转写/规整/导出操作
  • 实时状态栏:模型信息、上传速度、输出速度、Token 统计、已完成数/总数
  • 导出:支持导出原文和规整文本为 TXT 文件

支持的服务商

服务商 转写(ASR) 规整(Chat)
MiMo API mimo-v2.5-asr mimo-v2.5、mimo-v2.5-pro
MiMo Token Plan mimo-v2.5-asr mimo-v2.5、mimo-v2.5-pro
DeepSeek — deepseek-v4-pro、deepseek-v4-flash
  • 每个服务商独立存储 API Key,切换服务商时自动加载
  • API Key 通过 Windows DPAPI 加密存储

技术亮点

  • 流式切片+转写:音频切片与 API 调用流水线化,每片切完立即发送并释放内存,内存峰值从 54MB 降至 9MB
  • 全局 HTTP 连接池:所有 API 请求共享 reqwest::Client,减少 TCP 握手开销
  • SSE 标签过滤器:流式解析器自动过滤 <think>、<chinese> 等模型标签,防止泄漏到转写结果
  • 速率控制:ASR 90 RPM / Chat 90 RPM,基于 API 官方限额
  • 非流式兜底:SSE 流解析失败时自动降级为非流式请求