如何使用tornado websocket解码音频流?

0 投票
0 回答
14 浏览
提问于 2025-04-11 22:06

我正在通过 tornado.websocket.WebSocketHandler 接收一个逐块到来的ogg编码音频流。我的任务是实时解码这些音频流,把它们转换成PCM样本,以便输入到另一个算法中。所以,我理想中的解码接口应该像这样:

class Decoder():
    def push_encoded(self, chunk: bytes):
        # TODO: Implement this.

    def pop_decoded(self) -> PCMSamples:
        # TODO: Implement this.

换句话说,我需要一个解码器,它内部有两个缓冲区:第一个用来存放还没解码的字节,第二个用来存放已经解码的样本。

另外,它也可以是一个基于回调的接口,比如:

class Decoder(callback: Callable[[PCMSamples], None]):
    def push_encoded(self, chunk: bytes):
        # TODO: Implement this.

我尝试使用 torchaudio.io.StreamReader 来实现上面的接口,因为我已经在使用这个包,但结果发现实现起来并不那么简单。

有没有简单的方法可以用 torchaudio 实现上述接口,或者有没有其他更合适的包可以完成这个任务?

0 个回答

暂无回答

撰写回答