Skip to content

1.1.4

Latest

Choose a tag to compare

@Bronzesakon Bronzesakon released this 08 Aug 14:48
· 7 commits to main since this release

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