将分块音频发送到 Wit.ai

Sending Chunked Audio to Wit.ai

我正在尝试使用 Wit.ai 语音识别。我已经成功地将一个 wave 文件发送到网站以转换为文本,但现在我试图以块的形式发送它以减少延迟,但每当我尝试这样做时它都会给我错误

"content-type-mismatch"

尽管我仍在发送 wav 文件,就像我说的那样我在 headers。有人可以看看我的代码并告诉我我做错了什么吗?我很感激。我正在使用 python 请求库

commandPath = "Command.wav"
#Headers for http request
headers = {"authorization": "Bearer " + TOKEN,
    "Content-Type": "audio/wav",
    "Transfer-encoding": "chunked"}

#open Audio file to send
audioFile = open(commandPath, "rb")

def gen():
    #Keep getting audio until it has all been read
    while audioFile.read(2048) != "":
        yield audioFile.read(2048)
    print("Finished")


r = requests.post(ENDPOINT, headers=headers, data=gen())
print(r.text)

我想问题是您在每个循环中调用 audioFile.read(2048) 两次,忽略(并丢弃)第一次调用的结果。

第一个块(您丢弃的)包含 header 信息,因此永远不会到达服务器,服务器理所当然地抱怨。