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

时间:2016-09-05 16:01:23

标签: python linux multithreading speech-recognition

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

我有两个处理此任务的函数, 第一个使用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函数。

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

1 个答案:

答案 0 :(得分:1)

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

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