ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Dify 语音助手完整指南:语音转文字与文字转语音一步到位

Dify 语音助手完整指南:语音转文字与文字转语音一步到位 Dify 语音助手完整指南语音转文字与文字转语音一步到位【免费下载链接】difyBuild Agentic workflows, RAG pipelines, with rich AI model and tool support on one collaborative workspace. Deploy on cloud, VPC, or self-hosted, so teams move from prototype to production without rebuilding the stack.项目地址: https://gitcode.com/GitHub_Trending/di/dify你做了一个 Dify 聊天应用用户只能打字想让机器人开口说话又不想自己再搭一套 ASR/TTS。Dify 内置语音转文字Speech-to-TextSTT与文字转语音Text-to-SpeechTTS两个接口配好模型供应商、打开应用开关两条 curl 就能让 Dify 语音助手跑通。能力全景一张表看懂 Dify 语音交互能做什么这节回答“开箱能做什么、边界在哪”。能力接口输入你拿到什么语音转文字POST /v1/audio-to-text音频文件multipart 的file字段JSON{text: 识别出的文字}文字转语音POST /v1/text-to-audioJSONtext必填voice、message_id可选二进制音频流Content-Type标明格式mp3 / wav / m4a / webm 等重放历史语音同上传message_id不传text一条历史消息的 ID该条回答对应的音频页面直接播放分享页内置音频按钮message_idvoice一键播放/暂停无需写前端边界先说清STT 只收audio/mp3 / mpga / m4a / x-m4a / wav / amr这几类单文件不超过 30MB两个开关都只作用于“已发布”的应用。Dify 应用编辑器右侧的 Features 面板就是开关所在下图中 Speech to Text 与 Text to Speech 两项分别对应这两个能力主线实战从一段录音到一条语音回复这节按时间线把“录音 → 识别 → 大模型 → 语音回复”完整走一遍。1. 先配两个开关模型就位你做什么在「设置 → 模型供应商」里分别给 Speech to Text 和 Text to Speech 选供应商例如 OpenAI 的 Whisper 与 TTS-1并填好 API Key再回到应用编辑器的 Features 面板把两个开关打开发布应用。系统内部发生了什么请求进来时后端通过ModelManager取租户下默认的SPEECH2TEXT/TTS模型逻辑在api/services/audio_service.py。没配模型的请求不会走到供应商而是直接报 400。你拿到什么两个语音接口变为可用且开关状态对后续所有请求生效。2. 上传录音拿到识别文本curl -X POST https://{your-domain}/v1/audio-to-text \ -H Authorization: Bearer {app_api_key} \ -F filerecording.mp3 \ -F uservoice-user-001系统内部发生了什么先校验 mimetype 与 30MB 上限再把字节流交给 STT 模型的invoke_speech2text。你拿到什么{text: 帮我查一下明早的航班}可直接作为下一轮对话的输入。3. 交给大模型普通一步识别出的文本走应用常规的 chat / completion 接口即可与文本对话完全一致不需要任何语音相关的额外配置。4. 生成语音回复curl -X POST https://{your-domain}/v1/text-to-audio \ -H Authorization: Bearer {app_api_key} \ -H Content-Type: application/json \ -d {text: 明早 9:20 有一班飞往北京的航班。, user: voice-user-001} \ -o reply.mp3系统内部发生了什么读取应用的 TTS 配置请求里没带voice时用供应商返回的默认音色响应的Content-Type按供应商实际返回的字节确定保存文件时以此选后缀。你拿到什么一个可直接播放的音频文件。想重放某条历史回答把text换成message_id再发一次即可。配置速查Dify 语音功能最省事的配置清单这节把所有要配的东西集中在一张表里照着填就行。配什么在哪配默认值注意事项STT 模型设置 → 模型供应商 → Speech to Text未选择没配时 STT 返回provider_not_support_speech_to_textTTS 模型设置 → 模型供应商 → Text to Speech未选择输出格式随供应商mp3/wav/m4a 等按Content-Type定后缀STT 开关应用编辑器 Features 面板 → Speech to Text关打开后记得发布未生效会报speech_to_text_disabledTTS 开关与默认音色Features 面板 → Text to Speech关请求里的voice字段优先于默认音色API Key应用 → API Keys—两个语音接口复用应用的同一个 key文件限制内置规则≤30MBmp3/mpga/m4a/x-m4a/wav/amr—超限 413类型不符 415改文件比改配置快Dify 支持的模型供应商在这里选择语音转文字与文字转语音的 STT/TTS 提供商都在其中调优与避坑Dify 语音报错一次查清这节把“性能”与“错误处理”合并成一张按症状查找的表先对症状再对原因。症状常见原因处理办法413audio_too_large文件超过 30MB上传前裁剪或压缩录音415unsupported_audio_typemimetype 不在白名单常见于视频容器伪装音频转成 mp3 / wav / m4a 再传400speech_to_text_disabled应用 STT 开关未开或改完没发布检查 Features 面板并发布应用400provider_not_initialize供应商 API Key 未填或失效回模型供应商重新核对凭证400provider_quota_exceeded供应商配额用尽更换供应商或补充额度识别不准环境噪声大、采样率低、中英混说安静环境重录换多语言能力强的 STT 供应商长回复 TTS 首字节慢整段文本一次性合成返回把回复拆成短句分段合成或整段用message_id重放前端重试逻辑写不进去接口是同步一次性返回失败即整体失败客户端按 2~3 次指数退避重试重试前不改变文件内容常见疑问语音转文字和文字转语音必须用同一个供应商吗不必须。STT 与 TTS 各读各的默认模型可以分别配置——识别用 Whisper合成换其他供应商互不影响。历史回答怎么变成语音把该消息的 ID 作为message_id传给text-to-audio。消息存在且回答非空时返回对应音频ID 非法或消息不存在时返回空前端按“无音频”处理即可。分享页要自己写播放器吗不用。Dify 的 Web 应用自带音频按钮源码见web/app/components/base/audio-btn/TTS 开启后回答旁自动出现播放键支持播放、暂停与加载态。支持实时语音对话吗没有内置。两个接口都是单次往返STT 收整段文件TTS 返回完整音频。想做连续对话可以把用户语音切成短句逐段合成用“短句 顺序播放”近似实时真双向流式音频需要自己在 WebSocket 上对接供应商。下一步先跑通链路再换自己的场景选任一支持 STT/TTS 的供应商打开两个开关并发布用上面两条 curl 各跑一次确认能拿到text和音频文件。把text换成你应用里 LLM 的真实回复试两三种voice选一个和你场景匹配的音色。遇到报错直接按“调优与避坑”表对症状想看判定细节读api/services/audio_service.py与api/controllers/service_api/app/audio.py两个文件就是全部校验与调用逻辑。【免费下载链接】difyBuild Agentic workflows, RAG pipelines, with rich AI model and tool support on one collaborative workspace. Deploy on cloud, VPC, or self-hosted, so teams move from prototype to production without rebuilding the stack.项目地址: https://gitcode.com/GitHub_Trending/di/dify创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表