Google Actions sdk 无法从 Firebase 存储中播放 ssml 中的音频
Posted
技术标签:
【中文标题】Google Actions sdk 无法从 Firebase 存储中播放 ssml 中的音频【英文标题】:Google Actions sdk not playing audio in ssml from firebase storage 【发布时间】:2017-10-27 15:13:51 【问题描述】:Google Actions SDK 无法从 Firebase 存储播放 SSML 音频标签中的音频文件。虽然我可以从***播放相同的 .ogg 格式文件。 https://upload.wikimedia.org/wikipedia/en/9/9f/Sample_of_%22Another_Day_in_Paradise%22.ogg
firebase 文件: https://firebasestorage.googleapis.com/v0/b/assisto-skill.appspot.com/o/TIP103_converted.mp3?alt=media&token=d0d08f9d-e340-478c-af00-657109683136
我通过发送如下所示的 SSML 字符串来使用它:
<speak>
<audio src='https://firebasestorage.googleapis.com/v0/b/assisto-skill.appspot.com/o/TIP103_converted.mp3?alt=media&token=d0d08f9d-e340-478c-af00-657109683136'>
</audio>
</speak>
但我收到以下错误:
expected_inputs[0].input_prompt.rich_initial_prompt.items[0].simple_response: 'ssml' 无法解析。
可能是什么原因...这是动作 sdk 中 url 需要无参数的限制吗?
【问题讨论】:
【参考方案1】:问题不在于它不能使用参数——而是当解析嵌入在 SSML 中的 URL 中的参数时,它不会像现在大多数 html 解析器解析参数那样解析 & 分隔参数。
对此有一些潜在的解决方案,具体取决于您如何格式化 URL。
RFC 1866 曾经推荐使用 ;代替 &,有些服务器允许这样做。不幸的是,Firebase 存储不是其中之一。
Firebase 存储在大多数情况下不需要最终令牌参数,因此在这种情况下您可以省略它,但这不是解决问题的通用方法。
最后,您可以使用 SGML 编码并将 & 替换为 &amp;
(注意前面的 & 和最后的分号)。所以你的 SSML 看起来像:
<speak>
<audio src='https://firebasestorage.googleapis.com/v0/b/assisto-skill.appspot.com/o/TIP103_converted.mp3?alt=media&token=d0d08f9d-e340-478c-af00-657109683136'>
</audio>
</speak>
最后一种方法可能是最适合一般用途的方法。
【讨论】:
真的拯救了我的一天! Google 操作文档非常糟糕,也无法与他们的产品集成。 我尝试将 '&' 替换为 '&'甚至尝试在亚马逊alexa“语音和音调”中复制粘贴上面的sn-p,但它仍然给出了同样的错误 如果您正在与 Alexa 打交道,那将是一个完全不同的问题。我建议您发布一个新的 SO 问题,尽可能详细地提供。以上是关于Google Actions sdk 无法从 Firebase 存储中播放 ssml 中的音频的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Actions 中获取文本输入(最新版本)
无法从Vagrant访问Google Cloud SDK for Python的本地开发服务器