WAAS

上传音视频,排队自动转文字,还能调 API

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 语音识别 🍴 复刻 114 🐛 待处理 39 👀 关注 18
GitHub ↗
GitHub 星标 ★ 2069
维护状态 较活跃
是否开源 开源
定价模式 🏷️完全免费 开源免费,需自行部署

项目预览

WAAS 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类语音识别
开发团队schibsted
定价模式🏷️完全免费
价格说明开源免费,需自行部署
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议Apache-2.0
主要语言JavaScript
GitHub 星标★ 2069
上线时间2022-10-13 00:00:00
代码更新2026-10-30
仓库体积30.1 MB
本站数据更新2026-11-07
维护状态较活跃
收录时间2026-09-23
浏览次数1

项目介绍

WAAS(Whisper as a Service)把 OpenAI Whisper 语音识别模型封装成带队列的后端服务,同时提供 Web GUI 和 HTTP API。它解决的核心问题是:Whisper 模型本地部署后缺乏易用的任务调度与多用户接入方式,直接调用脚本难以处理并发、排队和结果管理。项目用 Node.js/JavaScript 实现,内置任务队列,用户通过网页上传音频或视频文件,服务端排队依次调用 Whisper 转写,完成后返回文本结果;API 方式则方便集成到其他应用或自动化流程中。支持选择模型规格、语言等参数,适合自建私有语音转写服务,避免把音频数据上传到第三方云服务。整体定位是轻量、可自托管的 Whisper 服务化方案,兼顾人工操作界面和程序化调用。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-09-23 · 当前星标 ★ 2069

使用教程

难度:进阶 约 30 分钟 部署方式:Docker 7 步

环境要求

  • Python 3(本地安装方式需 python3 与 venv)
  • Docker 与 docker-compose(推荐部署方式,会启动 redis、api、worker 三个容器)
  • 一个可用的 SMTP 邮箱账号,用于发送转写结果邮件
  • 可选:NVIDIA GPU + nvidia-docker,用于加速 Whisper 转写
  • 可选:本地 Redis(在容器外跑测试时需要)

安装与启动步骤

  1. 1克隆项目仓库

    把 WAAS 源码拉到本地,进入项目目录,后续命令都在此目录执行。

    git clone https://github.com/schibsted/WAAS.git
    cd WAAS
  2. 2本地安装依赖

    README 给出的本地安装方式:创建 venv 虚拟环境并安装 requirements.txt 依赖。

    python3 -mvenv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
  3. 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. 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. 5用 compose 启动

    以 .envrc 作为环境变量文件启动整套服务,会拉起 redis、api(flask)、worker(rq)三个容器。

    docker-compose --env-file .envrc up
  6. 6启用 GPU 加速

    可选:有 NVIDIA GPU 时把 docker-compose.yml 的 dockerfile 改为 Dockerfile.gpu,并取消 devices 设备预留注释后重新启动。

    docker-compose --env-file .envrc up
  7. 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···

★ 639 2026-10-04
NeMo-text-processing 开源

把口语文本和书面文本互转,ASR/TTS 预处理少写正则

NeMo text processing for ASR and TTS

★ 517 2026-10-02
X2-Turn 开源

一边转写一边判断该不该接话,降低对话延迟

Frame-Synchronous Dual-Head Modeling for Joint Streaming ASR and Turn State Predicti···

★ 104 2026-10-21
whisper-subs 开源

Jellyfin 本地自动生成字幕,音频不出服务器

Jellyfin plugin for local AI-powered subtitle generation using Whisper - all process···

★ 124 2026-09-23
react-native-spokestack 开源

给 React Native 应用加上语音交互,一句话搞定识别、合成和理解

Spokestack: give your React Native app a voice interface!

★ 60 2026-08-09
AriaType 开源

动口不动手,本地语音输入秒变文字,跨应用高效干活

Voice-driven writing, input, and cross-app work for your desktop.

★ 95 2026-08-09
myG2P 开源

把缅甸语文字变音素,让语音识别和合成更准。

Myanmar (Burmese) Language Grapheme to Phoneme (myG2P) Conversion Dictionary for spe···

★ 64 2026-08-09
auto-caption 开源

开麦即出字幕,会议直播网课实时上屏

A cross-platform real-time subtitle display software. 一个跨平台的实时字幕显示软件。

★ 604 2026-09-16