在 Web 应用程序中使用 Dialogflow 和 Google Cloud Speech API 构建我自己的对话语音 AI
Building my own conversational voice AI with Dialogflow & Google Cloud Speech API in web apps
我想在我的网络应用程序中集成一个 HTML5 麦克风,将音频流传输到 (Node.js) 后端,使用 Dialogflow API 进行音频流传输,使用 google 语音 API 和 return 音频(文本到语音)到客户端以在浏览器中播放。
我找到了一个 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 女士!)她非常准确地解释了这个项目。
首先,我尝试了 Boonstra 女士使用 App Engine Flex 部署的演示 Web 应用程序。
我访问了它 (https://selfservicedesk.appspot.com/),它运行良好。
接下来,我克隆了这个项目并尝试在本地部署。
我关注了这个README.md。 (我跳过了使用 AppEngine 部署的步骤。)
https://github.com/dialogflow/selfservicekiosk-audio-streaming/blob/master/README.md
然而,它没有用。网络应用程序没有给我任何回应。
我为 Linux、Debian 10.3 和 Google Chrome 浏览器使用 Windows 10、Windows 子系统。
这是Chrome的控制台。
这是终端。 (我没有收到任何错误消息,这对我来说很神秘。)
你能给我什么建议吗?
提前谢谢你。
感谢您的美言!
嗯 - 我不得不说我还没有在我的 Windows 机器上测试(最终解决方案)。录音机似乎工作正常,问题是 socket.io 服务器没有连接到您的客户端。 - 如果一切正常,您的服务器日志应该在启动后显示:
Running server on port 8080
Client connected [id=vBaT3NTow2VsyUB4AAAA]
您能看看示例文件夹中的简单示例是否适合您吗?
这可能是相关的? .
如果更改防火墙设置有效,请告诉我。 - 然后我会在 Github 自述文件中更新它。
干杯,
李
示例 3 和 SelfServiceKiosk 应用程序,使用相同的 TTS 代码。这可能就是两者都失败的原因。
我已经在我的 Windows 10 机器上用 Chrome 测试了它。我开始工作了,但我意识到,从一个新的 Github 克隆中,env.txt 已经注释掉了某些使用过的变量。 (当同一行上有评论时,Windows 处理 .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 返回。浏览器收到音频后,您应该会在开发人员工具中看到:
(指数):58
(3) [{...}, 空, 空]
0: {alternativeQueryResults: Array(1)...
如果您确实看到了那个对象,但是 Chrome 不知何故不播放音频;你能再检查一下吗https://myaccount.google.com/activitycontrols
应启用网络应用程序 Activity & Voice/Audio。
- 我不确定防火墙是否阻止了 things/ports。当从 http://localhost:8080(或其他指定端口)运行ning 时,该应用程序应该运行良好。当从另一个 URL 或云 运行ning 时,它只能从 HTTPS 运行。
希望对您有所帮助!
我想在我的网络应用程序中集成一个 HTML5 麦克风,将音频流传输到 (Node.js) 后端,使用 Dialogflow API 进行音频流传输,使用 google 语音 API 和 return 音频(文本到语音)到客户端以在浏览器中播放。
我找到了一个 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 女士!)她非常准确地解释了这个项目。
首先,我尝试了 Boonstra 女士使用 App Engine Flex 部署的演示 Web 应用程序。 我访问了它 (https://selfservicedesk.appspot.com/),它运行良好。
接下来,我克隆了这个项目并尝试在本地部署。 我关注了这个README.md。 (我跳过了使用 AppEngine 部署的步骤。) https://github.com/dialogflow/selfservicekiosk-audio-streaming/blob/master/README.md
然而,它没有用。网络应用程序没有给我任何回应。 我为 Linux、Debian 10.3 和 Google Chrome 浏览器使用 Windows 10、Windows 子系统。
这是Chrome的控制台。
这是终端。 (我没有收到任何错误消息,这对我来说很神秘。)
你能给我什么建议吗? 提前谢谢你。
感谢您的美言!
嗯 - 我不得不说我还没有在我的 Windows 机器上测试(最终解决方案)。录音机似乎工作正常,问题是 socket.io 服务器没有连接到您的客户端。 - 如果一切正常,您的服务器日志应该在启动后显示:
Running server on port 8080
Client connected [id=vBaT3NTow2VsyUB4AAAA]
您能看看示例文件夹中的简单示例是否适合您吗?
这可能是相关的?
如果更改防火墙设置有效,请告诉我。 - 然后我会在 Github 自述文件中更新它。
干杯, 李
示例 3 和 SelfServiceKiosk 应用程序,使用相同的 TTS 代码。这可能就是两者都失败的原因。
我已经在我的 Windows 10 机器上用 Chrome 测试了它。我开始工作了,但我意识到,从一个新的 Github 克隆中,env.txt 已经注释掉了某些使用过的变量。 (当同一行上有评论时,Windows 处理 .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 返回。浏览器收到音频后,您应该会在开发人员工具中看到:
(指数):58 (3) [{...}, 空, 空] 0: {alternativeQueryResults: Array(1)...
如果您确实看到了那个对象,但是 Chrome 不知何故不播放音频;你能再检查一下吗https://myaccount.google.com/activitycontrols 应启用网络应用程序 Activity & Voice/Audio。
- 我不确定防火墙是否阻止了 things/ports。当从 http://localhost:8080(或其他指定端口)运行ning 时,该应用程序应该运行良好。当从另一个 URL 或云 运行ning 时,它只能从 HTTPS 运行。
希望对您有所帮助!