Dify本地部署Whisper-large-v3实现离线语音转写需满足:①Dify≥1.7.0且具备asr:use与model:deploy权限;②至少8GB显存GPU(CPU推理极慢);③通过vLLM或ONNX+Flask部署服务并配置HTTP模型;④工作流中启用Audio-to-Text节点,勾选word_timestamps=true以保留时间戳,并确保输入为16kHz单声道WAV。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在Dify中让会议录音、客服通话或现场访谈音频自动转成带时间戳的文本,不走云端API、不传敏感数据、识别结果直接进工作流节点——本地部署Whisper-large-v3是当前最稳妥的路径,但必须严格匹配Dify 1.7.0+版本与GPU显存条件。
确认Dify版本与权限前提
进入Dify控制台右上角「关于」页面,核对当前版本号是否≥1.7.0;低于该版本将无法看到Audio-to-Text节点入口,所有后续配置均无效。
在「团队设置→角色管理」中检查当前账号是否被赋予asr:use和model:deploy权限。缺少任一权限会导致模型列表为空,且后台无报错提示。
【必须使用至少8GB显存GPU(如RTX 3090或A10)】——若强行用CPU推理,需在模型配置中显式指定device=cpu,但识别速度将降至实时率0.3x以下,1分钟音频可能耗时3分钟以上。
部署Whisper-large-v3本地服务
方法一:通过ModelScope下载并vLLM托管(推荐)
执行命令下载模型:modelscope download --model AI-ModelScope/whisper-large-v3 --local_dir ./whisper-large-v3
启动vLLM服务监听端口8003:CUDA_VISIBLE_DEVICES=0 vllm serve /models/whisper-large-v3 --served-model-name whisper-large-v3 --trust-remote-code --dtype bfloat16 --swap-space 16 --port 8003 --gpu-memory-utilization 0.4 --api-key sk-123456 --task transcription
验证服务是否就绪:访问http://localhost:8003/health返回{"status":"healthy"}即成功。
方法二:用Flask轻量封装ONNX Runtime(适合无CUDA环境)
将whisper-large-v3-int8.onnx文件放入/opt/dify/models/whisper/目录;编写Flask脚本监听/whisper端点,接收base64编码WAV,返回JSON格式文本;启动后设HTTP超时为30秒——因为1分钟语音在CPU上推理可能耗时25秒以上。
在Dify中添加并启用本地ASR模型
第一步:进入「设置→模型供应商→添加模型」
第二步:填写字段如下——模型名称填whisper-local-v3,模型类型选asr,提供商选custom,协议选HTTP,URL填http://host.docker.internal:8003/v1/audio/transcriptions(Docker内部调用请勿写localhost)
第三步:在「请求头」中添加Authorization: Bearer sk-123456;「请求体」选择multipart/form-data;关键参数勾选word_timestamps=true——不勾选则输出纯文本,丢失所有时间戳信息,无法做分段对齐或字幕生成。
第四步:点击保存,等待状态变为「已启用」。此时模型会出现在「Audio-to-Text」节点的下拉菜单中。
在工作流中接入语音识别节点
新建Workflow应用,拖入「用户输入」节点,字段类型设为「文件」,支持格式勾选.wav和.mp3(注意:Whisper-large-v3仅原生支持16kHz单声道WAV,MP3需在前置节点用FFmpeg转码)。
拖入「Audio-to-Text」节点,模型选择刚添加的whisper-local-v3,输入绑定为上一节点的文件变量,输出字段名设为transcript。
这一步操作起来很简单,直接把音频文件拖进调试面板就能触发识别,无需额外配置。但要注意:若上传的是立体声WAV,识别结果会出现断句混乱甚至静音段误判——必须确保音频为16kHz单声道。
拖入「LLM」节点,System提示词中加入:“你是一个语音内容校对器。请基于{{#transcript#}}中的原始识别文本,修正明显错别字、补全口语省略词、统一数字格式(如‘三万五’→‘35000’),仅输出修正后文本,不加解释。”


















