2016-03-19 8 views
0

Ich habe viel versucht, das Projekt Oxford Speaker Recognition API (https://dev.projectoxford.ai/docs/services/563309b6778daf02acc0a508/operations/5645c3271984551c84ec6797) zu verwenden.Projekt Oxford Speaker Recognition- Invalid Audio Format

Ich konnte erfolgreich den Ton auf meinem Mikrofon aufnehmen, um es in den erforderlichen WAV (PCM, 16bit, 16K, Mono) zu konvertieren.

Das Problem ist, wenn ich versuche, diese Datei als ein binärer Stream an die API zu buchen, gibt es eine ungültige Audioformatfehlermeldung zurück.

Die gleiche Datei wird von der Demo auf der Website (https://www.projectoxford.ai/demo/SPID) akzeptiert.

Ich benutze Python 2.7 mit diesem Code.

import httplib 
import urllib 
import base64 
import json 
import codecs 

headers = { 
    # Request headers 
    'Content-Type': 'application/octet-stream', 
    'Ocp-Apim-Subscription-Key': '{KEY}', 
} 

params = urllib.urlencode({ 
}) 


def enroll(audioId): 
    conn = httplib.HTTPSConnection('api.projectoxford.ai') 
    file = open('test.wav','rb') 
    body = file.read() 
    conn.request("POST", "/spid/v1.0/verificationProfiles/" + audioId +"/enroll?%s" % params, str(body), headers) 
    response = conn.getresponse() 
    data = response.read() 
    print data 
    conn.close() 
    return data 

Und das ist die Antwort, die ich bekomme.

Bitte, wenn mir jemand sagen kann, was ich vermisse. Ich habe alle Eigenschaften der Audiodatei und die Anforderungen überprüft, die von der API benötigt werden, aber ohne Glück.

Alle Antworten und Kommentare sind willkommen.

+0

Wie haben Sie die Audiodatei konvertiert? Ich habe Probleme bei der Konvertierung .. nicht in der Lage, mit jedem Audio aufgrund der Spezifikationen zu arbeiten ... –

+0

Nevermind einen Konverter gefunden (Bigasoft Total Video Converter 5) –

Antwort

2

Ich habe diese Datei mit meinem Testprogramm, das in Ruby ist, an Project Oxford gesendet und es funktioniert ordnungsgemäß. Ich denke, das Problem könnte in den anderen Parametern liegen, die du sendest. Versuchen Sie, den Header "Content Type" in "audio/wav; Samplerate = 1600 'Dies ist der Header, den ich verwendet habe. Ich sende auch einen Header "Content Length" mit der Größe der Datei. Ich bin mir nicht sicher, ob 'Content Length' erforderlich ist, aber es ist ein guter Standard, sie einzubinden.

+0

Vielen Dank dafür! Ich habe es endlich geschafft zu arbeiten! Woher wussten Sie von diesem Header? Ihre API-Dokumentation sagt das nicht. –