Google Actions SDK 无法从 Firebase 存储中以 ssml 格式播放音频



Google Actions SDK 无法播放 Firebase 存储中的 SSML 音频代码中的音频文件。虽然我可以播放与维基百科相同的.ogg格式文件。https://upload.wikimedia.org/wikipedia/en/9/9f/Sample_of_%22Another_Day_in_Paradise%22.ogg

火碱文件: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 中的限制,网址需要无参数吗?

问题不在于它不能使用参数 - 而是在解析嵌入在SSML中的URL中的参数时,它不会像大多数HTML解析器那样解析和分离参数。

对此有一些潜在的解决方案,具体取决于如何设置URL的格式。

RFC 1866 曾经建议使用 ; 代替 &,并且某些服务器允许这样做。不幸的是,Firebase Storage不是其中之一。

在大多数情况下,Firebase 存储不需要最终令牌参数,因此在这种情况下,您可以省略它,但这不是问题的通用解决方案。

最后,您可以使用 SGML 编码并替换 & as &amp;(注意前导 & 号和最后的分号(。因此,您的SSML看起来像:

<speak>
  <audio src='https://firebasestorage.googleapis.com/v0/b/assisto-skill.appspot.com/o/TIP103_converted.mp3?alt=media&amp;token=d0d08f9d-e340-478c-af00-657109683136'>
  </audio>
</speak>

最后一种方法可能是一般用途的最佳方法。

最新更新