
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-09-23 · 当前星标 ★ 2069
使用教程
环境要求
- Python 3(本地安装方式需 python3 与 venv)
- Docker 与 docker-compose(推荐部署方式,会启动 redis、api、worker 三个容器)
- 一个可用的 SMTP 邮箱账号,用于发送转写结果邮件
- 可选:NVIDIA GPU + nvidia-docker,用于加速 Whisper 转写
- 可选:本地 Redis(在容器外跑测试时需要)
安装与启动步骤
-
1克隆项目仓库
把 WAAS 源码拉到本地,进入项目目录,后续命令都在此目录执行。
git clone https://github.com/schibsted/WAAS.git cd WAAS -
2本地安装依赖
README 给出的本地安装方式:创建 venv 虚拟环境并安装 requirements.txt 依赖。
python3 -mvenv .venv source .venv/bin/activate pip install -r requirements.txt -
3创建 .envrc 配置
在项目根目录创建 .envrc,填好站点地址、发信邮箱、SMTP 主机与免责声明等变量。
export BASE_URL=https://example.com export EMAIL_SENDER_ADDRESS=example@example.com export EMAIL_SENDER_PASSWORD=example export EMAIL_SENDER_HOST=smtp.example.com export DISCLAIMER='This is a <a href="example.com">disclaimer</a>' export ALLOWED_WEBHOOKS_FILE='allowed_webhooks.json' export LOG_EMAIL=true -
4配置 webhook 白名单
在项目根目录新建 allowed_webhooks.json(该文件被 git 忽略),列出合法 webhook 的 url 和你生成的 token。
[ { "id": "77c500b2-0e0f-4785-afc7-f94ed529c897", "url": "https://myniceserver.com/mywebhook", "token": "frKPI6p5LxxpJa8tCvVr=u5NvU66EJCQdybPuEmzKNeyCDul2-zrOx05?LwIhL5N" } ] -
5用 compose 启动
以 .envrc 作为环境变量文件启动整套服务,会拉起 redis、api(flask)、worker(rq)三个容器。
docker-compose --env-file .envrc up -
6启用 GPU 加速
可选:有 NVIDIA GPU 时把 docker-compose.yml 的 dockerfile 改为 Dockerfile.gpu,并取消 devices 设备预留注释后重新启动。
docker-compose --env-file .envrc up -
7运行测试
可选:在容器内直接执行 pytest;在容器外测试需先启动 Redis 并传入环境变量。
pytest
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
BASE_URL | 是 | 服务对外访问地址,用于生成邮件里的下载链接 | https://example.com |
EMAIL_SENDER_ADDRESS | 是 | 发送转写结果邮件的发信邮箱地址 | example@example.com |
EMAIL_SENDER_PASSWORD | 是 | 发信邮箱的密码或授权码 | example |
EMAIL_SENDER_HOST | 是 | SMTP 服务器主机地址 | smtp.example.com |
DISCLAIMER | 否 | 网页上展示的免责声明文本,可含 HTML 链接 | This is a <a href="example.com">disclaimer</a> |
ALLOWED_WEBHOOKS_FILE | 是 | 指向允许的 webhook 白名单 JSON 文件路径 | allowed_webhooks.json |
如何确认成功
docker-compose 日志显示 redis、api、worker 三个容器正常启动,浏览器打开 BASE_URL 能进入 Jojo 上传界面。
常见问题
Q:怎么让转写使用 GPU?
A:安装 nvidia-docker,把 docker-compose.yml 的 dockerfile 改为 Dockerfile.gpu,并取消 deploy.devices 的 nvidia 注释,然后照常用 docker-compose --env-file .envrc up 启动,worker 即走 GPU。
Q:转写完成后结果怎么拿到?
A:任务完成后会往你配置的发信邮箱发送一封含下载链接的邮件,可直接下载 Jojo 文件、SRT 或纯文本;把 Jojo 文件传回前端还能进入编辑器校对。
Q:想集成到自己的系统怎么办?
A:调用 API 的 POST /v1/transcribe,提交一个新的转写任务加入队列;也可在 allowed_webhooks.json 中登记 webhook,让结果回调到你的服务。
Q:在容器外跑测试报 Redis 连接错误?
A:需要先用 docker-compose 起好 Redis,再用 ENVIRONMENT=test BASE_URL=http://localhost REDIS_URL=redis://localhost:6379 pytest -v 运行。
Q:本地调试不想真发邮件?
A:在 .envrc 中设置 LOG_EMAIL=true,邮件内容会打印到控制台,便于排查。
注意事项
- allowed_webhooks.json 会被 git 忽略,需自行在项目根目录创建,勿提交含真实 token 的文件。
- 用 webhook.site 做测试可以,但不要提交或转写隐私数据。
- docker-compose 会同时启动 redis、api、worker 三个容器,缺一不可。
- Jojo 前端编辑器在浏览器本地运行,校对内容不会上传服务器。
核心亮点
- 自带任务队列,多个转写请求自动排队,避免并发把 GPU/CPU 打满
- 同时提供 Web GUI 和 HTTP API,既能手动上传文件也能被其他程序集成
- 基于 OpenAI Whisper,可自托管,音频不必上传第三方服务,隐私可控
不足之处
- 依赖 Whisper 本地环境与模型文件,首次部署和模型下载有一定门槛
- 项目以 JavaScript 为主,模型推理性能受底层 Whisper 实现和硬件限制
适用场景
- 个人或小团队搭建私有语音转文字服务,批量处理会议录音
- 内容创作者把视频/播客上传后自动生成字幕文本
- 开发者通过 API 把语音转写能力接入自己的应用或工作流
替代项目
whisper.cpp、faster-whisper、whisperX
上一篇:whisper-plus
下一篇:whisperIME
同类项目推荐
sonus
开源
Node 里离线监听热词,唤醒后再转文字,不依赖云。
:speech_balloon: /so.nus/ STT (speech to text) for Node with offline hotword detecti···
NeMo-text-processing
开源
把口语文本和书面文本互转,ASR/TTS 预处理少写正则
NeMo text processing for ASR and TTS
X2-Turn
开源
一边转写一边判断该不该接话,降低对话延迟
Frame-Synchronous Dual-Head Modeling for Joint Streaming ASR and Turn State Predicti···
whisper-subs
开源
Jellyfin 本地自动生成字幕,音频不出服务器
Jellyfin plugin for local AI-powered subtitle generation using Whisper - all process···
react-native-spokestack
开源
给 React Native 应用加上语音交互,一句话搞定识别、合成和理解
Spokestack: give your React Native app a voice interface!
AriaType
开源
动口不动手,本地语音输入秒变文字,跨应用高效干活
Voice-driven writing, input, and cross-app work for your desktop.
myG2P
开源
把缅甸语文字变音素,让语音识别和合成更准。
Myanmar (Burmese) Language Grapheme to Phoneme (myG2P) Conversion Dictionary for spe···
auto-caption
开源
开麦即出字幕,会议直播网课实时上屏
A cross-platform real-time subtitle display software. 一个跨平台的实时字幕显示软件。
crisperwhisper-turkce-kelime-zam···
开源
4GB显存跑土耳其语逐字转写,带词级时间戳
Verbatim speech-to-text with word timestamps on a 4 GB GPU: CrisperWhisper 2.0 Turbo···