如何导出Fun-ASR识别结果?CSV/JSON格式教程
你刚用 Fun-ASR 完成了一次会议录音转写,屏幕上整齐地列出了几十段文字——但接下来呢?
想把结果发给同事做纪要整理?需要导入 Excel 做关键词统计?或者要喂给另一个 NLP 工具做后续分析?
别急着截图、复制粘贴、手动整理。Fun-ASR WebUI 其实早已内置了原生导出能力:只需一次点击,就能将识别结果保存为结构清晰的 CSV 或 JSON 文件。
这不是隐藏功能,也不是需要改代码的“高级操作”,而是批量处理模块中一个被很多人忽略的实用按钮。
本文将带你从零开始,完整走通「导出识别结果」的全流程——不讲原理、不堆参数,只聚焦一件事:怎么把识别好的文字,干净、准确、带时间戳、带原始与规整双版本,一次性导出成你真正能用的文件。
1. 导出功能在哪?先确认你的使用场景
Fun-ASR 的导出能力并非处处可用,它只在两个明确场景下生效:
批量处理完成后的结果页(最常用、最推荐)
识别历史页面中的单条记录详情页(适合补导、查漏)
而以下场景不支持直接导出:
单次语音识别(即“语音识别”主面板)的即时结果
实时流式识别的滚动文本
VAD 检测结果页
这个设计很合理:单次识别是临时交互,而批量处理和历史记录代表的是已确认、需归档、有长期价值的数据资产。所以导出入口也只出现在这些“资产沉淀区”。
提示:如果你正在看单次识别结果,想立刻导出,请先点击右上角“保存到历史”按钮(图标为 ),再进入“识别历史”页面操作。这是唯一合规路径。
2. 批量处理导出:高效、完整、开箱即用
这是绝大多数用户的核心需求场景——比如你上传了 20 个客服通话 MP3,系统自动识别完毕,现在要交付给质检团队。下面就是标准操作流:
2.1 确保已完成批量处理
- 进入 Fun-ASR WebUI → 点击顶部导航栏【批量处理】
- 上传多个音频文件(支持拖拽、多选)
- 配置好语言、ITN、热词等参数后,点击【开始批量处理】
- 等待进度条走完,状态变为“ 全部完成”
此时页面会显示一个清晰的结果汇总表,包含每条音频的文件名、识别状态、耗时、以及“查看结果”按钮。
2.2 找到导出入口:就在结果表格下方
不要急着点“查看结果”。先往下拉——你会看到一组功能按钮,其中最醒目的就是:
[导出全部为 CSV] [导出全部为 JSON]这两个按钮并排居中,背景色为蓝色(默认主题),字体加粗,位置固定在结果表格正下方,无需滚动查找。
小技巧:如果页面过长导致按钮被遮挡,可按
Ctrl + End(Windows)或Cmd + ↓(Mac)快速跳转到底部。
2.3 CSV 导出详解:Excel 用户的首选格式
点击【导出全部为 CSV】后,浏览器会立即下载一个名为funasr_batch_export_YYYYMMDD_HHMMSS.csv的文件(时间戳精确到秒)。
打开它,你会发现结构极其友好,完全适配 Excel、WPS、Numbers 等所有主流表格软件:
| id | filename | timestamp | language | result_text | itn_text | duration_sec | model_name |
|---|---|---|---|---|---|---|---|
| 1 | call_001.mp3 | 1745678901 | zh | 您好欢迎致电客服中心... | 您好,欢迎致电客服中心…… | 128.4 | Fun-ASR-Nano-2512 |
| 2 | call_002.mp3 | 1745678922 | zh | 请问您的订单号是多少? | 请问您的订单号是多少? | 89.1 | Fun-ASR-Nano-2512 |
字段说明(全是大白话):
id:Fun-ASR 内部记录编号,用于追溯filename:你上传时的原始文件名(含扩展名)timestamp:识别完成时间(Unix 时间戳),Excel 中可用公式=A1/86400+DATE(1970,1,1)转为可读日期language:识别所用语言代码(zh= 中文,en= 英文,ja= 日文)result_text:模型原始输出,保留口语化表达(如“啊”、“嗯”、“那个”)itn_text:启用 ITN 后的规整文本(如“二零二五年三月”→“2025年3月”,“一千二百三十四”→“1234”)duration_sec:音频总时长(秒),精度到小数点后一位model_name:当前运行的模型名称,方便后期回溯版本
实用建议:
- 如果你只需要“规整后文本”做汇报,直接筛选
itn_text列即可;- 若需统计各通话时长分布,用
duration_sec列做数据透视表;timestamp字段配合 Excel 排序,可轻松还原识别任务执行顺序。
2.4 JSON 导出详解:开发者与自动化流程的黄金格式
点击【导出全部为 JSON】,下载的文件名为funasr_batch_export_YYYYMMDD_HHMMSS.json。
内容为标准 JSON 数组,每项对应一个识别任务,结构清晰、层级分明、无歧义,可直接被 Python、Node.js、Shell 脚本等任何现代编程环境解析:
[ { "id": 1, "filename": "call_001.mp3", "timestamp": 1745678901, "language": "zh", "result_text": "您好欢迎致电客服中心...", "itn_text": "您好,欢迎致电客服中心……", "duration_sec": 128.4, "model_name": "Fun-ASR-Nano-2512" }, { "id": 2, "filename": "call_002.mp3", "timestamp": 1745678922, "language": "zh", "result_text": "请问您的订单号是多少?", "itn_text": "请问您的订单号是多少?", "duration_sec": 89.1, "model_name": "Fun-ASR-Nano-2512" } ]为什么 JSON 更适合技术场景?
- 字段名与 CSV 完全一致,无缝对接已有数据管道;
- 支持嵌套(未来若扩展时间戳对齐、分句结果,JSON 可自然升级,CSV 则需重构表头);
- 无编码兼容问题(CSV 常因中文乱码让新手抓狂,JSON 默认 UTF-8);
- 可直接用
jq命令行工具做快速过滤,例如提取所有中文结果:jq 'map(select(.language == "zh"))' funasr_batch_export_20250425_143022.json
3. 识别历史导出:精准补救,单条也能导
有时你发现某次关键识别没进批量队列,或是批量导出后想单独核对某一条——这时,“识别历史”就是你的数据保险箱。
3.1 进入历史页面并定位目标记录
- 点击顶部导航栏【识别历史】
- 页面默认展示最近 100 条(按时间倒序)
- 使用右上角搜索框输入文件名关键词(如
weekly_meeting)或识别内容片段(如Q3目标),快速定位
找到目标记录后,不要点“查看详情”按钮——那是弹窗预览。你要做的是:
直接点击该行最右侧的“导出”图标(一个向下的箭头 ,悬停提示“导出此条记录”)
3.2 单条导出的两种格式选择
点击后,会弹出一个极简对话框,仅含两个选项:
- 导出为 CSV(生成单行 CSV,含所有字段,逗号分隔)
- 导出为 JSON(生成单对象 JSON,格式同批量导出的数组内单元素)
选择任一格式,浏览器即刻下载对应文件。文件名含 ID 和时间戳,例如:funasr_history_id37_20250425_143511.csv
注意:单条导出不会包含“批次信息”(如批次ID、总文件数),因为它本质是独立记录。这正是它的优势——纯粹、无冗余、拿来即用。
4. 导出文件能做什么?三个真实工作流示例
光会导出还不够,关键是要知道这些文件如何融入你的实际工作。以下是三个高频、零门槛的落地用法:
4.1 用 Excel 做客服通话质检(非技术人员适用)
- 下载 CSV 文件,用 Excel 打开
- 新增一列“是否解决客户问题”,手动打勾/叉
- 新增一列“关键词命中”,用
=IF(ISNUMBER(SEARCH("退款",D2)),"是","否")快速标记含“退款”的通话 - 插入数据透视表:行=“客服工号”(需提前在文件名中约定命名规则,如
zhangsan_call_001.mp3),列=“是否解决”,值=计数 - 5 分钟生成一份可汇报的质检周报
4.2 用 Python 做会议纪要自动摘要(开发者适用)
import pandas as pd from transformers import pipeline # 读取导出的 CSV df = pd.read_csv("funasr_batch_export_20250425_143022.csv") # 提取所有规整文本 texts = df["itn_text"].tolist() # 加载本地轻量摘要模型(示例,实际可换 Fun-ASR 自带小模型) summarizer = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6") # 批量生成摘要(注意长度限制) summaries = [] for text in texts: if len(text) > 50: # 避免空文本 try: summary = summarizer(text[:1024], max_length=120, min_length=30, do_sample=False) summaries.append(summary[0]["summary_text"]) except: summaries.append("摘要生成失败") else: summaries.append("文本过短,无需摘要") # 写回 CSV 新增一列 df["summary"] = summaries df.to_csv("with_summaries.csv", index=False, encoding="utf-8-sig")4.3 用 Obsidian 建立个人语音知识库(知识工作者适用)
- 将 JSON 文件放入 Obsidian 的
vault/ASR-Exports/文件夹 - 创建一个模板
ASR-Template.md:--- created: {{date}} tags: [asr, meeting, {{language}}] --- ## {{filename}} **原始识别** {{result_text}} **规整文本** {{itn_text}} **元数据** - 时长:{{duration_sec}} 秒 - 模型:{{model_name}} - 时间:{{timestamp | date: "%Y-%m-%d %H:%M"}} - 用 Dataview 插件自动索引所有 JSON 文件,生成动态看板:“本周识别了多少分钟?”、“哪些会议提到了‘AI’?”
5. 常见问题与避坑指南
即使流程简单,实践中仍有几个高频卡点,提前了解可省去 80% 的调试时间:
Q1:导出的 CSV 在 Excel 里中文显示为乱码?
A:这是 Windows Excel 的经典顽疾。正确打开方式:
① Excel → 数据 → 从文本/CSV → 浏览选择文件 → 编码选UTF-8→ 加载
② 或用 WPS / Numbers / Google Sheets,它们默认正确识别 UTF-8
Q2:导出的 JSON 文件里result_text字段有换行,导致解析失败?
A:Fun-ASR 的识别结果本身不含换行符(\n),但若原始音频中有明显停顿,模型可能输出。或?后跟空格,视觉上像换行。JSON 标准允许字符串内含\n,只要用标准 JSON 解析器(如 Pythonjson.load())就不会出错。若手动编辑过文件,请勿用记事本——改用 VS Code 等支持 UTF-8 的编辑器。
Q3:批量导出后,发现某几条的itn_text是空的?
A:检查该条记录的“系统设置”中 ITN 是否被关闭。Fun-ASR 的 ITN 开关是按任务独立配置的。在批量处理时若未勾选“启用文本规整”,则对应itn_text字段为空字符串。解决方案:重新提交该文件,确保勾选 ITN。
Q4:导出文件里没有时间戳对齐(逐句起止时间)?
A:当前 Fun-ASR WebUI 的导出功能不包含分句级时间戳,仅提供整段音频的duration_sec。如需精确到秒的说话人切分,需调用 Fun-ASR 的底层 API 并开启output_word_timestamps=True参数,这属于进阶用法,不在 WebUI 范围内。
Q5:导出按钮是灰色的,无法点击?
A:两个原因:
① 批量处理尚未完成(状态不是“ 全部完成”,可能是“ 部分失败”或“⏳ 处理中”);
② 当前处于“语音识别”或“实时流式识别”等非批量/非历史页面——请务必切换到【批量处理】结果页或【识别历史】详情页。
6. 总结:导出不是终点,而是数据价值的起点
回顾整个流程,你会发现 Fun-ASR 的导出设计非常务实:
🔹位置明确——只在数据已沉淀的页面提供,避免误操作;
🔹格式精简——CSV 为业务人员而生,JSON 为工程师而设,不堆砌无用字段;
🔹字段实用——result_text与itn_text并存,兼顾原始性与可用性;
🔹命名规范——文件名自带时间戳,杜绝覆盖风险;
🔹零依赖——无需安装插件、无需配置环境,浏览器点一下就完成。
但请记住:导出文件本身只是载体。真正的价值,在于你用它做了什么——是生成了一份让领导眼前一亮的分析报告?是训练出了更懂业务的定制化模型?还是构建了一个只属于你自己的语音知识图谱?
Fun-ASR 给了你高质量的“原材料”,而下一步的“深加工”,永远由你定义。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。