如何为 Alexa 语音编码音频?
How to encode audio for Alexa Voice?
我想使用亚马逊的 Alexa 语音服务 (AVS),但是当我使用 Recognize Speech Request 时,我得到的只是“{message: null}”。身份验证有效,请求似乎是正确的,因为当身份验证失败或请求格式错误时,我从 API 收到了错误消息。
我有一个 wav 音频文件,16000 Hz,1 声道,并使用 PHP 的 base64_encode() 对 wav 文件的内容进行编码。
对于音频文件,AVS 文档只说 Type: Binary Data. Represents the data for the audio.
这是我要发送的请求:
Headers
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
Body
--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--
知道什么是 wrong/missing 吗?
音频文件的编码应该是线性 PCM,而不是 base 64。希望这对您有所帮助
POST 正文应包含原始音频二进制数据。您可以使用 sox 之类的工具将音频转换为 AVS 期望的格式,即单声道、16k Hz 采样率、带符号的 16 位 PCM。
我想使用亚马逊的 Alexa 语音服务 (AVS),但是当我使用 Recognize Speech Request 时,我得到的只是“{message: null}”。身份验证有效,请求似乎是正确的,因为当身份验证失败或请求格式错误时,我从 API 收到了错误消息。
我有一个 wav 音频文件,16000 Hz,1 声道,并使用 PHP 的 base64_encode() 对 wav 文件的内容进行编码。
对于音频文件,AVS 文档只说 Type: Binary Data. Represents the data for the audio.
这是我要发送的请求:
Headers
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
Body
--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--
知道什么是 wrong/missing 吗?
音频文件的编码应该是线性 PCM,而不是 base 64。希望这对您有所帮助
POST 正文应包含原始音频二进制数据。您可以使用 sox 之类的工具将音频转换为 AVS 期望的格式,即单声道、16k Hz 采样率、带符号的 16 位 PCM。