如何判断Google上的操作流式传输音频?

Jay*_*Jay 13 audio-streaming actions-on-google google-home

我正在编写一个与Google Actions合作的应用.唯一令人遗憾的是,我无法找到有关如何形成我的回复的任何信息,以便Google将流式传输来自给定网址的音频.谷歌甚至支持这个吗?

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

我应该提到我不使用API​​.AI,但我只是使用Actions SDK并使用C#在Asure上托管我的Web服务.

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

小智 5

根据文档,您可以在SSML中嵌入元素.https://developers.google.com/actions/reference/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>
Run Code Online (Sandbox Code Playgroud)

编辑

p/s:Documents中的SSML有以下限制:

  • 单通道是首选,但立体声是可以接受的.
  • 120秒最长持续时间.如果要播放持续时间较长的音频,请考虑实施媒体响应.5兆字节的文件大小限制.

  • 源URL必须使用HTTPS协议.

  • 获取音频时,我们的UserAgent是"Google-Speech-Actions".

  • 开始演员会怎么样?任何人都可以想到一种方法来启动演员会话与用户对设备说话的动作.目前似乎只有Netflix和一些获得批准的合作伙伴能够在chromecast设备上启动演员会话. (3认同)
  • 嘿,谢谢你的答案,由于120秒的限制,这实际上不是我想要的.我们的组织每周发布大约一个小时的音频播客.我们希望能够像Alexa那样根据请求将它们流式传输给用户.有没有办法流一小时的长mp3文件? (2认同)
  • 目前还不支持流式传输.您可以在单个SSML响应中包含多个音频源. (2认同)

Rém*_* C. 5

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

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',
  }),
}));
Run Code Online (Sandbox Code Playgroud)

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

在这里发布了答案。

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

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

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"]);
Run Code Online (Sandbox Code Playgroud)