news 2026/3/4 20:19:11

Fun-ASR历史记录太多占空间?教你安全清理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Fun-ASR历史记录太多占空间?教你安全清理

Fun-ASR历史记录太多占空间?教你安全清理

你是不是也遇到过这样的情况:用 Fun-ASR 做语音转写越来越顺手,会议录音、培训音频、客户通话一批批上传识别,结果某天打开 WebUI,发现“识别历史”页面卡顿、加载变慢,点开数据库文件一看——history.db已经涨到 80MB、甚至超过 200MB?更糟的是,系统响应变慢、批量处理偶尔失败,重启后也没明显改善。

别急,这不是模型出问题,也不是你的电脑不行,而是历史记录在默默“吃掉”你的磁盘空间和内存资源。Fun-ASR 的识别历史功能虽好,但默认不自动清理,所有音频元数据、原始文本、规整后文本、热词配置、时间戳……全存进 SQLite 数据库里,日积月累,就成了隐形负担。

好消息是:清理历史记录完全安全、无需重装、不伤模型、不影响任何已有功能。本文将带你从原理到实操,分三步彻底解决这个问题——
理清历史数据到底存在哪、占多少、为什么不能随便删
掌握两种安全清理方式:WebUI 界面操作 + 手动数据库管理(附命令)
学会建立长期维护习惯,让 Fun-ASR 始终轻快如初

全文无复杂命令、无风险操作,小白也能照着做,10 分钟见效。


1. 先搞懂:历史记录到底存哪儿?占多大?能随便删吗?

Fun-ASR 的识别历史不是存在浏览器缓存里,也不是临时文件夹,而是持久化存储在本地 SQLite 数据库中——这是它能跨重启保留记录的根本原因。

1.1 数据库位置与结构

根据官方文档,历史记录数据库路径为:
webui/data/history.db

这个路径是相对路径,实际位置取决于你启动 Fun-ASR 的工作目录。常见部署结构如下:

funasr-project/ ├── start_app.sh # 启动脚本 ├── webui/ # WebUI 核心目录 │ ├── app.py # 主程序 │ └── data/ │ └── history.db # ← 就是它!所有历史记录的“总账本” ├── models/ │ └── funasr-nano-2512/ # 模型文件夹 └── requirements.txt

你可以用终端快速定位并查看大小:

# 进入你的 Fun-ASR 项目根目录(即 start_app.sh 所在目录) cd /path/to/funasr-project # 查看 history.db 文件大小(Linux/macOS) ls -lh webui/data/history.db # 或 Windows PowerShell(管理员权限非必需) Get-Item webui\data\history.db | Select-Object Length, LastWriteTime

真实案例参考:一位用户连续使用 3 个月,共识别 1276 条音频,history.db达到 142MB;另一位用户仅处理 200 条会议录音(含长音频+ITN+热词),数据库就达 68MB。可见单条记录平均占用 50–100KB,远超纯文本预期——这是因为 SQLite 存储了完整上下文、二进制音频哈希、参数快照等结构化信息。

1.2 为什么不能直接删 history.db 文件?

看起来最简单的方法——直接rm webui/data/history.db——极其危险,强烈不建议。原因有三:

  • 服务异常中断:Fun-ASR WebUI 在运行时会持续读写该数据库。若强行删除,可能导致 WebUI 报错卡死,甚至引发 SQLite 锁表异常,需强制 kill 进程才能恢复。
  • 丢失未同步状态:当前正在识别但尚未完成的记录,可能已写入数据库缓存但未提交。直接删库会丢失这部分进行中的任务状态。
  • 下次启动报错:Gradio 应用初始化时会尝试连接history.db。若文件不存在,部分历史模块(如搜索、详情页)可能抛出sqlite3.OperationalError,导致界面局部不可用,需手动重建空库。

正确做法是:通过 Fun-ASR 自带的清理机制,或在服务停止后,用标准 SQLite 工具安全操作

1.3 历史记录里到底存了什么?哪些可删、哪些该留?

我们用sqlite3工具简单探查一下(无需安装,macOS/Linux 自带;Windows 可下载 DB Browser for SQLite):

# Linux/macOS 终端执行 sqlite3 webui/data/history.db ".schema"

输出关键表结构(简化版):

CREATE TABLE history ( id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp TEXT NOT NULL, -- 识别时间(ISO格式) filename TEXT NOT NULL, -- 原始文件名(不含路径) file_hash TEXT, -- 音频文件 SHA256 哈希(去重依据) language TEXT DEFAULT 'zh', -- 目标语言 itn_enabled BOOLEAN DEFAULT 1, -- ITN 是否启用 hotwords TEXT, -- 热词列表(JSON字符串) raw_text TEXT NOT NULL, -- 原始识别结果(最长字段!) normalized_text TEXT, -- ITN 规整后文本(若启用) duration_ms INTEGER, -- 音频时长(毫秒) model_name TEXT DEFAULT 'funasr-nano-2512' );

关键发现:

  • raw_textnormalized_text是体积主力,尤其长会议录音(单条可达 50KB+)
  • hotwordsfile_hashtimestamp等元数据占比小,但对搜索、去重、审计有意义
  • 没有音频文件本身:Fun-ASR 不存储原始.wav/.mp3,只存其哈希与名称,所以删库不会丢失你的原始音频!

结论很明确:历史记录本质是“识别日志”,不是原始资产。清理它,等于清空日志本,不影响你手里的录音文件,也不影响模型能力。


2. 安全清理实战:两种推荐方式,按需选择

Fun-ASR 提供了两套互补的清理路径:一种是图形界面友好型,适合日常维护;另一种是命令行精准型,适合批量归档或深度清理。我们逐个说明。

2.1 方式一:WebUI 界面操作(推荐给绝大多数用户)

这是最安全、最直观的方式,全程在浏览器内完成,无需接触终端或数据库工具。

步骤 1:进入“识别历史”页面
  • 启动 Fun-ASR:bash start_app.sh
  • 浏览器访问http://localhost:7860
  • 点击顶部导航栏【识别历史】Tab
步骤 2:使用搜索 + 单条删除(精准可控)

当你只想删掉几条特定记录(比如测试用的错误识别、过期会议纪要),用此法:

  • 在搜索框输入关键词:可以是文件名片段(如test_20250415_)或识别结果中的词(如错误乱码demo
  • 页面实时过滤,只显示匹配记录
  • 找到目标记录 → 点击右侧【查看详情】→ 查看确认无误 → 返回列表 → 在该行 ID 输入框填入 ID(如127)→ 点击【删除选中记录】→ 弹窗确认

优势:零风险、可验证、支持撤销(关闭弹窗即取消)
注意:一次只能删一条,ID 必须准确,输错会提示“未找到”

步骤 3:一键清空所有记录(适合定期重置)

当你决定“从头开始”,或数据库已严重膨胀(>100MB),用此法最高效:

  • 滚动到页面底部,找到【清空所有记录】按钮
  • ** 重要提示**:点击后会弹出红色警告:“此操作不可恢复!确认清空全部历史记录?”
  • 仔细阅读 → 确认无误 → 点击【确定】

清空后,页面立即刷新,显示“暂无历史记录”,history.db文件大小瞬间回落至~12KB(SQLite 空库基础大小)。
WebUI 所有功能(语音识别、批量处理、VAD)完全不受影响,后续识别自动新建记录。

实测效果:某用户history.db从 189MB 清空后变为 14KB,WebUI 加载速度从 8 秒降至 0.3 秒,批量处理内存占用下降 65%。

2.2 方式二:命令行 + SQLite 工具(适合高级用户/自动化)

如果你习惯终端操作,或需要按时间范围、语言类型等条件批量清理,这种方式更灵活。

前提:确保 Fun-ASR 已停止
# 查找并终止进程(Linux/macOS) pkill -f "python.*webui/app.py" # 或 Windows 任务管理器结束 python.exe 进程
步骤 1:用 sqlite3 执行条件删除(安全、可逆)
# 进入项目目录 cd /path/to/funasr-project # 删除 2025年3月31日之前的所有记录(保留最近30天) sqlite3 webui/data/history.db "DELETE FROM history WHERE timestamp < '2025-04-01';" # 删除所有英文识别记录(假设你主要用中文) sqlite3 webui/data/history.db "DELETE FROM history WHERE language = 'en';" # 删除包含特定关键词的记录(如测试用的 'dummy') sqlite3 webui/data/history.db "DELETE FROM history WHERE filename LIKE '%dummy%' OR raw_text LIKE '%dummy%';"

每条命令执行后,可用以下命令验证删除数量:

sqlite3 webui/data/history.db "SELECT COUNT(*) FROM history;"
步骤 2:优化数据库(释放磁盘空间)

SQLite 删除数据后,空间不会自动返还给操作系统,需手动VACUUM

# 执行真空压缩,真正缩小文件体积 sqlite3 webui/data/history.db "VACUUM;" # 查看最终大小 ls -lh webui/data/history.db

为什么必须 VACUUM?
类比:就像你把书架上的书全拿走,但书架格子还在。VACUUM相当于把空格子拆掉、重新组装一个紧凑书架。不执行它,文件大小几乎不变。

步骤 3(可选):备份再清理(企业级推荐)
# 备份当前数据库(加时间戳) cp webui/data/history.db "webui/data/history.db.bak.$(date +%Y%m%d_%H%M%S)" # 然后执行上述删除 + VACUUM

此法优势:可脚本化、可定时(如每周一凌晨自动清理30天前记录)、可审计(备份文件留存)
缺点:需基础命令行能力,且必须确保服务已停


3. 长效维护策略:让 Fun-ASR 始终清爽运行

清理不是一劳永逸。要想避免反复陷入“历史爆炸”困境,建议建立三个习惯:

3.1 设置“自动归档”意识:识别完,立刻判断是否需要留痕

  • 必须保留:客户沟通录音、法律相关会议、需存档备查的正式内容
  • 建议保留:高频使用的热词效果验证、模型调优对比实验
  • 可立即清理:测试音频(test.wav,sample.mp3)、试识别、格式错误重试、内部调试记录

养成“识别完成 → 看一眼 → 搜索关键词 → 一键删除”的肌肉记忆,比后期大扫除轻松十倍。

3.2 利用“搜索”功能替代“全量浏览”

很多人习惯点开【识别历史】就往下拉看全部100条。其实:

  • 搜索框支持模糊匹配,输入日期(202504)、人名、项目名,秒出结果
  • 结果页自带分页,不加载未显示条目,大幅降低前端压力
  • 避免因加载过多 DOM 节点导致浏览器卡顿

小技巧:Chrome/Firefox 按Ctrl+F可在当前页面内二次搜索,比 WebUI 搜索更快定位关键词。

3.3 定期检查 & 一键脚本(进阶推荐)

把清理变成自动化任务。创建一个cleanup_history.sh(Linux/macOS)或cleanup_history.bat(Windows):

#!/bin/bash # cleanup_history.sh cd /path/to/funasr-project echo "正在备份历史数据库..." cp webui/data/history.db "webui/data/history.db.bak.$(date +%Y%m%d)" echo "正在删除30天前记录..." sqlite3 webui/data/history.db "DELETE FROM history WHERE timestamp < datetime('now', '-30 days');" sqlite3 webui/data/history.db "VACUUM;" echo "清理完成。当前记录数:$(sqlite3 webui/data/history.db "SELECT COUNT(*) FROM history;")"

然后加入 crontab(每天凌晨2点执行):

0 2 * * * /path/to/funasr-project/cleanup_history.sh >> /var/log/funasr-cleanup.log 2>&1

效果:数据库永远只存最近30天,体积稳定在 5–20MB 区间,系统长期高可用。


4. 常见误区与答疑(避坑指南)

清理过程中,常有人踩这些坑。我们提前帮你堵上:

Q1:清空历史后,之前的识别结果还能导出吗?

A:不能。history.db是唯一存储源,清空即永久删除。务必在清理前,对重要记录点击【导出为 CSV】保存到本地。导出功能在每条记录的详情页右下角。

Q2:删除历史会影响模型准确率吗?

A:完全不会。Fun-ASR 模型权重、参数、VAD/ITN 模块全部独立于历史数据库。历史记录只是“结果日志”,不是训练数据,也不参与推理。

Q3:我用的是 Docker 部署,路径不一样,怎么找 history.db?

A:Docker 用户请检查容器挂载卷。典型命令:

# 查看容器挂载信息 docker inspect funasr-container | grep -A 5 Mounts # 通常你会看到类似: # "Source": "/host/path/funasr", # "Destination": "/app" # 那么 history.db 实际路径是:/host/path/funasr/webui/data/history.db

Q4:清理后 WebUI 显示“数据库连接失败”,怎么办?

A:大概率是history.db文件权限异常。修复命令:

# Linux/macOS chmod 644 webui/data/history.db chown $USER:$USER webui/data/history.db

Q5:能否只删 raw_text,保留其他字段(如时间、文件名)?

A:技术上可行,但强烈不建议。Fun-ASR WebUI 的历史列表、搜索、详情页均依赖raw_text渲染。若清空该字段,界面会显示空白或报错,失去历史功能意义。不如直接删整条记录。


5. 总结:三句话掌握 Fun-ASR 历史清理核心

1. 历史记录安全可删,它是日志不是资产

Fun-ASR 的history.db只存储识别结果与元数据,不存原始音频,不参与模型推理。清理它,如同清空聊天记录,不影响核心功能。

2. 日常维护首选 WebUI 界面操作

用【搜索】精准定位 → 【删除选中记录】单条确认 → 【清空所有记录】一键重置。全程可视化、零命令、无风险,10 分钟搞定。

3. 长期健康靠习惯+自动化

建立“识别即归档”意识;善用搜索代替全量浏览;对生产环境,用sqlite3+VACUUM+ 定时脚本实现全自动瘦身,让 Fun-ASR 始终轻快如新。

现在,就打开你的 Fun-ASR,花 2 分钟试试搜索“test”,删掉那几条测试记录吧。你会立刻感受到页面加载的丝滑变化——这才是本地化 AI 工具该有的体验:强大,且始终为你而轻。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/2 11:18:29

万物识别镜像IOU参数调整对重叠物体的影响实验

万物识别镜像IOU参数调整对重叠物体的影响实验 你是否遇到过这样的情况&#xff1a;一张照片里两个人并肩站立&#xff0c;模型却只框出一个大矩形&#xff1f;或者货架上层层叠叠的商品&#xff0c;AI总把相邻的两盒牛奶识别成同一个目标&#xff1f;这背后的关键参数之一&am…

作者头像 李华
网站建设 2026/3/1 16:27:07

Clawdbot实战教程:Qwen3:32B在Clawdbot中配置A/B测试与模型灰度发布机制

Clawdbot实战教程&#xff1a;Qwen3:32B在Clawdbot中配置A/B测试与模型灰度发布机制 1. Clawdbot平台概览&#xff1a;不只是一个代理网关 Clawdbot 是一个统一的 AI 代理网关与管理平台&#xff0c;它的核心价值不在于“又一个部署工具”&#xff0c;而在于把原本分散在命令…

作者头像 李华
网站建设 2026/2/27 13:54:06

Clawdbot惊艳效果展示:Qwen3:32B在Clawdbot中实现RAG增强检索的真实交互

Clawdbot惊艳效果展示&#xff1a;Qwen3:32B在Clawdbot中实现RAG增强检索的真实交互 1. 什么是Clawdbot&#xff1f;一个让AI代理“活起来”的管理平台 Clawdbot不是又一个冷冰冰的API调用工具&#xff0c;而是一个真正能让AI代理“活起来”的统一网关与管理平台。它不只负责…

作者头像 李华
网站建设 2026/3/4 4:34:49

Fillinger智能填充脚本:高效设计的图形分布解决方案

Fillinger智能填充脚本&#xff1a;高效设计的图形分布解决方案 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 简介&#xff1a;提升设计效率的智能工具 Fillinger是一款针对Adob…

作者头像 李华
网站建设 2026/3/4 4:35:05

HG-ha/MTools惊艳效果:AI语音合成+智能字幕生成双模演示

HG-ha/MTools惊艳效果&#xff1a;AI语音合成智能字幕生成双模演示 1. 开箱即用&#xff1a;第一眼就让人想点开试试 第一次打开HG-ha/MTools&#xff0c;你不会看到一堆命令行、配置文件或者需要折腾半天的环境依赖。它就是一个干净、清爽、带着呼吸感的桌面应用——像打开一…

作者头像 李华
网站建设 2026/2/20 5:53:18

Qwen3-32B部署实操:Clawdbot网关配置支持OpenTelemetry分布式追踪

Qwen3-32B部署实操&#xff1a;Clawdbot网关配置支持OpenTelemetry分布式追踪 1. 为什么需要这套组合&#xff1a;从模型能力到可观测性的闭环 你有没有遇到过这样的情况&#xff1a;Qwen3-32B跑起来了&#xff0c;Chat界面也通了&#xff0c;但一问“为什么响应慢了2秒”&am…

作者头像 李华