项目介绍:WhisperLive
WhisperLive 是一个实时转录应用程序,它利用 OpenAI 的 Whisper 模型将语音输入转换为文本输出。无论是通过麦克风输入的实时音频,还是预先录制的音频文件,WhisperLive 都可以轻松实现转录功能。
安装指南
要使用 WhisperLive,首先需要安装 PyAudio 和 ffmpeg。可以通过以下命令完成安装:
bash scripts/setup.sh
然后,通过以下命令从 pip 安装 WhisperLive:
pip install whisper-live
设置 NVIDIA/TensorRT-LLM 为 TensorRT 后端
如需使用 TensorRT 后端,需要根据 TensorRT_whisper 说明文档 进行相关设置。
快速入门
该项目的服务端支持两种后端:faster_whisper
和 tensorrt
。如果使用 tensorrt
后端,请参考 TensorRT_whisper 说明文档。
启动服务端
- 启动使用 Faster Whisper 后端的服务:
python3 run_server.py --port 9090 \
--backend faster_whisper
如果需要使用自定义模型:
python3 run_server.py --port 9090 \
--backend faster_whisper \
-fw "/path/to/custom/faster/whisper/model"
- 如果使用 TensorRT 后端,推荐使用 Docker 设置:
# 运行仅支持英语的模型
python3 run_server.py -p 9090 \
-b tensorrt \
-trt /home/TensorRT-LLM/examples/whisper/whisper_small_en
# 运行多语言模型
python3 run_server.py -p 9090 \
-b tensorrt \
-trt /home/TensorRT-LLM/examples/whisper/whisper_small \
-m
控制 OpenMP 线程数
可以通过设置 OMP_NUM_THREADS
环境变量来控制 OpenMP 使用的线程数量,这对于管理 CPU 资源和保证性能稳定非常有用。默认情况下,OMP_NUM_THREADS
为 1。可以使用参数 --omp_num_threads
来修改:
python3 run_server.py --port 9090 \
--backend faster_whisper \
--omp_num_threads 4
单模型模式
默认情况下,当服务器未指定模型时,每个客户端连接都会实例化一个新的 Whisper 模型。这样可以根据客户端请求的模型大小使用不同的模型大小。不过,这也意味着必须等待模型加载,同时内存使用会增加。
如果不希望此行为,可以设置 --no_single_model
禁用单模型模式。
客户端使用说明
初始化客户端时需要指定以下参数:
lang
: 音频输入语言,仅在使用多语言模型时适用。translate
: 设置为True
时可将任意语言翻译为英语。model
: Whisper 模型大小。use_vad
: 服务器上是否使用语音活跃检测。save_output_recording
: 如果设置为 True,会将麦克风输入保存为.wav
文件(默认情况下为 False)。output_recording_filename
: 若save_output_recording
为 True,指定保存音频的路径。max_clients
: 服务器允许的最大客户端数量,默认为 4。max_connection_time
: 每个客户端的最大连接时间,默认为 600 秒。
以下是设置客户端的代码示例:
from whisper_live.client import TranscriptionClient
client = TranscriptionClient(
"localhost",
9090,
lang="en",
translate=False,
model="small",
use_vad=False,
save_output_recording=True,
output_recording_filename="./output_recording.wav",
max_clients=4,
max_connection_time=600
)
- 转录音频文件:
client("tests/jfk.wav")
- 从麦克风进行转录:
client()
- 从 RTSP 流进行转录:
client(rtsp_url="rtsp://admin:admin@192.168.0.1/rtsp")
- 从 HLS 流进行转录:
client(hls_url="http://exampleurl.com/stream.m3u8")
浏览器扩展
WhisperLive 提供 Chrome 和 Firefox 浏览器扩展,用户可以直接在浏览器中转录音频。详细的安装和使用说明请参考 Audio-Transcription-Chrome 和 Audio-Transcription-Firefox。
Docker 中的 WhisperLive 服务器
WhisperLive 提供 GPU 和 CPU 的 Docker 运行方式:
-
GPU 版:
- 使用 Faster-Whisper:
docker run -it --gpus all -p 9090:9090 ghcr.io/collabora/whisperlive-gpu:latest
- 使用 TensorRT:
docker run -p 9090:9090 --runtime=nvidia --gpus all --entrypoint /bin/bash -it ghcr.io/collabora/whisperlive-tensorrt # Build small.en engine bash build_whisper_tensorrt.sh /app/TensorRT-LLM-examples small.en # Run server with small.en python3 run_server.py --port 9090 \ --backend tensorrt \ --trt_model_path "/app/TensorRT-LLM-examples/whisper/whisper_small_en"
-
CPU 版:
docker run -it -p 9090:9090 ghcr.io/collabora/whisperlive-cpu:latest
备注:默认使用的模型大小为“小”。如果需要构建其他模型大小的 Docker 映像,可以修改 server.py
中的设置然后重新构建 Docker 镜像。
未来工作
- 添加更多语言的翻译功能。
- 已完成 TensorRT 后端支持。
联系方式
如果需要协助进行开源或专有 AI 项目开发,可以通过 Collabora 网站或以下邮件联系:vineet.suryan@collabora.com 和 marcus.edel@collabora.com。