导出CSV/JSON格式,Fun-ASR助力后续数据分析
在内容运营、用户调研、教学复盘或会议归档等实际工作中,语音转文字只是第一步;真正决定效率上限的,是识别结果能否无缝接入后续分析流程。你是否经历过这样的场景:花一小时完成20段访谈音频的转写,却要用半天时间手动整理成Excel表格?或者导出的文本散落在不同文件里,想统计“用户提到最多的问题”时,只能靠Ctrl+F逐个搜索?
这些问题的答案,就藏在 Fun-ASR WebUI 的一个低调但关键的能力里——批量识别结果支持一键导出为标准结构化格式(CSV/JSON)。它不炫技,不堆参数,却实实在在把语音识别从“单点工具”升级为“数据生产环节”的一环。
这背后不是简单的文件保存功能,而是一整套面向真实工作流的设计逻辑:识别结果自带元数据、字段命名符合通用规范、导出内容可被Python/Pandas/Power BI等主流工具直接读取。换句话说,Fun-ASR 不仅帮你“听清”,更帮你“用起来”。
1. 批量处理:从单次操作到数据流水线的跨越
1.1 为什么批量处理必须支持结构化导出?
传统语音识别工具常止步于“生成文本文件”,看似完成了任务,实则在数据流转中埋下三重断点:
- 格式断点:
.txt文件无字段分隔,无法直接导入表格软件; - 信息断点:原始音频名、识别时间、语言设置等上下文丢失;
- 扩展断点:缺少置信度、时间戳、热词命中记录等可用于质量评估的辅助字段。
Fun-ASR 的批量处理模块,正是为弥合这些断点而生。它默认将每一次识别视为一条结构化记录,而非孤立文本。当你上传15个.mp3文件并启动批量任务时,系统内部已自动构建起一张“识别结果表”,其逻辑结构如下:
| 字段名 | 类型 | 说明 | 示例 |
|---|---|---|---|
id | 整数 | 唯一记录ID | 1024 |
filename | 字符串 | 原始音频文件名 | "interview_07.mp3" |
recognition_time | 时间戳 | 识别完成时间 | "2025-04-12T14:28:33" |
language | 字符串 | 识别所用语言 | "zh" |
raw_text | 字符串 | 未经ITN处理的原始识别结果 | "我们公司开放时间是每天早上九点到晚上八点" |
itn_text | 字符串 | 启用ITN后的规整文本 | "我们公司开放时间是每天早上9点到晚上8点" |
vad_segments | 数组 | VAD检测到的语音片段数量 | [3] |
duration_seconds | 浮点数 | 音频总时长(秒) | 426.8 |
这个结构设计有明确的工程考量:所有字段名采用小写+下划线风格,完全兼容SQL数据库导入;时间戳使用ISO 8601标准,避免时区歧义;raw_text与itn_text分离,方便对比分析ITN效果;vad_segments虽为数组,但在CSV中以JSON字符串形式存储,确保跨平台可读性。
1.2 三步完成批量识别与导出
整个过程无需命令行,全部通过WebUI完成,适合非技术人员快速上手:
步骤一:准备与上传
- 点击【批量处理】标签页;
- 拖拽多个音频文件(支持
.wav,.mp3,.m4a,.flac)至上传区域; - 系统实时显示文件列表及总时长预估(如:“共12个文件,预计总时长约3.2小时”)。
实践提示:建议单次批量不超过50个文件。若需处理更多,可按主题/日期分组,既降低内存压力,也便于后期分类管理。
步骤二:统一配置
- 目标语言:下拉选择(中文/英文/日文),该设置将应用于所有文件;
- 启用ITN:勾选后,所有输出自动进行数字、年份、单位等规整;
- 热词列表:粘贴行业术语(每行一个),提升专业词汇识别率;
- VAD预处理:开启后,系统先对每个音频执行语音活动检测,仅识别有效语音段,跳过静音和噪音部分。
步骤三:执行与导出
- 点击【开始批量处理】,界面切换为进度面板;
- 实时显示:当前处理文件名、已完成/总数、预计剩余时间;
- 处理完成后,自动跳转至【识别历史】页,并高亮新生成的记录;
- 在历史列表右上角,点击【导出为CSV】或【导出为JSON】按钮。
导出的文件命名规则为funasr_batch_export_YYYYMMDD_HHMMSS.csv(或.json),确保时间可追溯、版本不混淆。
2. CSV导出:让数据直通Excel与BI工具
2.1 CSV文件结构详解
导出的CSV文件采用UTF-8编码,以英文逗号分隔,首行为字段标题。打开后可见清晰的表格结构,每一行对应一个音频文件的完整识别信息。
id,filename,recognition_time,language,raw_text,itn_text,vad_segments,duration_seconds 1024,interview_01.mp3,2025-04-12T14:28:33,zh,"今天会议讨论了三个重点","今天会议讨论了三个重点","[1]",218.5 1025,interview_02.mp3,2025-04-12T14:32:11,zh,"我们的开放时间是早上九点到晚上八点","我们的开放时间是早上9点到晚上8点","[2]",302.7关键设计细节:
- 所有文本字段用双引号包裹,避免含逗号的文本破坏列结构;
vad_segments字段以JSON字符串形式存储(如"[2]"),Excel可直接识别为文本,Python中可用json.loads()解析;- 时间戳精确到秒,满足大多数业务场景的时间维度分析需求。
2.2 在Excel中快速开展分析
导出的CSV可直接双击用Excel打开,无需额外转换。几个高频分析场景示例:
关键词频率统计:
使用Excel的【数据】→【分列】功能,将itn_text列按空格拆分为多列,再用【数据透视表】统计高频词(如“用户”、“问题”、“反馈”出现次数)。时长分布分析:
对duration_seconds列使用【条件格式】→【色阶】,直观看出哪些访谈最长/最短,辅助判断信息密度。识别质量初筛:
添加辅助列公式=LEN([@itn_text])/[@duration_seconds],计算“平均每秒输出字数”。数值过低(如<1.5)可能提示音频质量差或存在大量静音未被VAD过滤。跨文件对比:
将多批次导出的CSV合并为一张总表,用【筛选】功能快速定位某位受访者(如filename包含"zhangsan")的所有访谈记录。
进阶技巧:在Excel中启用【Power Query】,可将CSV设为数据源,建立自动刷新连接。当新一批识别结果导出后,只需点击【全部刷新】,分析看板即同步更新。
3. JSON导出:为程序化分析提供原生支持
3.1 JSON文件的嵌套结构优势
相比CSV的扁平化结构,JSON导出保留了更丰富的数据层次,特别适合需要深度解析的场景。其顶层为数组,每个元素是一个对象,包含完整识别元数据:
[ { "id": 1024, "filename": "interview_01.mp3", "recognition_time": "2025-04-12T14:28:33", "language": "zh", "raw_text": "今天会议讨论了三个重点", "itn_text": "今天会议讨论了三个重点", "vad_segments": [ { "start_ms": 0, "end_ms": 218500, "confidence": 0.92 } ], "duration_seconds": 218.5, "model_version": "Fun-ASR-Nano-2512" } ]新增的关键字段:
vad_segments:不再是简单计数,而是包含每个语音片段的起止毫秒时间戳及模型置信度;model_version:记录本次识别所用模型版本,便于回溯与A/B测试;- 所有时间戳均带毫秒精度,为后续做带时间轴的语义分析(如“用户在第3分12秒首次提及价格”)提供基础。
3.2 Python中高效加载与处理
JSON格式天然适配Python生态,几行代码即可完成数据清洗与分析:
import json import pandas as pd from datetime import datetime # 1. 加载JSON导出文件 with open('funasr_batch_export_20250412_142833.json', 'r', encoding='utf-8') as f: data = json.load(f) # 2. 转为DataFrame,自动展开嵌套字段 df = pd.json_normalize( data, record_path=['vad_segments'], meta=['id', 'filename', 'itn_text', 'duration_seconds'], errors='ignore' ) # 3. 计算每个片段的时长(秒)并添加到DataFrame df['segment_duration'] = (df['end_ms'] - df['start_ms']) / 1000 # 4. 导出为新的分析表(含时间轴) df.to_csv('analysis_ready_with_timestamps.csv', index=False, encoding='utf-8-sig')这段代码将原始JSON中的语音片段信息“打平”,生成一个包含id,filename,itn_text,start_ms,end_ms,segment_duration等字段的新表格。这意味着你可以:
- 统计每位受访者在不同时间段的发言活跃度;
- 提取所有“提问句式”(如含“怎么”、“为什么”的句子)并定位其在音频中的具体位置;
- 结合
confidence字段,筛选低置信度片段供人工复核。
4. 识别历史:本地数据库驱动的长期数据资产管理
4.1 history.db:轻量但可靠的本地数据中枢
所有识别记录(无论单次还是批量)均持久化存储于本地SQLite数据库webui/data/history.db中。这不是临时缓存,而是经过精心设计的数据资产中心:
- 表结构稳定:
history表字段与CSV/JSON导出字段严格一致,确保导出即真实; - 全文索引优化:对
filename和itn_text字段建立FTS5全文索引,支持中文模糊搜索; - 外键约束:
id为主键,filename与文件系统路径关联,避免数据漂移。
你可以用任何SQLite客户端(如DB Browser for SQLite)直接打开此文件,查看、编辑、备份或导出为其他格式(如SQL dump)。
4.2 用SQL实现精准数据提取
当导出的CSV/JSON无法满足复杂查询需求时,直接操作数据库是最高效的方式。例如:
查找所有含特定关键词的访谈:
SELECT filename, itn_text FROM history WHERE itn_text MATCH '用户体验 OR 用户反馈';统计各语言识别准确率(基于置信度):
SELECT language, AVG(confidence) as avg_confidence FROM history GROUP BY language;导出某日期范围内的全部记录:
.mode csv .output export_april.csv SELECT * FROM history WHERE recognition_time BETWEEN '2025-04-01' AND '2025-04-30';
这种能力让 Fun-ASR 超越了“一次性工具”的定位,成为团队可长期依赖的语音数据基础设施。
5. 工程实践建议:让导出真正服务于分析闭环
5.1 建立标准化工作流
为最大化导出功能价值,建议在团队内推行以下轻量规范:
- 文件命名约定:上传前统一音频名为
项目名_日期_序号.格式(如user_test_20250412_01.mp3),确保filename字段自带业务上下文; - 热词模板化:为不同项目维护独立热词文件(如
marketing_terms.txt,tech_support_terms.txt),批量处理时直接粘贴,避免遗漏; - 定期归档:每月初将
history.db备份为history_YYYYMM.db,并清空当月记录,防止数据库膨胀影响性能。
5.2 与大模型分析链路衔接
CSV/JSON导出是起点,而非终点。一个典型的进阶用法是将其作为大模型分析的输入:
- 将导出的
itn_text列批量导入文本处理脚本; - 调用本地部署的LLM(如Qwen、ChatGLM)执行:
- 关键问题提取(“请列出本段访谈中用户提出的3个核心问题”);
- 情感倾向分析(“判断以下文本的情感极性:正面/中性/负面”);
- 要点摘要生成(“用50字概括本段核心结论”);
- 将LLM输出结果追加为新字段,重新导出为增强版CSV。
Fun-ASR 不提供这些高级分析能力,但它提供了干净、结构化、可编程的输入——这恰恰是构建自主AI分析链路最关键的基石。
6. 总结:结构化导出,是语音识别走向生产力的核心跃迁
Fun-ASR 的CSV/JSON导出功能,表面看只是“多了一个下载按钮”,实则标志着语音识别工具从“技术演示”迈向“业务嵌入”的关键一步。它解决了三个根本性问题:
- 可集成性:标准格式让识别结果能无缝进入Excel、数据库、BI看板、Python分析脚本等现有工具链;
- 可追溯性:元数据(时间、语言、模型版本)与文本并存,确保每次分析都有据可查;
- 可扩展性:JSON的嵌套结构为未来引入说话人分离、情感标注、声纹识别等新能力预留了数据接口。
对于一线工作者而言,这意味着:
不再需要手动复制粘贴20次识别结果;
不再为整理格式花费额外时间;
不再担心数据丢失或版本混乱;
更重要的是,第一次真正拥有了对语音数据的“所有权”和“控制权”。
当语音识别不再只是“转成文字”,而是“生成可分析的数据”,它才真正成为了数字时代的内容生产力引擎。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。