核心内容摘要
视听盛宴的终极定义:97色综合网最新资源全解析,带你领略不一样的色彩世界
Fun-ASR导出JSON格式数据对接其他系统超简单在企业语音处理流程中识别结果往往只是起点而非终点。
你可能刚用Fun-ASR完成一场3小时会议录音的转写正准备把文字稿导入知识库做摘要也可能刚批量处理了50条客服通话急需将结构化结果推送到BI系统生成服务质量报表又或者正在搭建一个自动化工作流——音频上传→自动识别→情感分析→工单分派。
这时你会发现能识别只是基础能力能无缝对接才是工程落地的关键。
Fun-ASR作为钉钉联合通义推出的语音识别大模型WebUI系统构建by科哥从设计之初就将“系统互操作性”置于核心位置。
它不只提供漂亮的界面和高准确率更通过一套轻量但完备的本地SQLite历史数据库 标准化API接口 原生JSON导出能力让语音数据真正流动起来。
无需写爬虫、不用逆向解析HTML、不必手动拼接字段——只需一次点击或一行curl命令就能拿到可直接被Python脚本、Node服务、低代码平台甚至Excel Power Query消费的干净JSON数据。
这不是锦上添花的功能点缀而是面向真实集成场景的务实设计让ASR不再是一个孤岛式工具而成为你现有技术栈中可信赖的数据源节点。
JSON导出功能在哪三步直达Fun-ASR的JSON导出能力隐藏在“识别历史”模块中路径清晰、操作极简完全不需要任何开发背景。
1 进入识别历史页面启动Fun-ASR WebUI后bash start_app.sh访问http://localhost:7860点击顶部导航栏的“识别历史”标签页。
你会看到一个简洁列表显示最近100条识别记录每条包含ID、时间、文件名、简略结果等信息。
注意所有识别任务无论单次识别、实时流式还是批量处理只要成功完成都会自动存入历史库。
未完成或失败的任务不会入库确保导出数据100%有效。
2 筛选你需要的数据在历史列表上方有两个关键操作区搜索框输入关键词如“周报”、“客户反馈”、“Q3”系统会实时匹配文件名和识别结果内容快速过滤出目标记录选择器支持勾选单条或多条记录支持Ctrl/Cmd多选也可点击“全选”按钮一次性选中当前页全部。
小技巧如果你要导出某次批量处理的所有结果建议在上传时统一命名如meeting_20250415_*.mp3再用meeting_20250415搜索即可精准定位整批。
3 一键导出为JSON勾选好目标记录后点击右上角的“导出为JSON”按钮图标为{}。
浏览器将立即下载一个.json文件文件名形如funasr_history_20250415_
json含时间戳避免覆盖。
整个过程无需配置、无弹窗确认、不跳转页面——就像复制粘贴一样自然。
JSON数据长什么样结构清晰开箱即用导出的JSON不是扁平的字符串数组而是一个语义明确、层级合理、保留全部上下文的对象集合。
我们以导出两条记录为例展示其真实结构{ meta: { export_time:
T14:23:0108:00, total_records: 2, exported_by: webui_v
1.
0 }, records: [ { id: 1024, timestamp:
10:12:33, filename: product_demo.mp3, filepath: /home/user/audio/product_demo.mp3, result_text: 今天我们演示了新产品的核心功能包括智能推荐引擎和实时库存同步。
, normalized_text: 今天我们演示了新产品的核心功能包括智能推荐引擎和实时库存同步。
, language: zh, itn_enabled: true, hotwords: [智能推荐引擎, 实时库存同步] }, { id: 1025, timestamp:
11:05:47, filename: support_call_
wav, filepath: /home/user/audio/support_call_
wav, result_text: 用户反映订单号 123456789 的发货状态一直未更新希望尽快处理。
, normalized_text: 用户反映订单号123456789的发货状态一直未更新希望尽快处理。
, language: zh, itn_enabled: true, hotwords: [订单号, 发货状态] } ] }
1 结构解析为什么这个JSON如此友好字段类型说明实际价值meta.export_timestring导出时刻ISO 8601格式明确数据快照时间点便于审计与版本管理meta.total_recordsnumber当前导出条数快速校验数据完整性防止漏导records[].idnumber历史库唯一主键可作为外部系统关联ID避免重复导入records[].timestampstring识别完成时间支持按时间维度聚合分析如“今日识别量”records[].filenamestring原始文件名保留业务标识方便追溯源头records[].result_textstring原始识别文本用于NLP下游任务分词、实体识别、摘要records[].normalized_textstringITN规整后文本直接用于报表、搜索、知识图谱构建records[].languagestring识别语言代码zh/en/ja多语言场景下路由到不同处理管道records[].itn_enabledboolean是否启用文本规整判断数字/日期等格式是否已标准化records[].hotwordsarray of string使用的热词列表分析术语使用频率优化热词策略关键优势所有字段均为标准JSON类型string/number/boolean/array无嵌套对象或特殊编码任何主流编程语言都能用原生JSON库直接解析零学习成本。
对接实战三类典型集成场景手把手光有结构还不够关键是“怎么用”。
下面用三个真实场景展示如何用几行代码把Fun-ASR的JSON变成生产力。
1 场景一Python脚本自动导入知识库5行代码假设你用Notion或Confluence管理产品文档希望每天自动将昨日会议纪要同步过去。
只需一个Python脚本import json import requests from datetime import datetime, timedelta #
读取昨天导出的JSON假设已存在 with open(funasr_history_20250414_*.json, r, encodingutf-
as f: data json.load(f) #
遍历每条记录构造Notion页面内容 for record in data[records]: title f【会议纪要】{record[filename]} content f ### 原始文本 {record[result_text]} ### 规整后文本 {record[normalized_text]} *识别时间{record[timestamp]} | 语言{record[language]}* #
调用Notion API创建页面此处省略认证细节 # requests.post(https://api.notion.com/v1/pages, json{...}) print(f 已准备导入{title})为什么高效因为normalized_text字段已将口语化表达如“二零二五年四月十五号”转为“2025年4月15日”无需额外清洗直接可用。
2 场景二Node.js服务接收Webhook触发后续分析你想让Fun-ASR识别完立刻通知你的后端服务进行情感分析。
Fun-ASR虽不内置Webhook但你可以用curl模拟# 在批量处理完成后立即导出并推送 curl -X POST http://your-backend.com/api/asr-hook \ -H Content-Type: application/json \ -d $(ls -t funasr_history_*.json | head -
后端Node.js服务接收后app.post(/api/asr-hook, (req, res) { const { records } req.body; // 并行调用情感分析API伪代码 const analysisPromises records.map(record fetch(https://api.sentiment.ai/analyze, { method: POST, body: JSON.stringify({ text: record.normalized_text }) }).then(r r.json()) ); Promise.all(analysisPromises).then(results { // 将结果存入数据库标记高风险对话 console.log( 分析完成${results.length} 条); }); });优势normalized_text字段保证了输入文本的格式一致性大幅提升情感分析准确率。
3 场景三Excel Power Query直接加载JSON零代码做报表非技术人员也能轻松利用。
打开Excel → 数据选项卡 → “从文件” → “从JSON”选择导出的.json文件。
Power Query会自动展开records数组并识别所有字段类型itn_enabled为逻辑值timestamp为日期时间。
你立刻可以用透视表统计各语言识别量筛选itn_enabledtrue的记录查看标准化效果对normalized_text列使用“提取”功能快速拆分出“订单号”、“客户名”等关键词将结果发布到Power BI生成实时语音质量看板。
这正是Fun-ASR设计的精妙之处不预设使用者的技术水平但为所有可能性留出接口。
高级技巧用API绕过界面实现全自动导出对于需要定时、批量、无人值守导出的场景如每日凌晨导出所有新记录你可以直接调用Fun-ASR的内部API完全跳过WebUI。
1 API端点与参数Fun-ASR WebUI后端暴露了标准REST接口GET/api/history/export/json导出全部历史记录GET/api/history/export/json?ids1024,1025按ID导出指定记录逗号分隔GET/api/history/export/json?since
导出某日期之后的记录
2 自动化脚本示例Bash curl创建一个auto_export.sh#!/bin/bash # 获取今日日期格式YYYY-MM-DD TODAY$(date %Y-%m-%d) # 导出今日所有新记录 curl -s http://localhost:7860/api/history/export/json?since$TODAY \ -o funasr_daily_$TODAY.json # 检查是否成功HTTP状态码200且文件非空 if [ $(stat -c%s funasr_daily_$TODAY.json 2/dev/null || echo
-gt 100 ]; then echo $TODAY 数据导出成功 # 同步到NAS或云存储 # rsync -av funasr_daily_$TODAY.json usernas:/backup/asr/ else echo ❌ 导出失败请检查Fun-ASR服务状态 fi添加到crontab每天上午9点执行0 9 * * * /path/to/auto_export.sh /var/log/funasr_export.log 21完全静默运行无需人工干预为企业级自动化铺平道路。
5.
常见问题与避坑指南即使设计再友好实际使用中仍可能遇到小状况。
以下是高频问题的直击解答Q1导出的JSON里filepath是绝对路径我的服务器没有这个目录能用吗A完全可以。
filepath字段仅作参考不影响核心内容使用。
绝大多数集成场景如文本分析、报表生成只依赖normalized_text和filename。
若需路径映射可在脚本中用os.path.basename()提取文件名或用字典做路径重写。
Q2导出的JSON文件很大超过10MBExcel打不开怎么办A这是正常现象1000条记录约
MB。
解决方案用VS Code或Notepad等编辑器打开搜索关键词定位用Python/Pandas加载df pd.read_json(file.json, orientrecords)在Power Query中启用“高级编辑器”添加Table.SelectRows(#源, each [id]
限制条数。
Q3我想导出时只包含normalized_text不要其他字段能自定义吗A当前WebUI不支持前端字段筛选但后端API可配合脚本精简。
例如用jq工具curl http://localhost:7860/api/history/export/json?since
| \ jq {meta: .meta, records: [.records[] | {id: .id, text: .normalized_text, time: .timestamp}]} \ clean_output.jsonQ4导出后发现某条记录的normalized_text为空是Bug吗A不是Bug。
当识别结果为空如静音文件、严重噪音或ITN处理失败时该字段会为空字符串。
建议在下游处理中增加判空逻辑if record.get(normalized_text): process(record[normalized_text])。
6.
总结让语音数据真正流动起来Fun-ASR的JSON导出功能表面看只是一个“下载按钮”背后却承载着三层深意第一层是工程务实性放弃复杂配置用SQLite本地存储标准JSON格式确保在树莓派、MacBook、GPU服务器上都能零门槛运行第二层是架构前瞻性所有功能均通过REST API暴露/api/history/export/json为未来接入K8s Job、Airflow DAG、Zapier自动化等留足空间第三层是用户同理心字段命名直白result_text而非raw_transcript、时间格式兼容ISO标准、布尔值用true/false而非1/0处处降低使用者的认知负担。
当你下次面对一堆语音文件时记住Fun-ASR不只是帮你“听清”更在帮你“管好”、“连上”、“用活”。
那一个小小的{}导出按钮就是打通语音智能最后一公里的钥匙。
现在就去试试导出你的第一条JSON吧——它可能就是你下一个自动化流程的起点。
--- **