2015-09-19 3 views
1

Je voudrais utiliser Alexa Voice Service (AVS) d'Amazon mais quand j'utilise le Recognize Speech Request tout ce que je reçois est "{message: null}". L'authentification fonctionne, la demande semble correcte car j'ai reçu des messages d'erreur de l'API lorsque l'authentification a échoué ou que la demande a été mal formée. J'ai un fichier audio wav, 16000 Hz, 1 canal, et utilise PHP64 base64_encode() pour encoder le contenu du fichier wav.Comment encoder l'audio pour Alexa Voice?

Pour le fichier audio de la documentation AVS dit que Type: Binary Data. Represents the data for the audio.

Voici la demande que je vous envoie:

têtes

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 

corps

--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-- 

Toute idée de ce qui ne va pas /disparu?

Répondre

0

L'encodage pour le fichier audio doit être linéaire PCM base pas 64. Hope this helps

+1

Excusez cette question plutôt stupide, mais devrais-je juste copier le contenu du fichier binaire dans le corps du message (comme '5249 4646 b80a 0200 5741 5645 666d 7420 ...')? – daniel

0

Le corps POST doit contenir les données binaires audio brutes. Vous pouvez utiliser un outil comme sox pour convertir l'audio au format que l'AVS attend dans lequel est le canal mono, fréquence d'échantillonnage de 16 kHz, PCM signé 16 bits.