在python上开始录制之前,语音识别流延迟



我在尝试流式传输音频到语音识别服务时出现延迟。

我有两个函数处理这个任务,第一个使用alsaaudio和"yield"将数据返回给调用函数。第二个函数,使用请求,我传递给它的url的头和记录功能。

问题是,从我调用请求函数的那一刻起,直到它开始录制音频大约半秒

下面是一个伪代码:

def listen():
    stream = audiostream()
    while user_speak:
        yield stream.read(chunksize)
def stream_speech():
    response = requests.post(url, data=listen(), headers, stream=true)
    if response.status_code == 200:
        print(response)

我认为问题是在请求打开到服务器的连接时延迟,然后才调用listen函数。

所以我想也许打开一个线程,将记录块到一个队列,主线程将调用请求函数与队列。但是我不知道如何实现这个,也许这里有人可以帮助我。

有很多低级api,包括asyncore这样的异步api,它允许你在不使用线程的情况下进行交互。

我只需要在alsaaudio中使用setperiodsize将缓冲区大小增加到0.5秒,并使用更大的缓冲区。然后,您可以先开始录制,然后等待连接,同时alsa将准备第一个缓冲区。

最新更新