用Dialogflow &谷歌云语音API在Web应用中构建我自己的对话式语音AI。

问题描述 投票:0回答:1

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

我找到了一个github项目,正是我想做的。https:/github.comdialogflowselfservicekiosk-audio-streaming。

这是李博恩斯特拉女士的Medium博客。(https:/medium.comgoogle-cloudbuilding-your-own-conversational-voice-ai-with-dialogflow-speech-to-text-in-web-apps-part-i-b92770bd8b47。她开发了这个项目。(非常感谢Boonstra女士!)她对这个项目的解释非常精确。

首先,我尝试了Boonstra女士用App Engine Flex部署的Demo Web应用,我访问了它(https:/selfservicedesk.appspot.com。),它工作得很完美。

接下来,我克隆了这个项目,并尝试在本地部署。我按照这个README.md. (我跳过了用AppEngine部署的步骤。)https:/github.comdialogflowselfservicekiosk-audio-streamingblobmasterREADME.md。

然而,它并没有工作。Web应用程序没有给我任何响应.我使用Windows 10,Windows Subsystems for Linux,Debian 10.3和Google Chrome浏览器。

这是Chrome的控制台。

kiosk_chrome

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

kiosk_terminal

你能给我一些建议吗?谢谢你。

node.js google-cloud-platform websocket dialogflow text-to-speech
1个回答
2
投票

例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,并录下你的声音时,你应该看到语句被写出来了。- 如果能成功,说明语音转文字API工作正常。(服务账户的设置也很顺利。)

  • 这也意味着你必须接受浏览器弹出的允许使用麦克风的提示(至少一次)。

  • 当Dialogflow检测到意图,(意图或回落),它会创建一个AudioBuffer。就像你已经有了)这将由Text to Speech API返回。一旦浏览器接收到音频,你应该在开发者工具中看到这个。

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

如果你确实看到了这个对象,但Chrome浏览器不知为何不播放音频;你可以仔细检查一下 https:/myaccount.google.comactivitycontrols。Web App Activity & VoiceAudio应该被启用。

  • 我不确定是否有防火墙阻挡了 thingsports。该应用程序应该工作良好,当运行从 http:/localhost:8080 或其他指定端口)。当从其他URL或云端运行时,它只能从HTTPS运行。

希望这能帮到你!


1
投票

谢谢你的好意!我想说的是,我还没有在我的机器上测试(最终的解决方案)。

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

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

你能不能看看例子文件夹里的简单例子能不能用?

这可能与此有关?Socket.io本地网络无法连接.

让我知道如果改变防火墙设置工作. - 然后我会在Github Readme中更新它。

干杯,李

© www.soinside.com 2019 - 2024. All rights reserved.