【发布时间】:2017-08-22 20:50:40
【问题描述】:
我正在尝试使用 AWS lambda 中的 JavaScript SDK(通过使用 API 网关的 REST API 公开)使用 AWS Polly(用于 TTS)。获得 PCM 输出没有问题。这是一个简短的呼叫流程。
.NET 应用程序 --> REST API (API 网关) --> AWS Lambda (JS SDK) --> AWS Polly
.NET 应用程序(我也使用 POSTMAN 进行测试)获取以下格式的音频流缓冲区。
{"type":"Buffer","data":[255,255,0,0,0,0,255,255,255,255,0,0,0,0,0,0,255,255,255,255,0,0,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,0,0,0,0,255,255,255,255,0,0,255,255,255, more such data]
现在我不知道如何将其转换回原始 PCM。我希望它将这些数据作为原始 PCM 发回,但找不到方法。我也无法理解为什么 AWS 会以这种格式发回数据。使用那里的控制台,可以获取原始 PCM 格式的音频(然后我可以将其提供给 Audacity),但使用 SDK 并不那么简单。还是我错过了一些非常基本的东西?
对此有任何建议/提示吗?谢谢。
【问题讨论】:
-
他们没有以奇怪的格式发送数据。当您将二进制
Buffer对象强制转换为 JSON 时,这就是 Node 中发生的情况。它是二进制内容,JSON 不能处理任意八位字节,只能处理字符数据,因此它被表示为二进制字节值的数组。您可能需要在 JS 中对原始缓冲区进行 base64 编码(以避免这种隐式转换)并将它们传送到设置了适当标志的 API Gateway,然后它们将被解码为原始八位字节并返回给客户端。 -
感谢您的提示。那完成了工作。再次感谢!
-
很高兴听到这个消息。您是否会在下面写下答案,以帮助将来发现您的问题的其他人,包括代码 sn-ps 和您需要更改的任何设置? (请?)
标签: aws-lambda text-to-speech amazon-polly