必须调用百度TTS REST API并精确配置per/spd/pit/vol/emotion参数,结合实名认证、密钥获取、情感解析JSON输出、动态token鉴权及MP3格式适配,才能实现Dify中拟真语音输出。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中让AI对话输出带情感张力、语调起伏自然的拟真语音,必须绕过默认TTS节点的简化参数面板,直接调用百度TTS REST API并精确控制per(发音人)、spd/pit/vol(语速/音调/音量)及emotion(情感标签)字段,否则合成结果会是平直无变化的机械音。
获取百度AI平台合法凭证
打开浏览器访问百度智能云语音合成控制台 → 使用手机号完成注册 → 进入【实名认证】页,上传身份证正反面照片并提交(【未实名将无法开通TTS服务且所有请求返回错误码282001】)。
认证通过后,点击左侧【应用管理】→【创建应用】→ 应用名称填“Dify-Pro-TTS”,接口勾选【语音合成】→ 点击【立即创建】。
在新生成的应用详情页中,完整复制AppID、API Key、Secret Key三项值。这三组密钥后续将用于签名计算和token获取,缺一不可。
配置Dify工作流中的TTS调用节点
进入Dify控制台 → 新建Workflow应用 → 命名为“VoicePro-Emotion” → 拖入「用户输入」节点,字段名设为“text”,类型为段落,最大长度5000,必填。
拖入「LLM」节点 → 选择qwen2.5模型 → 在System提示词中写:你是一个语音情感解析器。请严格根据用户输入{{#1768335663610.text#}},判断其情绪倾向(anger/happy/sad/neutral),输出标准JSON:{"text":"","emotion":"neutral","speed":1.0,"pitch":0,"volume":5}。仅输出JSON,不加任何说明或额外字符。
开启「结构化输出」→ 粘贴对应JSON Schema → 保存节点。
拖入「HTTP请求」节点 → 方法选POST → URL填https://aip.baidubce.com/rest/2.0/tts/v1 → Header添加Content-Type: application/json → Body选JSON模板,内容如下:
{"text":"{{#1768335663610.text#}}","lang":"zh_CN","cuid":"dify-pro-2026","ctp":1,"per":{{#1768335663610.emotion == "happy" ? 110 : #1768335663610.emotion == "anger" ? 106 : #1768335663610.emotion == "sad" ? 112 : 110}},"spd":{{#1768335663610.speed * 10 | int}},"pit":{{#1768335663610.pitch + 5 | int}},"vol":{{#1768335663610.volume}}}
注意:per值映射关系为110=度小美(欢快女声)、106=度小宇(沉稳男声)、112=度逍遥(低沉男声),不同情绪需匹配对应发音人,否则拟真效果失效。
构造并注入access_token鉴权头
方法一:使用代码节点动态获取token(推荐)
拖入「代码」节点 → 语言选Python → 输入以下脚本:
import requests
url = "https://aip.baidubce.com/oauth/2.0/token"
params = {
"grant_type": "client_credentials",
"client_id": "YOUR_API_KEY",
"client_secret": "YOUR_SECRET_KEY"
}
response = requests.post(url, params=params)
token = response.json().get("access_token")
return {"access_token": token}
将YOUR_API_KEY和YOUR_SECRET_KEY替换为你在上一步复制的真实密钥值。
方法二:手动拼接Authorization头(临时调试用)
在HTTP请求节点的Header中新增一行:
Authorization: Bearer {{#code-node.access_token#}}
这一步必须完成,否则百度API将拒绝所有TTS请求并返回401错误。
绑定音频输出与格式适配
在HTTP请求节点之后,拖入「变量赋值」节点 → 将响应体(response.body)赋给变量audio_data → 类型选「二进制」。
再拖入「文件下载」节点 → 文件名设为“output.mp3” → 内容来源选“audio_data” → MIME类型填audio/mpeg。
关键设置:百度TTS默认返回MP3格式音频流,但若未在HTTP请求Body中显式指定output_format字段,部分旧版SDK可能回退为WAV,导致前端无法自动播放。因此必须确保Body中包含"format":"mp3"或依赖百度默认行为——当前API v1已强制以MP3返回,无需额外声明。
最后点击「发布」,在测试面板中输入含情绪色彩的文本如“太棒了!我终于完成了!” → 观察是否返回可播放的MP3音频文件。


















