【发布时间】:2020-11-09 23:26:53
【问题描述】:
我有一个由 AWS api 网关调用的 AWS lambda 函数。该函数从 AWS S3 上托管的多个 mp3 文件中获取 URL,并将它们连接成一个 mp3 文件。当我从浏览器调用 api 时一切正常(浏览器打开媒体播放器并播放组合的音频 mp3)。
URL 请求如下所示:
https://0xxxxxxxx.execute-api.eu-west-1.amazonaws.com/alpha/files?file=https://xxx.s3-eu-west-1.amazonaws.com/file1.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file2.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file3.mp3
HTTP 响应是音频/mpeg 类型,大约 10 秒长,并且是 base64 编码的。
我试图用我的技能将它封装到 SSML 中,但它失败了。从 Alexa 技能套件语音和音调模拟器中,我收到错误消息“检索文本到语音时出错;输入不兼容”
在模拟器中,这是我写的:
<speak>
<audio src='https://0xxxxxxxx.execute-api.eu-west-1.amazonaws.com/alpha/files?file=https://xxx.s3-eu-west-1.amazonaws.com/file1.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file2.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file3.mp3'/>
</speak>
我用它来确认 S3 访问在模拟器中有效:
<speak>
<audio src='https://s3.amazonaws.com/ask-soundlibrary/human/amzn_sfx_crowd_applause_05.mp3'/>
</speak>
任何想法有什么问题吗?是我的 lambda 技能的 http 响应有问题,还是需要在 api 网关中启用某些东西?从我的 api 网关日志来看,该技能似乎从未尝试访问网关。
我应该使用不同的方法来获取 mp3 进行播放吗?请注意,我想使用 SSML,因为我的音频是一种效果,因此不应使用音频播放器(这是亚马逊的要求)。
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-lambda aws-api-gateway alexa-skills-kit