WhisperFlow实时音频转录库

如今,实时转录对于在客户支持、现场活动和虚拟通信中提供即时反馈至关重要。它增强了可访问性,确保了听力障碍人士的包容性,并改善了整体用户体验。并支持依赖实时数据的行业的快速决策、法规遵从性和无缝的全球协作。

WhisperFlow是一种由 OpenAI 的 Whisper 模型提供支持的解决方案,旨在将传统的批处理转变为实时音频转录,确保现代应用程序的性能和准确性。

1、不重新发明轮子

WhisperFlow 巧妙地建立在 OpenAI 的 Whisper 框架和模型之上,它通过添加实时功能扩展了 OpenAI Whisper。WhisperFlow 采用了 Whisper 最先进的准确性,并进一步完善,使其在不同情况下更有用,尤其是实时处理。

Whisper 模型

2、从批处理到实时

Whisper 框架专为批处理而构建,可一次转录整个音频文件。尽管效果显著,但现代应用程序通常需要实时反馈,尤其是对于实时会议转录、语音助手或实时播客字幕等用例。WhisperFlow 通过添加实时处理功能增强了 Whisper 的功能,允许在用户仍在讲话时转录实时音频流。WhisperFlow 利用 WebSockets 进行实时音频流传输,以亚秒级延迟处理小块音频。它使用滚动窗口技术,根据暂停对音频进行分段,以提供即时的部分结果,并在获得更多上下文时提高准确性。

音频块和滚动窗口

音频块实时转录,随着新块的到来和更多上下文的添加,部分结果得到改进。暂停将结果标记为最终结果,确保快速准确地转录动态音频或视频。要直观地了解这一点,请参阅下面的部分结果表。

部分结果和最终结果

3、低延迟、高精度

转录速度至关重要,WhisperFlow 以令人印象深刻的延迟脱颖而出。在 Apple M1 芯片上,WhisperFlow  tiny.en 的平均延迟为 275.22 毫秒——即使对于实时应用程序来说也非常低。在 GPU 机器上,性能进一步提高,超越了仅 CPU 的基准,从而能够更快地处理大型任务。WhisperFlow 可确保你的应用程序高效快速地运行,而不会影响准确性。

4、轻松与 Python 和 FastAPI 集成

WhisperFlow 不会使开发人员的生活变得复杂。它的打包方式使集成到现有 Python 项目中变得简单。你可以将其用作简单的 Python 库,在自己的代码中调用它,或者将其部署为独立的 FastAPI 服务器以用于更广泛的用例。其灵活的架构使其非常适合小型脚本和更大的分布式系统。

要将 WhisperFlow 作为 Web 服务器运行,请先将存储库克隆到本地计算机:

git clone https://github.com/dimastatz/whisper-flow.git

然后导航到 WhisperFlow 文件夹,创建一个包含所有依赖项的本地 venv,并在端口 8181 上运行 Web 服务器:

cd whisper-flow
./run.sh -local
source .venv/bin/activate
./run.sh -benchmark

要将 WhisperFlow 集成到你的 Python 应用程序中,请先安装 whisper python 包:

pip install whisperflow

然后导入 WhsiperFlow 和 transcriber 模块:

import whisperflow.streaming as st
import whisperflow.transcriber as ts

@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
    model = ts.get_model()

    async def transcribe_async(chunks: list):
        return await ts.transcribe_pcm_chunks_async(model, chunks)

    async def send_back_async(data: dict):
        await websocket.send_json(data)

    try:
        await websocket.accept()
        session = st.TrancribeSession(transcribe_async, send_back_async)

        while True:
            data = await websocket.receive_bytes()
            session.add_chunk(data)
    except Exception as exception:
        await session.stop()
        await websocket.close()

5、结束语

WhisperFlow 弥补了批量转录和实时转录之间的差距,为开发人员提供了 Whisper 模型的强大功能和附加功能。无论你是在寻找低延迟性能、轻松集成还是实时应用程序的实时转录,WhisperFlow 都能满足您的需求。这是一款面向未来的工具,希望它成为你的工具包中的一员。


原文链接:WhisperFlow: a Real-Time Speech-to-Text Library

汇智网翻译整理,转载请标明出处