2017-03-04 43 views
1

我正在嘗試使用Nuance語音API,在過去我成功設法使用了其他API,但大多數時候它們比這更直接。無論出於何種原因,我用來提出請求的Python代碼似乎並沒有做這項工作。我如何使用請求來實現與此捲曲腳本相同的內容,但在Python中?

這是我試圖複製的捲曲腳本。

curl "https://dictation.nuancemobility.net:443/NMDPAsrCmdServlet/dictation?appId=[APP_ID]&appKey=[APP_KEY]&id=[ID]" -H "Content-Type: audio/x-wav;codec=pcm;bit=16;rate=16000" -H "Accept-Language: ENUS" -H "Transfer-Encoding: chunked" -H "Accept: application/xml" -H "Accept-Topic: Dictation" -k --data-binary @audio_16k16bit.pcm -v 

這就是我想如何發送在python中的數據。

import requests 

url = 'https://dictation.nuancemobility.net:443/NMDPAsrCmdServlet/dictation?appId=[APP_ID]&appKey=[APP_KEY]&id=[ID]' 
headers = {} 
headers['Content-Type'] = 'audio/x-wav;codec=pcm;bit=16;rate=16000' 
headers['Accept-Language'] = 'ENUS' 
headers['Transfer-Encoding'] = 'chunked' 
headers['Accept'] = 'application/xml' 
headers['Accept-Topic'] = 'Dictation' 
data = open('audio_16k16bit.pcm', 'rb') 
r = requests.post(url, headers=headers, data=data) 

這裏也是documentation的副本,但是我似乎無法理解究竟我做錯了這裏。

+0

首先,您對Content-Type標頭有不同的值。那是故意的嗎? –

+0

對不起,創建帖子時輸入錯誤。 –

+0

我有兩個curl腳本,都是針對不同的文件類型,兩個curl腳本都可以工作,但python腳本不會發布。 –

回答

1

我刪除了這條線 - headers['Transfer-Encoding'] = 'chunked'

,沒有任何其他的變化我現在似乎越來越期望的結果。

0

基於這樣一個事實,即當請求處理SSL時通常會重置您的連接,並且curl腳本中允許使用不安全SSL連接的-k標誌(請參閱curl documentation),似乎可能存在SSL認證的一些問題。您可以嘗試添加verify=False作爲您的發佈請求的參數。如果它有效,那肯定是造成這種情況的原因。當然,這樣做會使你的連接不安全,所以你會想要考慮它的安全含義,這取決於你使用的是什麼。

+0

我嘗試添加verify = False,但是仍然無法將數據發佈到服務器。感謝您嘗試幫助解決問題。 –