2016-03-19 38 views
0

我一直在努力使用項目牛津說話人識別API (https://dev.projectoxford.ai/docs/services/563309b6778daf02acc0a508/operations/5645c3271984551c84ec6797)。項目牛津說話人識別 - 無效音頻格式

我已經成功地在我的麥克風上錄製聲音,將它轉換爲所需的WAV(PCM,16bit,16K,Mono)。

問題是,當我嘗試將該文件作爲二進制流發佈到API時,它會返回無效的音頻格式錯誤消息。

相同的文件被網站上的演示接受(https://www.projectoxford.ai/demo/SPID)。

我在這段代碼中使用了python 2.7。

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 

這是我得到的迴應。

{ 
    "error": { 
     "code": "BadRequest", 
     "message": "Invalid Audio Format" 
    } 
} 

如果有人能指導我,我缺少什麼。我已驗證音頻文件的所有屬性和API所需的要求,但沒有運氣。

所有的答案和評論表示讚賞。

+0

你是如何轉換音頻文件的?我在轉換中遇到問題..由於規格,無法使用任何音頻... –

+0

Nevermind找到一個轉換器(Bigasoft Total Video Convertor 5) –

回答

2

我把這個文件發送到Project oxford與我的測試程序是紅寶石,它工作正常。我認爲這個問題可能在你發送的其他參數中。嘗試將您的「Content Type」標題更改爲「audio/wav; samplerate = 1600'這是我使用的標題。我還會發送一個包含文件大小的「Content Length」標題。我不確定是否需要「內容長度」,但包含它的標準很好。

+0

感謝您的支持!我終於開始工作了!你怎麼知道這個標題?他們的API文檔沒有這樣說。 –