2016-09-05 1 views
0

음성 인식 서비스에 오디오를 스트리밍하는 동안 지연이 있습니다.파이썬에서 녹음을 시작하기 전에 음성 인식 스트리밍 지연이 발생했습니다.

이 작업을 처리하는 두 가지 기능이 있습니다. 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) 

문제는 요청이 서버에 대한 연결을 연 다음 수신 기능을 호출 할 때 지연되는 것 같습니다.

그래서 어쩌면 청크를 대기열에 기록 할 스레드를 열면 기본 스레드는 대기열에 요청 기능을 호출합니다. 하지만이 방법을 구현하는 방법을 모르겠지만 여기 누군가가 나를 도울 수 있습니다.

답변

1

음, 스레드를 전혀 사용하지 않고 상호 작용할 수있는 asyncore과 같은 비동기식 API를 비롯하여 많은 하위 수준의 API가 있습니다.

나는 alsaudio의 버퍼 크기를 setperiodsize으로 0.5 초 정도로 늘리고 더 큰 버퍼를 사용합니다. 그런 다음 녹음을 시작한 다음 alsa가 첫 번째 버퍼를 준비하는 동안 연결을 기다릴 수 있습니다.

+0

나는 스레드의 일을 수행했으며 원하는대로 작동합니다. 또한 메소드를 구현하려고 시도합니다. 감사 – LichKing

관련 문제