Actions on google 我怎样才能告诉谷歌的行动流音频?

Actions on google 我怎样才能告诉谷歌的行动流音频?,actions-on-google,audio-streaming,google-home,Actions On Google,Audio Streaming,Google Home,我正在写一个应用程序来配合谷歌的行动。唯一糟糕的是,我找不到任何关于如何形成我的回应的信息,这样谷歌就可以从给定的URL流式传输音频。谷歌是否支持这一点 我已经在Alexa上编写了相同的应用程序,而在Alexa上,你所要做的就是返回一个音频项(令牌、URL、播放命令),Alexa将开始播放它 我应该提到的是,我没有使用API.AI,只是使用Actions SDK,并使用C#在Asure上托管我的web服务 所以,底线是。。。如何通过Actions SDK格式化响应,将MP3文件流式传输到Goog

我正在写一个应用程序来配合谷歌的行动。唯一糟糕的是,我找不到任何关于如何形成我的回应的信息,这样谷歌就可以从给定的URL流式传输音频。谷歌是否支持这一点

我已经在Alexa上编写了相同的应用程序,而在Alexa上,你所要做的就是返回一个音频项(令牌、URL、播放命令),Alexa将开始播放它

我应该提到的是,我没有使用API.AI,只是使用Actions SDK,并使用C#在Asure上托管我的web服务


所以,底线是。。。如何通过Actions SDK格式化响应,将MP3文件流式传输到Google Home?

根据文档,您可以在SSML中嵌入元素。包括以下示例:

<speak>
  Here are <say-as interpet-as="characters">SSML</say-as> samples.
  I can pause <break time="3s"/>.
  I can play a sound
  <audio src="https://www.example.com/MY_MP3_FILE.mp3">didn't get your MP3 audio file</audio>.
  I can speak in cardinals. Your number is <say-as interpret-as="cardinal">10</say-as>.
  Or I can speak in ordinals. You are <say-as interpret-as="ordinal">10</say-as> in line.
  Or I can even speak in digits. The digits for ten are <say-as interpret-as="characters">10</say-as>.
  I can also substitute phrases, like the <sub alias="World Wide Web Consortium">W3C</sub>.
  Finally, I can speak a paragraph with two sentences.
  <p><s>This is sentence one.</s><s>This is sentence two.</s></p>
</speak>

这里是SSML样本。
我可以停下来。
我会放声音
有以下限制:

  • 首选单声道,但可接受立体声
  • 最长持续时间为120秒。如果您想播放较长时间的音频,请考虑实现媒体响应。5 MB文件大小限制

  • 源URL必须使用HTTPS协议

  • 获取 音频是“谷歌语音动作”

更新:第一个答案仅适用于Dialogflow的V1。对于V2,您可以通过以下方式创建mediaResponse(来自Google的文档):

========================================================================

我贴出了答案

基本上,您可以创建一个mediaResponse对象来播放音频文件。我可以播放50分钟的音频文件

Node.js中的代码示例可以是(使用当前文档):


嘿,谢谢你的回答,由于120秒的限制,这实际上不是我想要的。我们的组织每周发布大约一小时长的音频播客。我们希望能够像在Alexa上一样,根据请求将它们流式传输给用户。有没有办法流式播放一个小时的mp3文件?目前还不支持流式播放。您可以在一个SSML响应中包含多个音频源。启动cast会话怎么样?任何人都可以想出一种方法,通过与设备对话的用户操作来启动cast会话。目前似乎只有Netflix和一些经批准的合作伙伴能够在chromecast设备上启动cast会话。@LeonNicholls你知道什么时候在Google上支持流媒体吗?@LeonNicholls我们可以使用ssml在Google home设备上播放直播音频吗?@RémiC。谷歌主页下载一个50分钟的mp3文件需要多长时间?Google Home的延迟时间很长?感谢you@JordanMontel要播放50分钟的专辑,我们需要一个mp3版本(如医生所说),然后我们需要上传到一个可以获得https链接的地方。我选择了谷歌云存储。最后,要播放它,你需要提供一个链接,当你点击它时播放音频,这很重要。因此关于你的问题,Google Home什么也不下载,而是将你提供的链接中的音频流出来。@RémiC。谷歌称mp3文件最多只能播放2分钟,但我们可以播放超过2分钟的mp3,对于这一限制我们没有谷歌的答案。我们的mp3位于我们的服务器上,带有https链接(不在谷歌云内),我们无法移动它。但是Google Home播放mp3的时间因播放时间的长短而有所不同。正因为如此,我们认为Google Home在流媒体播放之前会在他们的服务器上下载mp3(因为我们的mp3是进步的链接)。就是为了这个,我问你延迟的问题?如果流非常短,您是否采取措施减少延迟?谢谢,我试过了,好像只有mp3能玩@JordanMontel我从未尝试过使用谷歌服务以外的文件存储,可能正因为如此,我没有看到这个问题。。。使用媒体响应允许我们绕过SSML对音频的120秒限制。我不知道,在播放之前谷歌下载你的音频,你可能是对的。关于延迟,我只把我的谷歌存储的音频链接,所以我不知道如何减少它,否则,对不起,请注意,流式音频(如HLS)目前不受支持,但行动平台可以播放MP3文件,如接受的答案中所述。
conv.ask(new MediaObject({
  name: 'Jazz in Paris',
  url: 'http://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3',
  description: 'A funky Jazz tune',
  icon: new Image({
    url: 'http://storage.googleapis.com/automotive-media/album_art.jpg',
    alt: 'Media icon',
  }),
}));
const richResponse = app.buildRichResponse()
 .addSimpleResponse("Here's song one.")
  .addMediaResponse(app.buildMediaResponse()
  .addMediaObjects([
    app.buildMediaObject("Song One", "https://....mp3")
      .setDescription("Song One with description and large image.") // Optional
      .setImage("https://....jpg", app.Media.ImageType.LARGE)
        // Optional. Use app.Media.ImageType.ICON if displaying icon.
  ])
)
.addSuggestions(["other songs"]);