首页 文章

如何为Alexa Voice编码音频?

提问于
浏览
1

我想使用亚马逊的Alexa语音服务(AVS),但当我使用Recognize Speech Request时,我回来的是"" . 身份验证工作,请求似乎是正确的,因为我在身份验证失败或请求格式错误时收到了来自API的错误消息 .

我有一个wav音频文件,16000 Hz,1个 Channels ,并使用PHP的base64_encode()来编码wav文件的内容 .

对于音频文件,AVS文档仅说 Type: Binary Data. Represents the data for the audio.

这是我发送的请求:

POST /v1/avs/speechrecognizer/recognize HTTP/1.1
Host: access-alexa-na.amazon.com
Content-Type: multipart/form-data; boundary=86371ffc080fbb6fc614e8e36d0b8a4d
Authorization: Bearer Atza|IQEBL... (valid token)
Transfer-Encoding: chunked
Cache-Control: no-cache

身体

--86371ffc080fbb6fc614e8e36d0b8a4d
Content-Disposition: form-data; name="request"
Content-Type: application/json; charset=UTF-8

{
    "messageHeader": {
        "deviceContext": [
            {
                "name":"playbackState",
                "namespace":"AudioPlayer",
                "payload": {
                    "streamId": "xxxxxxxxxxxx",
                    "offsetInMilliseconds": "xxxxxxxxxxxx",
                    "playerActivity": "xxxxxxxxxxxx"
                }
            }
        ]
    },
    "messageBody": {
        "profile": "alexa-close-talk",
        "locale": "en-us",
        "format": "audio/L16; rate=16000; channels=1"
    }
}

--86371ffc080fbb6fc614e8e36d0b8a4d
Content-Disposition: form-data; name="audio"
Content-Type: audio/L16; rate=16000; channels=1

SUQzAgAAAAAQS1RUMgAAFwBhb...(truncated result of base64_encode(file.wav))
--86371ffc080fbb6fc614e8e36d0b8a4d--

知道什么是错的/缺失的吗?

2 回答

  • 0

    音频文件的编码应该是线性PCM而不是基础64.希望这会有所帮助

  • 0

    POST主体应包含原始音频二进制数据 . 您可以使用像 sox 这样的工具将音频转换为AVS所期望的格式,即单声道,16k Hz采样率,带符号16位PCM .

相关问题