昌吉回族自治州网站建设_网站建设公司_网站备案_seo优化
2026/1/22 4:11:35 网站建设 项目流程

Paraformer-large识别结果导出:TXT/JSON格式生成实战教程

1. 教程目标与适用人群

你是不是也遇到过这种情况:用语音识别工具转写了一段很长的会议录音或课程音频,结果只能在网页界面上看文字,没法保存下来做进一步整理?复制粘贴太麻烦,还容易丢内容。

本文要解决的就是这个问题——如何将 Paraformer-large 模型识别出的文字结果,自动保存为 TXT 和 JSON 文件,方便后续归档、分析或导入其他系统使用。

适合谁看:

  • 正在使用 Paraformer-large 做语音转写的用户
  • 想要把识别结果结构化保存的技术爱好者
  • 需要批量处理录音文件的办公人员、教育工作者、内容创作者

学完你能掌握:

  • 在原有 Gradio 界面基础上扩展“导出功能”
  • 实现一键生成.txt纯文本和.json结构化数据
  • 自定义文件命名规则与存储路径
  • 完整可运行代码,直接复制就能用

不需要你懂多深的编程,只要会改几行 Python 脚本,就能让整个流程自动化起来。

2. 功能升级思路:从展示到落地

目前默认的app.py只负责把识别结果显示在网页上。我们要做的,是在用户点击“开始转写”后,不仅显示结果,还能自动生成两个文件

  • output.txt:纯文本格式,适合直接阅读或导入 Word
  • output.json:包含完整信息(原始音频名、识别时间、文本内容等),便于程序调用

这样就实现了“识别 + 输出”的闭环,真正把 AI 工具变成生产力工具。

2.1 新增功能点拆解

功能模块实现方式
文件命名根据上传音频名生成对应 txt/json 文件
文本写入使用 Python 内置open()函数写入 txt
结构化输出构造字典对象并用json.dump()保存
下载链接Gradio 提供gr.File组件支持下载

我们不会改动模型本身,只是在推理完成后加几步“保存动作”,非常安全且易于维护。

3. 修改后的完整代码实现

下面是你需要替换掉原app.py的新版脚本。我已经加上了清晰注释,每一部分做什么都说清楚了。

# app.py - 支持结果导出的增强版 import gradio as gr from funasr import AutoModel import os import json from datetime import datetime # 加载模型 model_id = "iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch" model = AutoModel( model=model_id, model_revision="v2.0.4", device="cuda:0" ) # 定义保存目录 OUTPUT_DIR = "/root/workspace/output" os.makedirs(OUTPUT_DIR, exist_ok=True) def asr_process_with_export(audio_path): if audio_path is None: return "请先上传音频文件", None, None # 推理识别 res = model.generate(input=audio_path, batch_size_s=300) if len(res) > 0: text = res[0]['text'] else: return "识别失败,请检查音频格式", None, None # 获取音频文件名(不含路径) audio_filename = os.path.basename(audio_path) base_name = os.path.splitext(audio_filename)[0] # 生成时间戳 timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") # 构建输出文件名 txt_file = os.path.join(OUTPUT_DIR, f"{base_name}_transcript.txt") json_file = os.path.join(OUTPUT_DIR, f"{base_name}_result.json") # 写入 TXT 文件 with open(txt_file, 'w', encoding='utf-8') as f: f.write(text) # 写入 JSON 文件(带元信息) result_data = { "audio_file": audio_filename, "transcript": text, "duration_seconds": res[0].get("duration", "unknown"), "sample_rate": res[0].get("sample_rate", "16000"), "language": "zh-cn", "generated_at": timestamp } with open(json_file, 'w', encoding='utf-8') as f: json.dump(result_data, f, ensure_ascii=False, indent=2) # 返回识别结果 + 两个可下载的文件路径 return text, txt_file, json_file # 构建界面 with gr.Blocks(title="Paraformer 语音转文字控制台") as demo: gr.Markdown("# 🎤 Paraformer 离线语音识别转写") gr.Markdown("支持长音频上传,自动添加标点符号和端点检测,并可导出 TXT/JSON 文件。") with gr.Row(): with gr.Column(): audio_input = gr.Audio(type="filepath", label="上传音频或直接录音") submit_btn = gr.Button("开始转写", variant="primary") with gr.Column(): text_output = gr.Textbox(label="识别结果", lines=10) gr.Markdown("### 下载识别结果") txt_output = gr.File(label="TXT 文件下载") json_output = gr.File(label="JSON 文件下载") # 绑定按钮事件 submit_btn.click( fn=asr_process_with_export, inputs=audio_input, outputs=[text_output, txt_output, json_output] ) # 启动服务 demo.launch(server_name="0.0.0.0", server_port=6006)

3.1 关键修改说明

  • 新增 OUTPUT_DIR:所有导出文件统一放在/root/workspace/output目录下,避免混乱
  • 文件名智能生成:基于原音频名 +_transcript.txt/_result.json,防止覆盖
  • JSON 包含元数据:不只是文字,还包括时间、语言、音频信息,方便后期管理
  • Gradio File 组件:用户可以直接点击下载生成的文件

4. 如何部署与验证效果

4.1 替换脚本并重启服务

  1. 登录你的实例终端
  2. 编辑新脚本:
vim /root/workspace/app.py
  1. 粘贴上面的完整代码,保存退出(:wq
  2. 确保 output 目录存在:
mkdir -p /root/workspace/output
  1. 启动服务:
source /opt/miniconda3/bin/activate torch25 && cd /root/workspace && python app.py

4.2 测试流程演示

  1. 打开本地浏览器访问http://127.0.0.1:6006

  2. 上传一个.wav.mp3音频文件(建议先用小文件测试)

  3. 点击“开始转写”

  4. 等待几秒后:

    • 文字出现在上方文本框
    • 下方出现两个可下载按钮:“TXT 文件下载”和“JSON 文件下载”
  5. 分别点击下载,查看内容是否正确

示例输出文件内容

meeting_01_transcript.txt

今天召开了项目进度会议,主要讨论了下一阶段的功能开发安排。前端团队将在下周完成登录模块重构,后端预计周三前提供新的 API 接口文档。

meeting_01_result.json

{ "audio_file": "meeting_01.wav", "transcript": "今天召开了项目进度会议...", "duration_seconds": 187.5, "sample_rate": "16000", "language": "zh-cn", "generated_at": "20250405_142310" }

5. 进阶技巧与实用建议

5.1 批量处理多个音频文件?

虽然 Gradio 是单文件交互式界面,但你可以写个批处理脚本,在后台自动跑一堆音频。

示例脚本batch_asr.py

import os from funasr import AutoModel model = AutoModel(model="iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch") audio_dir = "/root/workspace/audio_files" output_dir = "/root/workspace/batch_output" for file in os.listdir(audio_dir): if file.endswith(('.wav', '.mp3')): path = os.path.join(audio_dir, file) res = model.generate(input=path) text = res[0]['text'] if res else "" with open(os.path.join(output_dir, f"{os.path.splitext(file)[0]}.txt"), 'w') as f: f.write(text)

5.2 如何让导出更规范?

可以加入这些优化:

  • 文件名中加入日期前缀:20250405_meeting_summary.txt
  • 设置最大文件数量限制,定期清理旧文件
  • 添加语音时长过滤,跳过太短的无效录音

5.3 注意事项提醒

  • 磁盘空间:长时间录音转写会产生大量文本,记得定期清理/output目录
  • 编码问题:务必使用encoding='utf-8',否则中文可能乱码
  • 路径权限:确保/root/workspace/output有写入权限,否则会报错
  • GPU 利用率:4090D 上识别速度很快,但如果并发太多请求可能会卡顿

6. 总结:让语音识别真正为你所用

通过这篇教程,你应该已经成功把一个“只能看”的语音识别工具,变成了一个“能存、能用、能集成”的实用系统。

核心收获回顾:

  • 学会了如何在 Paraformer-large 的 Gradio 界面中增加文件导出功能
  • 掌握了 TXT 和 JSON 两种主流格式的生成方法
  • 理解了如何组织输出结构,便于后期管理和程序调用
  • 获得了可直接运行的完整代码模板

现在你可以:

  • 把会议录音自动转成纪要文档
  • 将课程音频转为学习笔记
  • 批量处理客户访谈并归档
  • 搭建自己的语音资料库

这才是 AI 工具该有的样子——不只是炫技,而是实实在在帮你省时间、提效率。


获取更多AI镜像

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询