1

Amazon の Alexa Voice Service (AVS) を使用したいのですが、Recognize Speech Requestを使用すると、 "{message: null}" しか返されません。認証に失敗したか、リクエストの形式が正しくないときに API からエラー メッセージを受け取ったため、認証は機能します。リクエストは正しいようです。

16000 Hz、1 チャネルの wav オーディオ ファイルがあり、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--

何が間違っている/欠けているのですか?

4

2 に答える 2

0

オーディオ ファイルのエンコーディングは、Base 64 ではなく Linear PCM である必要があります。

于 2015-09-20T23:32:44.920 に答える
0

POST 本文には、生のオーディオ バイナリ データが含まれている必要があります。soxのようなツールを使用して、オーディオを、AVS が想定している形式 (モノラル チャネル、16k Hz サンプル レート、符号付き 16 ビット PCM) に変換できます。

于 2015-11-28T06:42:55.533 に答える