> 技术文档 > Dify 从入门到精通(第 27/100 篇):Dify 的语音交互功能

Dify 从入门到精通(第 27/100 篇):Dify 的语音交互功能


Dify 从入门到精通(第 27/100 篇):Dify 的语音交互功能

Dify 入门到精通系列文章目录

  • 第一篇《Dify 究竟是什么?真能开启低代码 AI 应用开发的未来?》介绍了 Dify 的定位与优势
  • 第二篇《Dify 的核心组件:从节点到 RAG 管道》深入剖析了 Dify 的功能模块
  • 第三篇《Dify vs 其他 AI 平台:LangChain、Flowise、CrewAI》对比了 Dify 与其他平台的优劣
  • 第四篇《快速上手 Dify 云端:5 分钟创建第一个应用》带您实践了云端部署的问答机器人
  • 第五篇《Dify 本地部署入门:Docker Compose 指南》讲解了本地部署
  • 第六篇《配置你的第一个 LLM:OpenAI、Claude 和 Ollama》介绍了 LLM 配置
  • 更多文章:Dify 博客系列:从入门到精通(100 篇)

在 Dify 博客系列:从入门到精通(100 篇) 的前二十六篇文章中,我们从基础到知识图谱,全面掌握了 Dify 的开发能力。本文是系列的第二十七篇,聚焦 Dify 的语音交互功能,深入讲解如何集成语音输入和输出,构建语音客服机器人。我们将通过实践使用 WebRTC 和 Google TTS API 实现语音交互。本文侧重知识重点,确保您在 40-50 分钟内掌握语音交互的开发技能。本文适合前端开发者、AI 工程师和希望提升交互体验的从业者。完成本文后,您将为后续文章(如第 28 篇《Dify 从入门到精通(第 28/100 篇):Dify 的多租户架构》)做好准备。跟随 逻极,解锁 Dify 的语音交互之旅!

什么是 Dify 的语音交互功能?

Dify 的语音交互功能通过语音转文本(STT)和文本转语音(TTS)工具,实现语音输入和输出的无缝集成。结合 WebRTC 和外部 API(如 Google TTS),支持实时语音对话。

核心功能

  • 语音输入:通过 WebRTC 或 Whisper 转换语音为文本。
  • 语音输出:使用 TTS 生成语音回答。
  • 多模态支持:结合文本和语音(参考第十五篇)。

适用场景

  • 语音客服:支持电话或 Web 语音交互。
  • 教育助手:语音授课或答疑。
  • 智能设备:集成到 IoT 设备。

前置准备

在开始之前,您需要:

  1. Dify 环境
    • 云端:登录 Dify 官网。
    • 本地:完成第五篇的部署。
  2. LLM 配置
    • GPT-4o(参考第六篇)。
  3. 工具集
    • Google Cloud TTS API 密钥。
    • WebRTC 环境(浏览器支持)。
  4. 工具
    • JavaScript:实现 WebRTC。
    • Python:处理 STT/TTS。
    • Postman:测试 API。
  5. 时间预估:40-50 分钟。

重点:获取 Google TTS 免费密钥;确保浏览器支持 WebRTC。

步骤 1:配置语音输入

  1. 创建 STT 工具

    • 点击“Tools” > “Create Custom Tool” > “Code”。
    • 命名:“Speech to Text”。
    • 代码:
      import requestsdef main(audio_data): response = requests.post( \"https://speech.googleapis.com/v1/speech:recognize\", json={ \"config\": {\"encoding\": \"LINEAR16\", \"sampleRateHertz\": 16000, \"languageCode\": \"zh-CN\"}, \"audio\": {\"content\": audio_data} }, headers={\"Authorization\": \"Bearer \"} ) return response.json().get(\"results\", [{}])[0].get(\"alternatives\", [{}])[0].get(\"transcript\", \"\")
  2. WebRTC 配置

    • 在 WebApp 添加:
      <button onclick=\"startRecording()\">开始录音</button><script> async function startRecording() { const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); const recorder = new MediaRecorder(stream); recorder.ondataavailable = async (e) => { const audio = await e.data.arrayBuffer(); const base64 = btoa(String.fromCharCode(...new Uint8Array(audio))); fetch(\'/api/stt\', { method: \'POST\', body: JSON.stringify({ audio: base64 }) }); }; recorder.start(); }</script>

重点:测试 STT 10 次,识别率 > 95%。

步骤 2:配置语音输出

  1. 创建 TTS 工具
    • 命名:“Text to Speech”。
    • 代码:
      import requestsdef main(text): response = requests.post( \"https://texttospeech.googleapis.com/v1/text:synthesize\", json={ \"input\": {\"text\": text}, \"voice\": {\"languageCode\": \"zh-CN\", \"name\": \"cmn-CN-Wavenet-A\"}, \"audioConfig\": {\"audioEncoding\": \"MP3\"} }, headers={\"Authorization\": \"Bearer \"} ) return response.json().get(\"audioContent\", \"\")

重点:测试 TTS 输出,语音清晰度 > 90%。

步骤 3:配置 Chatflow

  1. 创建 Chatflow

    • 命名:“Voice Bot”。
    • 模板:“Knowledge Q&A”。
  2. 工作流配置

    • Start 节点
      audio: string (base64)
    • STT 节点
      Input: {{start.audio}}Output: question
    • LLM 节点
      • Prompt:
        根据 {{stt.question}},以友好语气回答,字数控制在 100 字以内。格式:- 回答:[回答内容]- 来源:Knowledge Base
    • TTS 节点
      Input: {{llm.answer_text}}Output: audio_output

重点:测试语音输入到输出的完整流程。

步骤 4:测试与调试

  1. 预览测试

    • 输入:语音“退货政策是什么?”
    • 预期输出:语音“30 天内凭收据可退货”。
  2. API 测试

    • 使用 curl:
      curl -X POST https://api.dify.ai/v1/chat-messages \\-H \"Authorization: Bearer sk-xxx\" \\-d \'{ \"audio\": \"\", \"app_id\": \"voice-bot\", \"conversation_id\": \"test123\"}\'
  3. 调试

    • 语音识别失败:检查音频格式(LINEAR16)。
    • 输出无声:验证 TTS API 密钥。

重点:测试 10 组语音,识别率 > 95%,响应 < 2 秒。

步骤 5:发布与集成

  1. 发布 WebApp

    • 点击“Publish”,测试语音交互。
  2. API 集成

    • JavaScript:
      async function voiceQuery(audio) { const response = await fetch(\'https://api.dify.ai/v1/chat-messages\', { method: \'POST\', headers: { \'Authorization\': \'Bearer sk-xxx\', \'Content-Type\': \'application/json\' }, body: JSON.stringify({ audio, app_id: \'voice-bot\', conversation_id: \'test123\' }) }); return response.json();}

重点:验证 WebApp 语音交互;测试 API 响应。

实践案例:语音客服机器人

背景:电商需语音客服机器人。

  • 环境:Dify 云端,GPT-4o,Google TTS。
  • 配置:Chatflow,WebRTC,TTS 工具。
  • 测试:95% 识别率,响应 < 2 秒。
  • 成果:40 分钟完成,满意度提升 40%。

结论

通过本文,您掌握了 Dify 的语音交互功能,学会了集成 STT 和 TTS。在 Dify 博客系列:从入门到精通(100 篇) 的下一篇文章——第 28 篇《Dify 从入门到精通(第 28/100 篇):Dify 的多租户架构》中,我们将探讨多租户架构。继续跟随 逻极,解锁 Dify 的完整学习路径!