Repository navigation
Releases: Bronzesakon/MiMo-ASR-Assistant
Releases · Bronzesakon/MiMo-ASR-Assistant
Release list
Latest build (main, 2026-09-11 18:44:18 UTC+8)
构建开始 2026-09-11 18:44:18(UTC+8) · 提交 2026-09-11 18:43:38(UTC+8) · commit f318ac4 · v1.1.4
1.1.4
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
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
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
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
MiMo ASR Assistant v1.1.0
新增功能
任务取消机制
- 支持在转写/规整进行中移除文件,立即取消对应任务
- 转写、规整三个异步流程均支持优雅取消,不影响队列中其他文件
- 取消后静默退出,不产生错误提示
日志系统优化
- 新增日志全局开关,设置面板实时切换
- 精简冗余日志(前端 12→5 条,后端删除 10 条噪音日志)
- 统一输出格式:全部改为文件名标识,便于定位
- 日志开关状态持久化到 config.json
UI/UX 修复(9 项)
- 导出菜单:点击导出项后立即关闭;切换其他操作时自动关闭
- 设置弹窗动画:修复关闭时无动画的问题,背景渐变与面板缩放同步
- 进度条准确性:公式改为上传 70% + 流式接收 30% 加权,不再提前到达 100%
- 拖拽导入:左栏支持音频文件直接拖入,移除冗余守卫逻辑
- 文本选中:转写结果支持鼠标选中复制
- 底栏速度:删除冗余上传速度显示,保留输出字数/s,每秒自动刷新
- 导出弹框:修复被父容器裁切的问题,改用 opacity+transform 动画
- 自动滚动:转写中显示"跳转底部"按钮;向上滚动暂停自动跟随;切换文件重置
- 横向溢出:修复文件列表横向滚动条问题
Markdown 渲染器重写
全部 13 项修复:
- 代码块/行内代码不再被标题、粗体等规则误匹配
- 多行引用合并为单个 blockquote,支持内部嵌套渲染
- 嵌套列表按缩进层级递归解析子列表
- 自动链接裸 URL(http/https/www)
- 新增:图片、粗斜体、任务列表、缩进代码块、转义字符支持
- 表格单元格内容支持行内格式渲染
- 斜体匹配改为单词边界,不再误触发变量名
设置面板
- 新增日志开关 Toggle 组件
- 提示文字样式优化:去掉边框和背景,改为纯灰文字
1.0.0
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 流解析失败时自动降级为非流式请求