我正在尝试使用Nuance speech API,在过去我已经成功地使用了其他API,但大多数时候它们比这更直接。不管出于什么原因,我用来发出请求的Python代码似乎不能完成这项工作。
这是我正在尝试复制的curl脚本。
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的副本,但是我似乎不明白我到底做错了什么。
发布于 2017-03-05 03:37:13
我删除了这一行- headers['Transfer-Encoding'] = 'chunked'
在没有任何其他更改的情况下,我现在似乎得到了预期的结果。
发布于 2017-03-05 02:53:32
基于这样的事实,当请求处理SSL时,您的连接似乎通常被重置,并且curl脚本中的-k标志允许使用不安全的SSL连接(请参阅curl documentation),看起来SSL身份验证可能存在一些问题。您可以尝试添加verify=False作为post请求的参数。如果它起作用了,那么这肯定是导致这种情况的原因。当然,这样做会使您的连接不安全,因此您可能需要考虑它的安全影响,这取决于您使用它的目的。
https://stackoverflow.com/questions/42599631
复制相似问题