繁体   English   中英

使用 Dialogflow 和 Google Cloud Speech 在 web 应用程序中构建我自己的对话语音 AI API

[英]Building my own conversational voice AI with Dialogflow & Google Cloud Speech API in web apps

我想在我的 web 应用程序中集成一个 HTML5 麦克风,stream 音频流到(Node.js)后端,使用 Dialogflow API 进行音频流,使用谷歌语音 API,并将音频返回(文本到语音)一个客户端在浏览器中播放这个。

我找到了一个 github 项目,这正是我想要做的。 https://github.com/dialogflow/selfservicekiosk-audio-streaming

这是 Lee Boonstra 女士的 Medium 博客。 ( https://medium.com/google-cloud/building-your-own-conversational-voice-ai-with-dialogflow-speech-to-text-in-web-apps-part-i-b92770bd8b47 ) 她开发了这个项目。 (非常感谢您,布恩斯特拉女士。)她非常准确地解释了这个项目。

首先,我尝试了 Boonstra 女士使用 App Engine Flex 部署的演示应用程序 web。 我访问了它 ( https://selfservicedesk.appspot.com/ ) 并且它运行良好。

接下来,我克隆了这个项目并尝试在本地部署。 我遵循了这个 README.md。 (我跳过了使用 AppEngine 部署的步骤。) https://github.com/dialogflow/selfservicekiosk-audio-streaming/blob/master/README.md

但是,它没有用。 web 应用程序没有给我任何回应。 我将 Windows 10、Windows 子系统用于 Linux、Debian 10.3 和 Google Chrome 浏览器。

这是 Chrome 的控制台。

kiosk_chrome

这是终端。 (我没有收到任何错误消息,这对我来说很神秘。)

kiosk_terminal

你能给我什么建议吗? 先感谢您。

示例 3 和 SelfServiceKiosk 应用程序使用相同的 TTS 代码。 这可能就是为什么两者都失败了。

我已经在我的 Windows 10 机器上使用 Chrome 对其进行了测试。 我开始工作了,但我意识到,从一个新的 Github 克隆中,env.txt 已经注释掉了某些使用过的变量。 (和 Windows handles.env 文件不同,当同一行有注释时。)我已经更新了 Github 中的文件,但你要确保你的 .env 文件看起来像这样:

PROJECT_ID=selfservicedesk
LANGUAGE_CODE=en-US 
ENCODING=AUDIO_ENCODING_LINEAR_16
SAMPLE_RATE_HERZ=16000
SINGLE_UTTERANCE=false
BASE_LANG=nl-NL
SSML_GENDER=NEUTRAL 
SPEECH_ENCODING=LINEAR16 

可能是您已经修复了该问题,因为您没有收到与我收到的相同的错误消息,并且 Dialogflow 响应确实包含一个 AudioBuffer,它只是不在浏览器中播放。 那么问题可能是由于您的系统设置造成的。

如果是这样的话,我可以给你更多的指导:

  • 当您运行 SelfServiceKiosk 并录制您的声音时; 你应该看到写出来的话语。 - 如果可行,则表示 Speech To Text API 运行良好。 (服务帐户的设置也很顺利。)

  • 这也意味着您必须接受浏览器弹出窗口以允许使用麦克风(至少一次)。

  • 当 Dialogflow 检测到意图(意图或回退)时,它将创建一个 AudioBuffer。 (就像您已经拥有的那样)这将由 Text to Speech API 返回。浏览器收到音频后,您应该在开发人员工具中看到:

    (index):58 (3) [{...}, null, null] 0: {alternativeQueryResults: Array(1)...

如果您确实看到了 object,但 Chrome 以某种方式无法播放音频; 你能仔细检查https://myaccount.google.com/activitycontrols Web 应启用应用程序活动和语音/音频吗?

  • 我不确定防火墙是否阻止了某些东西/端口。 http://localhost:8080 (或其他指定端口)运行时,该应用程序应该运行良好。 从另一个URL或云端运行时,只能从HTTPS运行。

希望这可以帮助!

谢谢你的美言!

嗯 - 我不得不说我还没有在我的 Windows 机器上测试(最终解决方案)。 录音机似乎工作正常,问题是 socket.io 服务器没有连接到您的客户端。 - 如果一切正常,您的服务器日志应该在启动后显示:

Running server on port 8080
Client connected [id=vBaT3NTow2VsyUB4AAAA]

您能看看示例文件夹中的简单示例是否适合您吗?

这可能是相关的? Socket.io local.network 未连接

让我知道更改防火墙设置是否有效。 - 然后我会在Github Readme中更新它。

干杯,李

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM