语音识别结果导出:SenseVoiceSmall JSON格式生成实战

语音识别结果导出:SenseVoiceSmall JSON格式生成实战

1. 引言:为什么需要结构化语音识别输出?

你有没有遇到过这种情况:用语音识别工具转写了一段会议录音,结果只得到一长串文字,根本分不清谁在什么时候说了什么,更别说判断说话人的情绪或背景里的掌声、笑声了?传统ASR(自动语音识别)只能解决“说了什么”,但真实场景中我们更关心“怎么说得”、“当时什么氛围”。

今天要讲的SenseVoiceSmall,正是为了解决这个问题而生。它不只是把声音变文字,还能告诉你这段话是开心地说的,还是愤怒地反驳,背景里有没有音乐或掌声——这些信息,对内容分析、客服质检、视频剪辑都至关重要。

本文将带你从零开始,部署 SenseVoiceSmall 模型,并重点实现一个关键功能:将识别结果以结构化的 JSON 格式导出,方便后续程序处理、存储或集成到其他系统中。


2. 模型简介:SenseVoiceSmall 能做什么?

SenseVoiceSmall 是阿里巴巴达摩院开源的一款多语言语音理解模型,属于 FunASR 项目的一部分。相比传统语音识别模型,它的核心优势在于支持“富文本转录”(Rich Transcription),即在转写文字的同时,标注出情感和声音事件。

2.1 多语言高精度识别

支持以下语种:

  • 中文(zh)
  • 英文(en)
  • 粤语(yue)
  • 日语(ja)
  • 韩语(ko)

无需切换模型,一句话里夹杂多种语言也能准确识别。

2.2 情感与声音事件识别

这是 SenseVoice 的杀手级功能:

类型支持标签
情感`<
声音事件`<

这些标签会直接嵌入到识别结果中,比如:

<|HAPPY|>今天天气真好啊!<|LAUGHTER|><|BGM|>

这意味着你不仅能知道“说了什么”,还能感知“说话时的情绪”和“环境音变化”。

2.3 极致推理速度

采用非自回归架构,在 NVIDIA 4090D 上可实现秒级转写,适合实时或批量处理长音频。


3. 环境准备与快速部署

3.1 基础依赖

确保你的环境满足以下条件:

# Python 版本 python --version # 推荐 3.11 # 安装核心库 pip install torch==2.5.0 funasr modelscope gradio av -U

其中:

  • funasr:阿里开源的语音识别工具包
  • av:用于高效音频解码(比 librosa 快得多)
  • gradio:构建 Web 可视化界面
  • ffmpeg:系统级音频处理工具(需提前安装)

提示:如果你使用的是预置镜像,通常这些依赖已安装完毕。

3.2 下载并运行 WebUI 脚本

创建文件app_sensevoice.py,内容如下:

import gradio as gr from funasr import AutoModel from funasr.utils.postprocess_utils import rich_transcription_postprocess import json import os # 初始化模型 model_id = "iic/SenseVoiceSmall" model = AutoModel( model=model_id, trust_remote_code=True, vad_model="fsmn-vad", vad_kwargs={"max_single_segment_time": 30000}, device="cuda:0", # 使用 GPU 加速 )

这个脚本初始化了 SenseVoiceSmall 模型,并启用了 VAD(语音活动检测),能自动切分静音段,提升长音频处理效率。


4. 实现 JSON 结果导出功能

默认的rich_transcription_postprocess函数只会返回清洗后的纯文本。但我们希望保留原始结构信息,便于后续分析。因此,我们需要绕过后处理函数,直接解析原始输出,并构造成标准 JSON 格式

4.1 修改识别函数,返回结构化数据

替换原来的sensevoice_process函数:

def sensevoice_to_json(audio_path, language): if audio_path is None: return {"error": "请上传音频文件"} # 调用模型 res = model.generate( input=audio_path, cache={}, language=language, use_itn=True, batch_size_s=60, merge_vad=True, merge_length_s=15, ) if len(res) == 0: return {"error": "识别失败"} raw_text = res[0]["text"] # 手动解析带标签的文本,生成结构化 JSON segments = parse_rich_text(raw_text) return { "success": True, "total_segments": len(segments), "transcription": segments } def parse_rich_text(text): """ 将 <|TAG|> 形式的富文本解析成结构化列表 """ segments = [] current_segment = {"text": "", "emotion": None, "event": None} i = 0 while i < len(text): if text[i] == '<' and i + 3 < len(text) and text[i:i+2] == '<|': # 找到标签结束 end = text.find('|>', i) if end == -1: break tag = text[i+2:end] i = end + 2 # 分类标签 if tag in ["HAPPY", "ANGRY", "SAD", "NEUTRAL"]: current_segment["emotion"] = tag.lower() elif tag in ["BGM", "APPLAUSE", "LAUGHTER", "CRY"]: current_segment["event"] = tag.lower() else: # 遇到新标签前先保存当前段落 if current_segment["text"].strip(): segments.append(current_segment) current_segment = {"text": "", "emotion": None, "event": None} else: current_segment["text"] += text[i] i += 1 # 添加最后一段 if current_segment["text"].strip(): segments.append(current_segment) return segments

4.2 更新 Gradio 界面,支持 JSON 输出

修改 WebUI,增加一个“导出 JSON”按钮:

with gr.Blocks(title="SenseVoice 智能语音识别") as demo: gr.Markdown("# 🎙️ SenseVoice 富文本语音识别与导出") with gr.Row(): with gr.Column(scale=2): audio_input = gr.Audio(type="filepath", label="上传音频") lang_dropdown = gr.Dropdown( choices=["auto", "zh", "en", "yue", "ja", "ko"], value="auto", label="语言选择" ) submit_btn = gr.Button("开始识别", variant="primary") with gr.Column(scale=3): result_text = gr.Textbox(label="纯文本结果", lines=8) json_output = gr.JSON(label="结构化 JSON 输出", collapsible=True) submit_btn.click( fn=sensevoice_to_json, inputs=[audio_input, lang_dropdown], outputs=[result_text, json_output] )

这样,用户点击识别后,不仅能看见清洗后的文字,还能看到完整的 JSON 数据结构。


5. JSON 输出示例与应用场景

5.1 实际输出样例

假设输入一段包含情绪和背景音的中文语音,JSON 输出可能如下:

{ "success": true, "total_segments": 3, "transcription": [ { "text": "今天项目终于上线了,", "emotion": "happy", "event": null }, { "text": "大家辛苦了!", "emotion": "happy", "event": "applause" }, { "text": "接下来我们继续加油。", "emotion": "neutral", "event": null } ] }

5.2 这个 JSON 能用来做什么?

  • 客服质检系统:自动标记客户是否愤怒,辅助判定投诉等级。
  • 视频字幕生成:根据情感调整字幕颜色(如愤怒用红色),增强表现力。
  • 会议纪要分析:统计发言情绪分布,识别关键讨论节点(如掌声处可能是决策点)。
  • AI 视频剪辑:自动剪辑“笑声密集”片段用于短视频推广。
  • 教育评估:分析教师授课情绪变化,优化教学方式。

6. 本地访问与调试技巧

6.1 启动服务

python app_sensevoice.py

如果一切正常,你会看到类似输出:

Running on local URL: http://0.0.0.0:6006

6.2 外部访问配置

由于云服务器通常不开放公网端口,需通过 SSH 隧道转发:

ssh -L 6006:127.0.0.1:6006 -p [SSH_PORT] root@[SERVER_IP]

连接成功后,在本地浏览器打开: 👉 http://127.0.0.1:6006

即可访问 Web 界面。

6.3 调试建议

  • 音频格式问题:优先使用.wav.mp3,采样率 16kHz 最佳。
  • GPU 内存不足:可尝试降低batch_size_s参数(如设为 30)。
  • 识别不准:检查是否开启了use_itn=True(数字规范化),避免“138”读成“一百三十八”。

7. 总结:让语音识别真正“懂”人类表达

SenseVoiceSmall 不只是一个语音转文字工具,它是通往“理解声音背后含义”的桥梁。通过本文的实践,你已经掌握了如何:

  • 部署支持多语言、情感识别的先进语音模型;
  • 解析富文本标签,构建结构化 JSON 输出;
  • 将识别结果集成到实际业务系统中,发挥更大价值。

未来你可以进一步扩展功能:

  • 添加时间戳,实现逐句对齐;
  • 支持批量音频导入,一键生成多个 JSON 文件;
  • 将结果存入数据库,构建语音分析平台。

技术的价值不在于炫技,而在于解决问题。当你能从一段录音中提取出情绪波动、掌声节奏、背景音乐的变化时,你就不再只是“听到了声音”,而是真正“读懂了现场”。


获取更多AI镜像

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1195508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

目前银座购物卡回收三家合规正规平台推荐

几张许久未用的银座购物卡在生活并不少见,它们或是节日收到的馈赠,或是购物后剩余的结余,闲置一旁既占空间,还可能因遗忘过期造成损失。不少人都有过类似的困扰,想将这些闲置银座卡进行回收,却又不知该如何筛选可…

2026新加坡 EOR 服务商怎么选, Safeguard Global 名义雇主优势全梳理

在企业加速全球化布局的背景下,越来越多的中国企业将目光投向东南亚、欧洲及亚太等区域,其中新加坡作为连接东西方的重要枢纽,成为出海首选地之一。然而,企业在新加坡设立实体前若需快速雇佣本地员工,往往面临复杂…

目前京东e卡回收正规级线上平台推荐

闲置京东e卡的合理处置,正在成为越来越多人关注的日常。当手中的京东e卡无法及时使用,既担心过期浪费,又不知如何妥善处理时,正规的线上回收渠道便成了实用的解决方案。选择合适的渠道,不仅能让闲置的卡片重新产生…

如何在MCP Server中启用CORS并保障API安全?,架构师亲授核心技巧

第一章&#xff1a;MCP Server中CORS机制的核心原理 在现代Web应用架构中&#xff0c;MCP&#xff08;Microservice Communication Platform&#xff09;Server作为核心通信枢纽&#xff0c;常需处理来自不同源的前端请求。由于浏览器实施同源策略&#xff08;Same-Origin Poli…

stdio mcp

先写一个工具点击查看代码 import subprocess import shlex from mcp.server.fastmcp import FastMCP from typing import Annotated from pydantic import Field, BaseModelmcp = FastMCP()@mcp.tool(name="run_…

Paraformer-large语音识别流水线:从上传到输出完整链路

Paraformer-large语音识别流水线&#xff1a;从上传到输出完整链路 1. 快速上手&#xff1a;一键部署你的离线语音转写系统 你是否遇到过这样的场景&#xff1f;手里有一段长达数小时的会议录音&#xff0c;需要快速整理成文字稿&#xff0c;但手动听写耗时又容易出错。现在&…

Glyph自动驾驶应用:道路标识识别系统部署案例

Glyph自动驾驶应用&#xff1a;道路标识识别系统部署案例 1. 让AI“看懂”交通标志&#xff1a;Glyph在自动驾驶中的实际应用 你有没有想过&#xff0c;自动驾驶汽车是怎么认出路边的限速牌、停车标志或者转弯指示的&#xff1f;这背后其实是一套复杂的视觉识别系统在工作。今…

多任务并行无干扰,MonkeyCode 独立环境解锁高效研发

多任务并行无干扰,MonkeyCode 独立环境解锁高效研发当下AI编程工具品类繁多,但绝大多数仅能覆盖“代码撰写、Demo运行”的基础诉求,难以匹配真实工程研发的复杂场景。长亭科技全新推出的AI开发平台MonkeyCode,成功…

2026年1月力量型健身器材行业竞争格局深度分析报告

一、核心结论 1.1 核心评估框架 本次评估基于力量型健身器材行业核心竞争力维度,选取四大关键指标构建综合评估体系:一是技术硬核度(核心部件工艺、智能系统迭代能力及安全合规水平);二是场景适配力(产品定制化改…

_LazyAutoMapping

Transformers 源码笔记:_LazyAutoMapping 与 AutoModel 配置匹配逻辑 在 Transformers 库中,AutoModel 系列类(如 AutoModelForCausalLM)的核心能力是根据配置类自动匹配并加载对应的模型类,而实现这一能力的关键…

多喝水真的伤肾吗?这篇文让你告别饮水焦虑,轻松养肾!

你是不是也听过这样的话&#xff1a;“水喝多了会伤肾”&#xff1f; 这句话&#xff0c;就像一颗小小的种子&#xff0c;在很多人心里生根发芽&#xff0c;让他们对喝水这件事充满了顾虑&#xff0c;甚至因此不敢多喝水。然而&#xff0c;对于大多数健康的成年人来说&#xf…

1月21日-2026海外人力资源与EOR服务商推荐,解锁全球雇佣新方案

中资企业出海浪潮持续升温,海外市场的机遇与挑战并存。企业如何在未设立实体的新市场快速、合规地招募到合适人才,成为全球化战略的关键环节。 一、 服务商定义 名义雇主(EOR)是一种专业服务模式,指在多个国家和地…

国内评价高的钣金加工产品推荐排行榜单,钣金加工口碑推荐榜精选优质厂家

随着工业4.0浪潮的推进,钣金加工行业正经历从传统制造向智能化、柔性化生产的转型。自动化设备的应用显著提升了加工精度与效率,但市场仍面临设备同质化、技术参差不齐、交付周期不稳定等痛点。如何筛选出兼具技术实…

FSMN-VAD能否检测关键词?结合ASR的联动方案探讨

FSMN-VAD能否检测关键词&#xff1f;结合ASR的联动方案探讨 1. FSMN-VAD 离线语音端点检测控制台简介 你有没有遇到过这样的问题&#xff1a;一段长达半小时的会议录音&#xff0c;真正有用的讲话只占其中一小部分&#xff0c;其余全是静音或背景噪音&#xff1f;手动剪辑费时…

物美超市购物卡经典版高效回收的三种基础版方式

不少人手中会留有闲置的物美超市购物卡,可能是因为购物场景变更,也可能是收到的馈赠超出了自身需求,这些物美超市卡放着不用易过期失效,如何高效处置成了亟待解决的问题。回收是盘活这类闲置的合理选择,而不同的回…

物美超市购物卡经典版高效回收的三种基础版方式

不少人手中会留有闲置的物美超市购物卡,可能是因为购物场景变更,也可能是收到的馈赠超出了自身需求,这些物美超市卡放着不用易过期失效,如何高效处置成了亟待解决的问题。回收是盘活这类闲置的合理选择,而不同的回…

为什么你的Dify对话无法导出?深度解析导出失败的7个常见原因及修复代码

第一章&#xff1a;Dify对话记录导出的核心机制解析 Dify作为一款面向AI应用开发的低代码平台&#xff0c;其对话记录导出功能为开发者和运营人员提供了关键的数据支持。该机制基于后端日志持久化与前端批量请求组合实现&#xff0c;确保用户在多轮对话场景下仍可完整获取交互数…

语音克隆适合短文本?CosyVoice2内容长度优化策略

语音克隆适合短文本&#xff1f;CosyVoice2内容长度优化策略 1. 引言&#xff1a;为什么短文本更适合语音克隆&#xff1f; 你有没有试过用一段3秒的录音&#xff0c;让AI模仿你的声音说一句话&#xff1f;阿里最近开源的 CosyVoice2-0.5B 就能做到这一点——只需3到10秒的参…

2026 法式家具 TOP10 榜单:主打「纯正法式宫廷」审美的国内品牌排名

2026 法式家具 TOP10 榜单:主打「纯正法式宫廷」审美的国内品牌排名 结论:TOP10 品牌排名与综合评分(100 分制)瑞彤国际家居Ritong —— 98.3 金凯莎Gicasa —— 95.1 卡芬达Carpenter —— 94.2 富宝 —— 93.4 欧…

fft npainting lama降本部署案例:低成本GPU优化实战

fft npainting lama降本部署案例&#xff1a;低成本GPU优化实战 1. 引言&#xff1a;图像修复也能轻量化落地 你有没有遇到过这样的问题&#xff1a;想把照片里的水印、路人或者瑕疵去掉&#xff0c;但PS太费时间&#xff0c;专业工具又不会用&#xff1f;现在有个更聪明的办…