我正在使用一个语音识别服务,它接受音频片段并返回一个文本转录。该服务是异步使用的,也就是说,当它接收音频数据时,它会回答部分文本识别,直到那时为止
仅仅使用一个简单的无限send_audio〉wait_response就会锁定程序,因为它等待服务不发送的应答。所以我尝试使用websockets,用协程来分离代码的发送和接收部分。但是我也没有太大的成功。
async def getMessages(ws):
while 1:
rcv = await ws.recv()
...
async def sendMessages(ws):
while 1:
await ws.send("CREATE_SESSION")
...
async def main():
async with websockets.connect(ADDR) as websocket:
sender = asyncio.create_task(sendMessages(websocket))
getter = asyncio.create_task(getMessages(websocket))
await asyncio.wait([sender, getter])
asyncio.run(main())
有更好的办法吗?我做错什么了?
2条答案
按热度按时间htrmnn0y1#
因为您使用的是python,所以我建议您使用django-channels
如果你也把它部署到heroku,你会得到更快的结果
Cisco和许多其他公司都使用它
ehxuflar2#
这个例子只是在定时器上打印文本或语音。它可以在两种情况下都工作得很好,即服务器发送更多的消息或客户端发送更多的消息。但是,有一个额外的延迟比睡眠时间提供的,我不清楚。
服务器
客户