恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
SlideBot AI 语音转写实现解析:科大讯飞 ASR API 集成与说话人角色分离完整指南
首页
资讯中心
/
SlideBot AI 语音转写实现解析:科大讯飞 ASR API 集成与说话人角色分离完整指南
SlideBot AI 语音转写实现解析:科大讯飞 ASR API 集成与说话人角色分离完整指南
发布时间:2026/10/14 16:34:10
【免费下载链接】SlideBot-AI SlideBot AI - AI-Powered Presentation Generator项目地址https://gitcode.com/gh_mirrors/sl/SlideBot-AI点击查看免费下载SlideBot AI 是一款 AI 演示文稿生成开源项目其亮点功能是语音转写上传一段会议录音系统会调用科大讯飞 ASR语音识别API 把音频转成文字并自动完成说话人角色分离再把转写内容整理成 PPT 大纲。本文从接口流程、API 签名、角色分离解析到下游 PPT 生成完整拆解这一功能新手也能轻松看懂。为什么会议录音转写值得集成一场 1 小时的会议整理纪要往往要花 2~3 小时。语音转写ASRAutomatic Speech Recognition能解决这个问题但对演示文稿场景还有两个特殊需求长音频支持会议录音动辄几十分钟实时转写流式方案体验割裂非实时转写整段上传、服务端异步处理更合适说话人角色分离会议是多人对话谁说了什么比说了什么更重要角色分离能让 AI 准确区分主讲人、提问者与记录者SlideBot AI 选择了科大讯飞非实时语音转写 API天然支持以上两点。相关配置入口在 modules/config.py两个环境变量即可启用IFLYTEK_APP_ID讯飞开放平台的 AppIDIFLYTEK_API_SECRET讯飞开放平台的 APIKey⚠️ 这是可选功能——不配置这两个密钥PPT 生成功能完全不受影响只是无法使用录音转写。完整流程四步把会议录音变成 PPT打开工作台后输入框上方就是「录音转写」区域frontend/src/App.js整个操作只需四步选择音频文件点击「选择文件」支持任意常见音频格式audio/*设置说话人数下拉框可选「自动识别」或明确指定 1~20 人对应代码中的 SPEAKER_OPTIONS点击「开始转写」前端将文件提交到后端 /api/audio/upload 接口期间按钮显示「⏳ 转写中...」查看转写结果完成后输入框上方会展示转写文本预览前 300 字并打上「✓ 转写完成」标签随后即可直接点击生成 PPT前端上传逻辑非常简洁见 App.js 的 uploadAudioformData.append(num_speaker, numSpeaker); // 说话人数可选 fetch(${API_BASE_URL}/audio/upload, { method: POST, body: formData });核心模块拆解modules/asr.py整个讯飞集成封装在 modules/asr.py 中分为「签名 → 上传 → 轮询 → 解析」四个环节。第一步生成 signa 请求签名讯飞 API 要求每个请求携带signa签名来校验身份。XfyunASR 类 在初始化时按以下链路生成MD5(AppID 时间戳)→ 用 APIKey 做HMAC-SHA1→Base64编码时间戳ts和签名signa会在后续所有请求中复用保证请求身份一致。第二步上传音频并开启角色分离upload 方法 以 POST 方式把整个音频文件提交到讯飞服务器关键参数有参数说明roleType: 1开启角色分离这是说话人区分的关键开关roleNum指定说话人数来自前端下拉框不指定则由讯飞自动判断pd: finance领域参数当前设为金融领域可让转写更懂专业词汇fileSize/fileName/duration音频文件基本信息上传成功后服务端返回一个orderId订单号表示转写任务已入队。第三步轮询等待转写结果长音频转写需要时间所以 get_result 方法 采用轮询策略每 5 秒向getResult接口查询一次orderId对应的任务状态status 3表示处理中继续等待status 4表示完成取出orderResult转写结果请求携带resultType: transfer,predict同时获取转写文本与标点预测结果说话人角色分离是怎么实现的这是本文最核心的部分。讯飞返回的orderResult是一段嵌套很深的 JSONparse_xfyun_result 函数 负责层层剥开它优先取lattice字段兜底lattice2其中每个元素是一段时间的识别结果从json_1best.st.rl读取说话人编号role label沿st.rt → ws → cw → w的路径把每个词拼成完整句子用st.bgbegin 时间戳记录该句的起始时间解析完成后所有句子按时间戳排序输出成结构化的对话列表{speaker: 说话人1, text: 大家好今天开始Q3业务复盘}, {speaker: 说话人2, text: 先同步一组销售数据...}最后由 format_dialogue_as_text 格式化成人类可读文本存入会话状态说话人1: 大家好今天开始Q3业务复盘 说话人2: 先同步一组销售数据 建议如果你明确知道会议有几位发言人在前端直接指定说话人数角色分离的准确率会更高不确定时选择「自动识别」也没问题。转写内容如何驱动 PPT 生成转写文本只是中间产物真正的价值在于它如何与 PPT 生成串联。在 server.py 的大纲生成接口中系统会把三类输入合并成完整提示词【用户输入的想法】 【会议录音转写内容】 【支持性文档内容如有上传参考文档】随后交给 Gemini 大模型生成结构化大纲。也就是说一段 1 小时的会议录音最终会被 AI 理解、提炼、重组为演示文稿的每一页内容。生成过程实时展示每一页的进度支持逐页预览和对话式修改。最终产出的 PPT 页面示例小结这套方案的设计亮点可选集成ASR 相关代码独立在 modules/asr.py 一个模块中不配置讯飞密钥即可完整使用 PPT 生成角色分离开箱即用一个roleType: 1参数 结果解析排序就实现了「谁说了什么」的对话还原与生成流程深度打通转写文本自动并入大纲提示词录音 → 转写 → 角色分离 → PPT 一气呵成异步轮询架构上传与查询分离天然适配长音频场景前端只需等待轮询结束如果你想在自己的项目里实现类似的「录音变文稿」功能这套「签名 → 上传 → 轮询 → 解析」的完整链路可以直接参考核心文件清单如下文件职责modules/asr.py讯飞 API 封装与结果解析server.py录音上传与转写接口modules/config.py讯飞密钥与音频目录配置frontend/src/App.js录音转写交互界面赞分享【免费下载链接】SlideBot-AI SlideBot AI - AI-Powered Presentation Generator项目地址https://gitcode.com/gh_mirrors/sl/SlideBot-AI点击查看免费下载相关推荐语音转文字利器SGLang-OmniQwen3-ASR多语言识别与说话人分离完整上手指南语音转文字利器SGLang OmniQwen3 ASR多语言识别与说话人分离完整上手指南 SGLang Omni 是一款面向音频与多模态模型的高性能推理服务框人工智能大模型模型推理服务多模态语音音频后端FlutterBoost与语音识别集成完整指南科大讯飞vs Google Speech API对比FlutterBoost与语音识别集成完整指南科大讯飞vs Google Speech API对比 FlutterBoost是一个强大的Flutter混合开发FunASR Qwen3-ASR 离线长音频 vLLM 转写与 MOSS 说话人标注实践指南FunASR Qwen3 ASR 离线长音频 vLLM 转写与 MOSS 说话人标注实践指南 导读 本文围绕 FunASR 仓库 examples/indust语音音频人工智能大模型模型推理服务本地部署创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考