news 2026/9/11 11:40:20

从0开始学语音AI:用SenseVoiceSmall做带情绪标签的转录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从0开始学语音AI:用SenseVoiceSmall做带情绪标签的转录

从0开始学语音AI:用SenseVoiceSmall做带情绪标签的转录

你有没有遇到过这样的问题:一段录音里,说话人明明语气激动,但转写出来的文字却平平无奇?或者视频会议记录里,大家鼓掌、笑出声的瞬间,在文本中完全“消失”了?

传统的语音识别(ASR)只能把声音变成文字,而现在的AI已经能听懂“语气”和“环境”了。今天我们要一起上手的,就是阿里开源的SenseVoiceSmall模型——它不仅能精准识别中文、英文、日语、韩语、粤语,还能告诉你这段话是“开心地说”还是“愤怒地吼”,甚至标注出背景里的掌声、笑声、音乐。

更棒的是,我们不需要一行行敲代码,就能通过一个可视化界面玩转这个强大的模型。这篇文章会带你从零开始,一步步部署、运行,并真正理解它输出的每一条“带情绪的转录”。

1. 为什么你需要“带情绪”的语音识别?

传统ASR vs 富文本转录

我们先来对比一下:

  • 传统语音识别(ASR)
    输入:一段音频
    输出:纯文字
    示例:

    “我觉得这个方案不行。”

    看不出说话人是冷静分析,还是在发火。

  • 富文本转录(Rich Transcription)
    输入:同一段音频
    输出:带情感和事件标签的文字
    示例:

    <|ANGRY|>我觉得这个方案不行<|APPLAUSE|>

    这下清楚多了:说话人生气了,而且后面还有人鼓掌。

这种能力在很多场景下非常关键:

  • 客服质检:自动识别客户是否不满,提升服务质量。
  • 视频字幕生成:让字幕更有表现力,比如标注“(笑声)”。
  • 会议纪要:标记谁在什么时候表达了情绪,便于复盘。
  • 内容创作:为播客、短视频自动生成带氛围描述的脚本。

而 SenseVoiceSmall 正是目前少数能同时支持多语言 + 情感识别 + 声音事件检测的开源模型之一。

2. 镜像环境快速部署

2.1 一键启动 WebUI

你拿到的镜像是一个已经配置好所有依赖的完整环境,包括:

  • Python 3.11
  • PyTorch 2.5
  • FunASR 和 ModelScope 核心库
  • Gradio 可视化界面
  • FFmpeg 音频处理工具

这意味着你几乎不需要手动安装任何东西。

如果镜像没有自动运行服务,只需在终端执行以下命令即可启动 Web 界面:

python app_sensevoice.py

这条命令会启动一个基于 Gradio 的网页应用,默认监听6006端口。

2.2 如何访问本地 Web 界面?

由于大多数云平台出于安全考虑不直接开放端口,我们需要通过 SSH 隧道将远程服务映射到本地。

在你的本地电脑终端运行:

ssh -L 6006:127.0.0.1:6006 -p [实际端口号] root@[服务器IP]

连接成功后,打开浏览器访问:

👉 http://127.0.0.1:6006

你会看到一个简洁的语音识别控制台,支持上传音频或直接录音,选择语言,点击按钮就能获得结果。


小贴士:为什么用 Gradio?
Gradio 是一个极简的 Python 库,几行代码就能把机器学习模型变成可交互的网页。对于非前端开发者来说,它是快速验证模型效果的最佳工具。


3. 模型核心功能详解

3.1 多语言识别:不再局限于中文

SenseVoiceSmall 支持五种主要语言:

语言代码
自动识别auto
中文zh
英文en
粤语yue
日语ja
韩语ko

你在使用时可以通过下拉菜单指定语言,也可以设为auto让模型自动判断。

这对于跨国会议、双语访谈等场景特别有用。

3.2 情感识别:听出“语气”

模型可以识别多种情感状态,常见的有:

  • <|HAPPY|>:开心、兴奋
  • <|SAD|>:低落、悲伤
  • <|ANGRY|>:愤怒、不满
  • <|NEUTRAL|>:中性、平静

这些标签会被插入到对应语句前后,形成“富文本”输出。

举个例子:

原始音频内容:
“哇!这真是太棒了!!”

模型输出可能为:
<|HAPPY|>哇!这真是太棒了!!

这比单纯的文字多了太多信息量。

3.3 声音事件检测:听见“背景音”

除了人声,模型还能识别环境中的特定声音事件:

  • <|BGM|>:背景音乐
  • <|APPLAUSE|>:掌声
  • <|LAUGHTER|>:笑声
  • <|CRY|>:哭声

想象一下,一段脱口秀视频中,观众突然爆笑,传统 ASR 只会沉默,而 SenseVoice 会标注:

<|LAUGHTER|>(此时全场大笑)

这对后期剪辑、内容摘要都非常有价值。

4. 实际操作演示

4.1 准备一段测试音频

你可以找一段包含以下元素的音频来测试:

  • 不同情绪的说话(如高兴、生气)
  • 背景音乐
  • 掌声或笑声

如果没有现成素材,也可以自己录制一段简单的测试语音,比如:

“大家好,今天我们来聊聊 AI。(笑声)我觉得这项技术真的太神奇了!(掌声)”

4.2 上传并识别

  1. 打开 http://127.0.0.1:6006
  2. 点击“上传音频”按钮,选择你的文件
  3. 在“语言选择”中选zhauto
  4. 点击“开始 AI 识别”

等待几秒钟,结果就会出现在右侧文本框中。

4.3 查看带标签的输出

假设你上传了一段带有笑声和掌声的演讲录音,输出可能是这样的:

<|HAPPY|>大家好,今天我们来聊聊 AI<|LAUGHTER|>我觉得这项技术真的太神奇了!<|APPLAUSE|>

是不是一下子生动起来了?

4.4 后处理:让标签更友好

默认输出中的<|HAPPY|>这类标签虽然清晰,但在某些场景下可能不够自然。我们可以用rich_transcription_postprocess函数将其转换为更易读的形式。

例如:

from funasr.utils.postprocess_utils import rich_transcription_postprocess raw_text = "<|HAPPY|>大家好<|APPLAUSE|>" clean_text = rich_transcription_postprocess(raw_text) print(clean_text) # 输出:[开心]大家好[掌声]

这样更适合展示给普通用户。

5. 代码解析:看看背后发生了什么

虽然我们用了 Gradio 界面,但了解背后的逻辑对后续定制非常重要。

以下是app_sensevoice.py的关键部分拆解:

5.1 初始化模型

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 加速 )

这里做了几件事:

  • 加载预训练模型
  • 启用 VAD(语音活动检测),自动切分静音段
  • 指定使用 GPU 提升推理速度

5.2 调用识别接口

res = model.generate( input=audio_path, cache={}, language=language, use_itn=True, # 数字转文字(如 100 → 一百) batch_size_s=60, # 批处理长度,影响速度 merge_vad=True, # 合并短片段 merge_length_s=15, # 最大合并时长 )

参数说明:

  • use_itn=True:开启“逆文本归一化”,把数字、日期等转成口语表达。
  • batch_size_s=60:以60秒为单位进行批处理,适合长音频。
  • merge_vad=True:避免一句话被切成太碎的片段。

5.3 结果清洗

raw_text = res[0]["text"] clean_text = rich_transcription_postprocess(raw_text)

这一步会把原始标签美化成[开心][掌声]这样的格式,更适合展示。

6. 使用技巧与常见问题

6.1 音频格式建议

  • 采样率:推荐 16kHz,模型会自动重采样,但原始为16k效果最佳。
  • 格式:WAV、MP3、FLAC 均可,避免使用高压缩率的 AMR 或 OPUS。
  • 声道:单声道优先,立体声也能处理,但可能影响定位精度。

6.2 如何提升识别准确率?

  • 明确语言设置:如果知道是中文,就不要用auto,直接选zh
  • 避免背景噪音过大:虽然模型有一定抗噪能力,但清晰录音效果更好。
  • 控制语速:过快或含糊不清会影响断句和情感判断。

6.3 常见问题排查

问题可能原因解决方法
无法启动服务端口被占用更换server_port为其他值,如6007
识别失败音频损坏或路径错误检查上传文件是否正常
情感标签缺失语气太平淡尝试更明显的情绪表达
GPU 报错显存不足改用 CPU 推理(device="cpu"

经验分享:什么时候用 GPU?
如果你只是偶尔处理几段短音频,CPU 完全够用。但如果你要批量处理上百条录音,强烈建议使用 GPU(如 4090D),推理速度可达秒级,效率提升显著。


7. 进阶玩法:不只是转录

7.1 批量处理音频文件

你可以写个脚本,遍历整个文件夹,自动处理所有音频:

import os audio_dir = "./audios/" for filename in os.listdir(audio_dir): if filename.endswith((".wav", ".mp3")): audio_path = os.path.join(audio_dir, filename) result = model.generate(input=audio_path, language="auto") text = result[0]["text"] clean_text = rich_transcription_postprocess(text) with open(f"transcripts/{filename}.txt", "w") as f: f.write(clean_text)

7.2 构建私有语音分析平台

结合数据库和前端框架(如 Vue),你可以搭建一个企业级语音分析系统:

  • 上传会议录音 → 自动生成带情绪标记的纪要
  • 统计客户投诉录音中“愤怒”出现频率
  • 分析培训课程中讲师情绪变化趋势

7.3 与其他工具集成

  • 接入微信机器人:用户发送语音,自动回复转录结果。
  • 连接 Notion API:将会议记录直接写入知识库。
  • 配合 TTS 模型:实现“有感情”的语音合成闭环。

8. 总结

8.1 你学会了什么?

在这篇文章中,我们完成了以下目标:

  • 了解了什么是“富文本转录”,以及它相比传统 ASR 的优势。
  • 成功部署并运行了 SenseVoiceSmall 的 WebUI 服务,无需复杂配置。
  • 实践了如何上传音频、选择语言、获取带情感和事件标签的识别结果。
  • 理解了模型的核心能力:多语言识别、情感检测、声音事件标注。
  • 掌握了关键代码逻辑,为后续定制开发打下基础。
  • 学会了一些实用技巧,如后处理、批量处理、性能优化。

8.2 下一步你可以做什么?

  • 尝试更多真实场景:用朋友聊天录音、公开演讲视频做测试。
  • 优化输出格式:把结果导出为 SRT 字幕、Markdown 笔记等。
  • 加入标点修复:虽然 SenseVoice 自带一定标点能力,但仍可进一步优化。
  • 探索微调可能:如果有特定领域数据(如医疗、法律),可以尝试微调模型。

语音 AI 正在从“听清”走向“听懂”。SenseVoiceSmall 让我们第一次如此轻松地触达这一能力。现在,轮到你去创造属于自己的智能语音应用了。


获取更多AI镜像

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 9:25:53

3步解锁B站缓存视频:告别m4s格式困扰的终极方案

3步解锁B站缓存视频&#xff1a;告别m4s格式困扰的终极方案 【免费下载链接】m4s-converter 将bilibili缓存的m4s转成mp4(读PC端缓存目录) 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经在B站缓存了珍贵的学习资料或精彩视频&#xff0c;却发现…

作者头像 李华
网站建设 2026/9/7 5:40:58

Gradio界面太方便!Paraformer让非技术人员也能用AI

Gradio界面太方便&#xff01;Paraformer让非技术人员也能用AI 1. 让语音转文字像点外卖一样简单 你有没有遇到过这种情况&#xff1a;录了一段会议录音&#xff0c;想整理成文字稿&#xff0c;结果手动打字打了半天&#xff0c;眼睛都快瞎了&#xff1f;或者手头有一小时的访…

作者头像 李华
网站建设 2026/9/9 0:28:55

终极广告拦截完整指南:uBlock Origin零基础配置方案

终极广告拦截完整指南&#xff1a;uBlock Origin零基础配置方案 【免费下载链接】uBlock uBlock Origin (uBO) 是一个针对 Chromium 和 Firefox 的高效、轻量级的[宽频内容阻止程序] 项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock 在现代互联网浏览中&#…

作者头像 李华
网站建设 2026/9/10 2:49:14

MGeo地址匹配踩坑记录:这些错误千万别犯

MGeo地址匹配踩坑记录&#xff1a;这些错误千万别犯 在中文地址数据处理的实际项目中&#xff0c;实体对齐是构建用户画像、优化物流路径和打通多源数据的关键环节。阿里云开源的 MGeo 地址相似度匹配模型&#xff0c;凭借其基于语义向量的深度理解能力&#xff0c;在“北京市…

作者头像 李华
网站建设 2026/9/9 2:08:14

Qwen3Guard-Gen-WEB Prometheus监控接入教程

Qwen3Guard-Gen-WEB Prometheus监控接入教程 1. 引言&#xff1a;为什么需要为Qwen3Guard-Gen-WEB接入监控&#xff1f; 你已经成功部署了 Qwen3Guard-Gen-WEB ——这是阿里开源的一款专注于内容安全审核的生成式AI模型&#xff0c;基于强大的Qwen3架构构建。它不仅能对输入文…

作者头像 李华
网站建设 2026/9/8 4:01:39

SQL Beautify终极指南:3步提升SQL代码可读性

SQL Beautify终极指南&#xff1a;3步提升SQL代码可读性 【免费下载链接】sql-beautify VS Code extension that beautifies SQL(HQL). 项目地址: https://gitcode.com/gh_mirrors/sq/sql-beautify 你是否曾经面对过杂乱无章的SQL代码&#xff0c;难以快速理解其逻辑结构…

作者头像 李华