我的目标是使用音频流。从逻辑上讲,这是我的目标:
FastAPI端点)为了解决这个问题,我有很多想法,但最终我一直试图桥WebSocket A接到WebSocket B. 到目前为止,我的尝试涉及一个ConnectionManager类,其中包含一个Queue.queue. 音频流的块被添加到这个队列中,这样我们就不会直接从WebSocket A.
在ConnectionManager还包含一个发生器方法从队列中得到的所有值。
我的 FastAPI 实现websocket A是这样消耗的:
@app.websocket("/ws")
async def predict_feature(websocket: WebSocket):
await manager.connect(websocket)
try:
while True:
chunk = await websocket.receive_bytes()
manager.add_to_buffer(chunk)
except KeyboardInterrupt:
manager.disconnect()
Run Code Online (Sandbox Code Playgroud)
在此摄取的同时,我希望有一个任务可以将我们的音频流桥接到WebSocket B,并将获得的值发送到WebSocket A。可以通过上述generator方法消耗音频流。
由于 WebSocket B 消费消息的方式,生成器方法是必要的,如 Rev-ai 的示例所示: …