whisper-flow:实时语音转录开源项目
项目介绍
Whisper Flow 是一个基于 OpenAI Whisper 的高效实时语音转录开源项目。Whisper Flow 的核心功能是将语音流实时转换为文本,这种技术特别适合需要对音频或视频内容进行实时字幕生成、实时会议记录、实时互动翻译等场景。
Whisper Flow 的设计理念是利用 Whisper 模型强大的语音识别能力,通过实时处理语音流,实现即时的语音到文本转换,从而满足现代应用对实时信息处理的需求。
项目技术分析
Whisper Flow 使用了 OpenAI 的 Whisper 语音识别模型。Whisper 是一个通用的、多语言的语音识别模型,经过广泛的数据集训练,能够完成多种任务,包括多语言语音识别、语音翻译以及语言识别等。传统的 Whisper 使用批处理方式进行转录,即上传完整的音频或视频文件,然后由 Whisper 进行处理并返回文本结果,这并不是实时完成的。
Whisper Flow 的创新之处在于它将 Whisper 应用于实时流式数据。流式数据以一系列连续的数据包(或“块”)的形式发送,Whisper Flow 对这些数据包进行实时转录,并立即返回转录结果。
项目技术应用场景
Whisper Flow 的实时语音转录功能可以广泛应用于多种场景:
- 实时字幕生成:在视频直播、电影、电视剧等场合,实时为听障人士或不同语言的用户生成字幕。
- 实时会议记录:在会议、研讨会等活动中,实时记录发言内容,便于后续整理和回顾。
- 在线教育:教师讲解实时转换为文本,帮助学习者更好地理解与记忆课程内容。
- 实时互动翻译:在不同的语言环境中,实时翻译双方对话,促进跨文化交流。
项目特点
Whisper Flow 作为一个实时语音转录工具,具有以下几个显著特点:
- 实时性:与传统的批处理转录不同,Whisper Flow 实现了实时语音到文本的转换,大大提高了信息的时效性。
- 高效率:通过流式处理,Whisper Flow 可以在极短时间内返回转录结果,这对于需要快速响应的应用场景至关重要。
- 准确性:尽管实时处理可能会牺牲一定的准确率,但 Whisper Flow 通过不断优化模型和算法,实现了较高的转录准确度。
- 灵活性:Whisper Flow 可以作为 Web 服务运行,也可以作为 Python 包集成到其他应用中,满足不同用户的需求。
性能指标
在性能方面,Whisper Flow 通过 Word Error Rate (WER) 和延迟(Latency)两项指标进行衡量。延迟是指两个连续的部分结果之间的时间间隔,目标是实现小于一秒的延迟。在 MacBook Air M1 芯片和 16GB 内存的环境中进行的基准测试显示,Whisper Flow 的延迟始终低于 500 毫秒,转录准确率约为 93%(WER 约为 7%)。
使用方法
作为 Web 服务器
首先,克隆仓库到本地机器。
git clone https://example.com/whisper-flow.git
然后进入 WhisperFlow 目录,创建本地虚拟环境并运行 Web 服务器。
cd whisper-flow
./run.sh -local
source .venv/bin/activate
./run.sh -benchmark
作为 Python 包
安装 whisperflow Python 包。
pip install whisperflow
导入 whisperflow 的模块,并在 WebSocket 端点中实现实时转录功能。
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()
Whisper Flow 的推出为实时语音转录领域带来了新的解决方案,不仅提高了信息处理的效率,也为各种实时交互场景提供了强大的技术支持。