如何导出识别结果?Fun-ASR批量处理后操作指南

在完成一批会议录音、客服对话或课程音频的批量识别后,你最关心的往往不是“有没有识别出来”,而是“结果怎么用”——能否快速整理成会议纪要?能否导入Excel做关键词统计?能否同步到钉钉文档或飞书多维表格?能否作为训练数据二次加工?

Fun-ASR WebUI 的批量处理功能已能稳定高效地完成语音转文字任务,但很多用户卡在最后一步:识别完成了,结果却找不到、导不出、格式不对、无法复用。这不是模型能力的问题,而是对导出机制和结果结构缺乏系统认知。

本文不讲模型原理,不调参数,不部署环境,只聚焦一个务实目标:让你在批量处理完成后,5分钟内拿到可编辑、可分析、可归档的结构化文本结果。从界面操作到文件解析,从CSV字段含义到JSON嵌套逻辑,手把手带你走通“识别→查看→导出→验证→再利用”的完整闭环。


1. 批量处理完成后的第一眼:识别历史是你的数据中心

批量处理结束后,页面不会自动跳转,也不会弹出“导出成功”提示——这是新手最容易忽略的关键前提。Fun-ASR 将所有识别结果统一沉淀至 【识别历史】模块,它不是临时缓存,而是具备搜索、筛选、回溯能力的持久化数据库。

1.1 进入识别历史的三种方式

  • 方式一(推荐):点击顶部导航栏的「识别历史」标签页
  • 方式二:在「批量处理」页面底部,点击绿色按钮「查看全部历史记录」
  • 方式三:刷新当前页面后,直接访问 http://localhost:7860/#识别历史

注意:历史记录默认仅显示最近100条,且按时间倒序排列。如果你处理了200个文件,前100条可能已被覆盖。因此,批量处理完成后请立即进入历史页,不要关闭浏览器窗口

1.2 快速定位你的这批结果

假设你刚上传了名为 2025_Q1_销售复盘会议_01.wav2025_Q1_销售复盘会议_20.wav 的20个文件,可通过以下任一方式精准筛选:

  • 按时间范围筛选:使用右上角日历控件,选择“今天”或具体时间段
  • 按文件名关键词搜索:在搜索框输入 销售复盘,系统实时匹配文件名与识别内容
  • 按ID范围定位:若你记得处理前最后一条记录ID是 #142,那么新结果大概率从 #143 开始连续编号

搜索结果列表中,每行包含5项核心信息:

  • ID:唯一数字编号(如 #158),用于精确调取详情
  • 时间:识别完成的精确时间(精确到秒)
  • 文件名:原始上传名称(含扩展名)
  • 识别结果:首句摘要(截断显示,约30字)
  • 语言:识别所用语种(zh / en / ja)

小技巧:将鼠标悬停在「识别结果」列,会显示完整文本气泡;点击「文件名」可复制路径,方便后续定位音频源文件。


2. 查看单条结果详情:理解结构,才能正确导出

点击任意一条记录右侧的「查看详情」按钮(或直接在搜索框输入ID,如 158),进入详情页。这里呈现的是该音频的全量结构化输出,也是导出功能的数据源头。

2.1 详情页四大核心区块解析

区块 内容说明 实际用途
基础信息 文件路径、上传时间、处理耗时、模型版本(Fun-ASR-Nano-2512)、设备(cuda:0) 排查性能问题、追溯处理环境
识别结果 原始ASR输出文本,保留口语停顿、重复、语气词(如“呃…”、“那个…”) 用于质检、人工校对、声学模型优化
规整后文本 启用ITN后的标准化文本(如“二零二五年三月十二号” → “2025年3月12日”) 直接用于文档生成、知识库录入、NLP下游任务
元数据 热词列表(生效的词汇)、ITN开关状态、VAD分段信息(若启用)、置信度评分(部分模型支持) 分析识别偏差、优化热词策略、评估片段质量

关键观察点:对比「识别结果」与「规整后文本」。若两者差异极大(如规整后丢失关键术语),说明ITN规则与业务场景冲突,建议关闭ITN或自定义规整词典。

2.2 为什么必须先看详情页?

因为导出的CSV/JSON文件,其字段设计完全映射此处结构。例如:

  • CSV中的 raw_text 列 = 详情页「识别结果」内容
  • JSON中的 itn_text 字段 = 详情页「规整后文本」内容
  • CSV中的 confidence 列(如有)= 详情页「元数据」中显示的置信度均值

不理解详情页结构,就无法准确解读导出文件,更无法编写脚本做自动化清洗。


3. 两种导出方式详解:一键下载 vs 批量打包

Fun-ASR WebUI 提供两种导出路径,适用于不同规模与精度需求:

3.1 单条导出:适合抽检、校对、快速分享

在详情页右上角,有三个并列按钮:

  • 复制文本:一键复制「规整后文本」到剪贴板(最常用)
  • 导出为TXT:生成纯文本文件,文件名格式为 原文件名.txt(如 2025_Q1_销售复盘会议_01.txt
  • 导出为SRT:生成带时间轴的字幕文件,适用于视频剪辑、在线课程发布

使用场景示例:

  • 给同事发一段会议要点?点「复制文本」粘贴到钉钉群
  • 需要插入PPT备注?用「导出为TXT」,再复制进幻灯片
  • 为培训视频配字幕?选「导出为SRT」,导入剪映或Premiere

提示:SRT文件的时间戳基于VAD检测结果,非逐字时间轴。若需毫秒级精准对齐,需调用SDK接口获取帧级输出。

3.2 批量导出:面向生产环境的核心能力

当你要处理50+文件并交付给运营、法务或数据分析团队时,单条操作效率极低。此时应返回「识别历史」页,使用顶部的批量导出功能

操作流程(四步到位):
  1. 勾选目标记录:在历史列表左侧勾选框中,选择需要导出的条目(支持Ctrl多选、Shift区间选)
  2. 选择导出格式:下拉菜单提供两项:
    • CSV(逗号分隔):兼容Excel、WPS、Tableau、Python pandas
    • JSON(标准格式):适配API对接、数据库入库、大模型微调数据准备
  3. 配置导出字段(CSV专属)
    • 必选:id, filename, itn_text(规整文本,业务最常用)
    • ⚙ 可选:raw_text(原始文本)、language(语种)、duration_ms(音频时长)、confidence(置信度)
    • ❌ 不建议:file_path(含本地绝对路径,无跨平台价值)
  4. 点击「导出选中记录」:浏览器自动下载压缩包 funasr_batch_export_YYYYMMDD_HHMMSS.zip
压缩包内容结构(以CSV为例):
funasr_batch_export_20250415_143022/
├── metadata.json          # 导出时间、总条数、参数快照
├── results.csv            # 主数据表(UTF-8编码,BOM头已去除)
└── samples/               # 每个文件的TXT副本(可选,勾选后生成)
    ├── 2025_Q1_销售复盘会议_01.txt
    └── ...

验证技巧:用VS Code打开 results.csv,确认首行为字段名,且中文显示正常(无乱码)。若出现方块字符,说明编码非UTF-8,需在Excel中通过「数据→从文本/CSV」手动指定编码。


4. CSV字段深度解读:让每一列都可被业务调用

results.csv 是批量导出的主力交付物,其字段设计直指工程落地。以下是各列的业务含义与使用建议:

字段名 数据类型 示例值 业务解读 典型用途
id 整数 158 本条记录在Fun-ASR数据库中的唯一ID 与原始音频文件建立映射关系,用于审计追踪
filename 字符串 2025_Q1_销售复盘会议_01.wav 上传时的原始文件名(不含路径) 自动关联云存储URL,构建音文双链路知识库
itn_text 字符串 各位同事好,今天我们复盘2025年第一季度销售数据... ITN规整后的最终可用文本 直接导入CRM、写入钉钉文档、喂给大模型总结
raw_text 字符串 呃…各位同…事好,今…天我们复盘二零二五年第一季度销售数据… 未经处理的原始识别结果 语音质检、错误模式分析、热词效果评估
language 字符串 zh 识别所用语种代码(zh/en/ja) 多语言内容路由,自动分发至对应语种审核员
duration_ms 整数 324500 音频总时长(毫秒),即5分24.5秒 计算人均处理时长、识别效率KPI
processing_time_s 浮点数 42.3 本条识别耗时(秒) 监控GPU负载、识别服务SLA达标率
confidence 浮点数 0.87 平均置信度(0~1),越高越可靠 设置自动过滤阈值(如<0.7的记录标红待人工复核)

重要提醒:itn_text 是业务交付的黄金字段,90%的下游应用(如会议纪要生成、客户情绪分析)都基于此列。而 raw_text 更适合算法团队做bad case分析——比如发现某类专业术语(如“FSMN-VAD”)在 raw_text 中频繁错别为“F-S-M-N”,即可针对性补充热词。


5. JSON导出实战:为自动化流程注入结构化血液

当你的工作流涉及API集成、数据库写入或大模型预处理时,JSON格式比CSV更具表达力。Fun-ASR 的 JSON 导出采用扁平化设计,兼顾可读性与机器解析效率。

5.1 标准JSON结构示例(单条记录)

{
  "id": 158,
  "filename": "2025_Q1_销售复盘会议_01.wav",
  "itn_text": "各位同事好,今天我们复盘2025年第一季度销售数据...",
  "raw_text": "呃…各位同…事好,今…天我们复盘二零二五年第一季度销售数据...",
  "language": "zh",
  "duration_ms": 324500,
  "processing_time_s": 42.3,
  "confidence": 0.87,
  "vad_segments": [
    {
      "start_ms": 1200,
      "end_ms": 8450,
      "text": "各位同事好,今天我们复盘2025年第一季度销售数据"
    },
    {
      "start_ms": 9200,
      "end_ms": 22100,
      "text": "首先看整体达成率,Q1目标是1.2亿,实际完成1.35亿..."
    }
  ],
  "hotwords_used": ["Q1", "销售复盘", "达成率"]
}

5.2 关键字段价值挖掘

  • vad_segments 数组:VAD分段后的语义单元,每段含起止时间与对应文本。这是实现「按段落生成会议纪要」、「提取发言人观点」、「计算各环节时长占比」的基础。
  • hotwords_used 数组:实际生效的热词列表。可用于反向验证热词配置是否命中,避免“写了热词却没生效”的黑盒问题。
  • 时间戳字段(start_ms/end_ms:虽非逐字级,但已足够支撑「5分钟内找到某句话」的业务需求,无需额外开发时间轴对齐模块。

5.3 Python快速解析示例(10行代码搞定)

import json
import pandas as pd

# 读取导出的JSON文件
with open("funasr_batch_export_20250415_143022/results.json", "r", encoding="utf-8") as f:
    data = json.load(f)

# 提取所有规整文本,生成DataFrame
df = pd.DataFrame([
    {
        "id": item["id"],
        "filename": item["filename"],
        "summary": item["itn_text"][:100] + "..." if len(item["itn_text"]) > 100 else item["itn_text"],
        "segments_count": len(item["vad_segments"]),
        "hotwords": ", ".join(item.get("hotwords_used", []))
    }
    for item in data
])

print(df.head())
# 输出:id, filename, summary, segments_count, hotwords

这段代码可直接嵌入你的日报生成脚本,5分钟内输出带摘要的会议清单。


6. 常见导出问题与解决方案:避开90%的踩坑点

即使按流程操作,仍可能遇到导出失败、格式异常或内容缺失。以下是高频问题及根因对策:

6.1 问题:导出CSV后Excel打开全是乱码(中文显示为方块)

  • 根因:Windows系统默认用ANSI编码打开CSV,而Fun-ASR导出为UTF-8无BOM格式
  • 解法
    • 正确方式:Excel → 「数据」选项卡 → 「从文本/CSV」→ 选择文件 → 编码选「UTF-8」
    • 替代方案:用VS Code、Notepad++打开,另存为「UTF-8 with BOM」格式
    • ❌ 错误方式:直接双击打开,或用记事本另存为ANSI(会破坏中文)

6.2 问题:JSON导出文件为空数组 []

  • 根因:勾选了记录但未点击「导出选中记录」,或网络中断导致请求未发出
  • 解法
    • 刷新「识别历史」页,重新勾选 → 检查右上角是否有「已选X条」提示 → 再次点击导出
    • 查看浏览器控制台(F12 → Console)是否有 Failed to fetch 报错

6.3 问题:导出的 itn_text 中仍有数字未规整(如“一千二百三十四”未转“1234”)

  • 根因:ITN功能依赖内置规则库,对长数字、复合单位(如“1234.56万元”)支持有限
  • 解法
    • 短期:在导出后用Python正则批量替换(re.sub(r"([零一二三四五六七八九十百千万亿]+)", lambda m: cn2an.cn2an(m.group(1), "normal"), text)
    • 长期:在Fun-ASR设置中启用「自定义ITN规则」,添加正则映射表

6.4 问题:批量导出耗时过长(>5分钟),浏览器提示“连接超时”

  • 根因:导出过程需序列化大量文本,前端JavaScript内存压力大
  • 解法
    • 推荐:分批导出,每次≤30条(实测响应最快)
    • 进阶:使用命令行工具直接读取数据库(webui/data/history.db),绕过WebUI层

7. 超越导出:让结果真正流动起来

导出只是起点,真正的价值在于结果的再利用。以下是三个已验证的轻量级延展方案:

7.1 方案一:自动同步至钉钉文档(免开发)

利用钉钉「宜搭」低代码平台:

  • 创建「语音转写结果」数据表,字段与CSV完全一致
  • 添加「文件上传」组件,绑定Fun-ASR导出的ZIP包
  • 配置「解析ZIP」自动化动作,自动解压→读取CSV→写入数据表
  • 成果:销售团队在钉钉内即可搜索任意会议关键词,秒级定位原文

7.2 方案二:生成会议纪要Markdown(Python脚本)

# 自动生成带标题、时间、要点的Markdown
for record in json_data:
    with open(f"meeting_{record['id']}.md", "w", encoding="utf-8") as f:
        f.write(f"# {record['filename'].split('_')[2]}会议纪要\n\n")
        f.write(f"**时间**:{record['processing_time_s']}秒 | **时长**:{record['duration_ms']//60000}分{record['duration_ms']%60000//1000}秒\n\n")
        f.write("## 核心要点\n\n")
        for i, seg in enumerate(record['vad_segments'][:3], 1):
            f.write(f"{i}. {seg['text'][:50]}...\n")

7.3 方案三:构建内部语音知识库(Elasticsearch)

  • 将JSON数据通过Logstash写入ES
  • 配置中文分词器(ik_max_word)
  • 开发简单Web界面,支持「按产品名查对话」「按问题类型聚类」
  • 成果:客服新人3分钟内查到历史相似问题的标准应答话术

8. 总结:导出不是终点,而是智能语音工作流的枢纽

回顾整个流程,你会发现:

  • 导出操作本身只需3次点击,但背后依赖对「识别历史」数据模型、「规整文本」业务价值、「CSV/JSON」工程语义的深度理解;
  • 没有所谓“最佳导出配置”,销售会议要 itn_text + vad_segments,客服质检要 raw_text + confidence,技术分享要 SRT + timestamps
  • 真正的效率提升,来自导出后的自动化衔接——把Fun-ASR变成你现有工作流的一个无感插件,而非孤立工具。

下次当你面对一堆待处理的音频时,请记住这个检查清单:
批量处理完成,立刻进入「识别历史」
按关键词/时间筛选,确认结果完整
查看1~2条详情,验证 itn_text 质量
根据下游用途,选择CSV(通用分析)或JSON(系统集成)
导出后,用5分钟跑通一个最小闭环(如:CSV→Excel→生成摘要)

语音识别的价值,永远不在“转出来”,而在“用起来”。而导出,正是那座连接AI能力与业务落地的桥。

---

> **获取更多AI镜像**
>
> 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐