一个使用 Whisper 实现的高性能 ASR(自动语音识别)服务器,支持 gRPC 和 REST API。
本项目提供了一个使用 OpenAI Whisper 模型的语音转文字服务器实现,针对不同平台和硬件加速选项进行了优化。
- gRPC 服务器
- 流式转录
- Web API
- 任务管理
- 任务状态查询
- 通过 URL 创建任务
- 通过本地文件创建任务
- API 密钥认证管理
- 任务调度
- 音频文件下载
- 语音转录
- HTTP 回调
- 身份认证
- 多平台支持
- MacOS (Metal)
- Linux (CUDA)
- Windows (CUDA)
- Rust 工具链 (1.70 或更高版本)
- CUDA 支持需要: CUDA toolkit 11.x 或更高版本
- Metal 支持需要 (MacOS): XCode 和 Metal SDK
- etcd 服务器在本地运行或可访问 (仅用于微服务 go-micro)
- 克隆仓库:
git clone https://github.com/bean-du/SpeakSense
cd SpeakSense
- 下载 Whisper 模型:
./script/download-ggml-model.sh
- 构建项目:
# 标准构建
cargo build --release
# 启用 CUDA 支持构建
cargo build --release --features cuda
# 启用 Metal 支持构建 (MacOS)
cargo build --release --features metal
ASR_SQLITE_PATH
SQLite 路径 (默认:sqlite://./asr_data/database/storage.db?mode=rwc
)ASR_AUDIO_PATH
音频文件路径 (默认:./asr_data/audio/
)ETCD_DEFAULT_ENDPOINT
Etcd 端点 (默认:http://localhost:2379
)ASR_MODEL_PATH
Whisper 模型路径 (默认:./models/ggml-large-v3.bin
)
cargo run --release
cargo run --release --features cuda
首先设置 Metal 资源路径:
export GGML_METAL_PATH_RESOURCES="./resources"
cargo run --release --features metal
docker 目前仅支持 Linux CUDA x86_64 平台
使用 Docker Compose 是最简单的启动方式:
- 创建必要的目录:
mkdir -p models asr_data/audio asr_data/database
- 下载 Whisper 模型:
./script/download-ggml-model.sh
- 启动服务器:
# 标准版本
docker-compose up -d
# 启用 CUDA 支持
ASR_FEATURES=cuda docker-compose up -d
# 启用 Metal 支持 (MacOS)
ASR_FEATURES=metal docker-compose up -d
服务器将在以下地址提供服务:
- REST API: http://localhost:7200
- gRPC: localhost:7300
# 使用本地 wav 文件
cargo run --example asr_client -- -i 2.wav
# 指定服务器地址
cargo run --example asr_client -- -i test/2.wav -s http://127.0.0.1:7300
# 指定设备 ID
cargo run --example asr_client -- -i input.wav -d test-device
curl -X POST http://localhost:7200/api/v1/asr/tasks \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"audio_url": "https://example.com/audio.wav"}'
curl http://localhost:7200/api/v1/asr/tasks/{task_id} \
-H "Authorization: Bearer your-api-key"
服务器支持多种 Whisper 模型大小。你可以从 Hugging Face 下载不同的模型: https://huggingface.co/ggerganov/whisper.cpp/tree/main
- CUDA: 根据 GPU 内存调整批处理大小和工作线程数
- Metal: 确保正确配置资源路径
欢迎提交 Pull Request 来贡献代码!
本项目采用 Apache License 2.0 许可证。详见 LICENSE 文件。
- OpenAI Whisper
- whisper.cpp
- whisper-rs