2017-09-11 2 views
2

Bei dem Versuch, die [Schnellstart] (https://cloud.google.com/speech/docs/getting-started) für Cloud-Speed-API zu folgen, nach dem Ausführen des "curl" Befehl in Eingabeaufforderung aufgetretenen Fehler dargestellt, wie unten:Cloud-Speech-API-Fehler: RecognitionAudio nicht gesetzt

{ 
    "error": { 
    "code": 400, 
    "message": "RecognitionAudio not set.", 
    "status": "INVALID_ARGUMENT" 
    } 
} 

Warum wird das RecognitionAudio nicht in der API selbst gesetzt? Die Sync-request.json verwendet wird, ist dieselbe wie die in dem Schnellstart:

{ 
    "config": { 
     "encoding":"FLAC", 
     "sampleRateHertz": 16000, 
     "languageCode": "en-US", 
     "enableWordTimeOffsets": false 
    }, 
    "audio": { 
     "uri":"gs://cloud-samples-tests/speech/brooklyn.flac" 
    } 
} 
+0

Ich habe das gleiche Problem. hast du es geschafft, es am Ende zu lösen? – Koen

Antwort

1

Ich bin nicht sicher genau, was Sie tun falsch, aber ich war in der Lage, die Anforderung zu verwenden, wie sie ist aus der Dokumentation ohne Problem.

Haben Sie ein Zugriffstoken für ein Google Cloud-Projekt erhalten, für das die Sprach-API aktiviert wurde? Der folgende Befehl erzeugt das Zugriffstoken, die als Träger verwendet werden können:

gcloud auth application-default print-access-token 

Es war hilfreich für mich folgende in eine Skriptdatei (req.sh)

curl -s -H "Content-Type: application/json" \ 
    -H "Authorization: Bearer <output>" \ 
    https://speech.googleapis.com/v1/speech:recognize \ 
    -d @sync-request.json 

zu verwenden, um habe ich dann habe einfach die Ausgabe von print-access-token mit dem Skript verwendet.

0

Ich hatte das gleiche Problem und es funktionierte für mich, wenn ich den Befehl @ sync aus dem curl-Befehl ausließ. Dieser Befehl funktionierte für mich:

curl -s -H "Content-Type: application/json" \ 
-H "Authorization: Bearer " \ 
https://speech.googleapis.com/v1/speech:recognize \ 
-d @request.json 

Nicht sicher, was die genaue Funktion von @sync ist?

+1

Der Dateiname für das Beispiel war "sync-request.json", um die JSON-Anfrage zu speichern. Um einen Dateinamen an curl zu übergeben, verwenden Sie die Option -d (für "Daten") und geben dem Dateinamen ein @ -Zeichen vor. Wenn Sie also die JSON-Datei zuvor als "request.json" gespeichert haben, brauchen Sie nur @ request.json – Kenworth

1

ich hatte genau das gleiche Problem, und ich löste es Anführungszeichen in dem -d Wert, wie das Hinzufügen von:

curl -s -H "Content-Type: application/json" \ 
    -H "Authorization: Bearer <your-access-token>" \ 
    https://speech.googleapis.com/v1/speech:recognize \ 
    -d "@sync-request.json" 
+0

Das hat mir auch geholfen. Verwenden von Windows – zeldi

0

ich diesen Fehler war immer, weil ich nicht den Befehl in der cli in den gleichen ausgeführt wurde, Verzeichnis als meine sync-request.json Datei.

Sobald ich Verzeichnisse geändert habe, habe ich den Befehl aus der Dokumentation mit meinem Zugriffstoken verwendet, und es hat gut funktioniert.