【问题标题】:How to use streaming audio data from microphone for ASR in Qt如何在 Qt 中将来自麦克风的流式音频数据用于 ASR
【发布时间】:2024-01-02 11:26:02
【问题描述】:

我正在做一个语音识别项目,我的程序可以识别音频文件中的单词。现在我需要处理来自麦克风的音频流。我正在使用 QAudio 从麦克风获取声音数据,并且 QAudio 具有启动该过程的功能。此 start(* QBuffer) 函数将数据写入 QBuffer(继承自 QByteArray)对象。当我不处理连续流时,我可以随时停止从麦克风录制并将整个数据从 QBuffer 复制到 QByteArray 中,我可以对数据做任何我想做的事情。但在连续流中,QBuffer 的大小随时间增加,并在 15 分钟内变为 100Mb。 所以我需要使用某种循环缓冲区,但我不知道如何做到这一点,尤其是使用这个 start(*QBuffer) 函数。我还避免在语音继续的地方切断流声音。

处理流式音频数据以进行语音识别的基本方法是什么? 是否可以将 start(*QBuffer) 函数更改为 start(*QByteArray) 并让该函数覆盖该 QByteArray 以构建和循环缓冲区?

提前致谢

【问题讨论】:

  • 您的签名有误。这是QAudioDevice::start(QIODevice*)。它不需要QBuffer*,当然QBufferQIODevice,所以你可以使用一个。您需要一个在QIODevice 之上实现FIFO 的类。现在是 Qt 人员向 Qt 添加一个的时候了,它会很有用。

标签: qt audio speech-recognition


【解决方案1】:

boost.com 提供循环缓冲区

http://www.boost.org/doc/libs/1_37_0/libs/circular_buffer/doc/circular_buffer.html#briefexample

应该能满足你的需要

阿兰

【讨论】:

    最近更新 更多