← 开源
schibsted

WAAS

Whisper as a Service (GUI and API with queuing for OpenAI Whisper)

InfrastructureDeploy & ServeJavaScript
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
2.07k
Star
115
Fork
+-1
本周
12
贡献者
创建于 2022-10-13 · 更新于 2026-10-14 · 今日第 9023 名
主要开发者
Johannes-Andersen3ddyBoijgorset

schibsted/WAAS 排名第 9,023,有 2,074 个星标。

同类别比较

schibsted/WAAS 排名第 9,023,此处有 8 个同类条目;marcoslucianops/DeepStream-Yolo 排名第 9,025。

同类别比较
名称排名指标
feldera/feldera8,953
语言:
Rust
星标数:
2,122
分叉数:
170
简介:
The Feldera Incremental Computation Engine
deepspeedai/DeepSpeed-MII8,964
语言:
Python
星标数:
2,115
分叉数:
192
简介:
MII makes low-latency and high-throughput inference possible, powered by DeepSpeed.
vitoplantamura/OnnxStream9,008
语言:
C++
星标数:
2,088
分叉数:
99
简介:
Lightweight inference library for ONNX files, written in C++. It can run Stable Diffusion XL 1.0 on a RPI Zero 2 (or in 298MB of RAM) but also Mistral 7B on desktops and servers. ARM, x86, WASM, RISC-V supported. Accelerated by XNNPACK. Python, C# and JS(WASM) bindings available.
guinmoon/LLMFarm9,013
语言:
C
星标数:
2,080
分叉数:
186
简介:
llama and other large language models on iOS and MacOS offline using GGML library.
marcoslucianops/DeepStream-Yolo9,025
语言:
Python
星标数:
2,071
分叉数:
464
简介:
NVIDIA DeepStream SDK 8.0 / 7.1 / 7.0 / 6.4 / 6.3 / 6.2 / 6.1.1 / 6.1 / 6.0.1 / 6.0 / 5.1 implementation for YOLO models
BoCloud/folib9,033
语言:
Java
星标数:
2,064
分叉数:
137
简介:
全语言制品仓库,涵盖npm、Maven、PyPi、Docker、Gradle、SBT、Cocoapods、Swift、RPM、Debian、PHP、Go、Pub、Ivy、NuGet、Conda、Cargo、Conan、Yarn、GitLFS、Helm、OHPM等主流工具,涵盖Huggingface 等主流AI模型仓库的代理与同步
xmanrui/OpenClaw-bot-review9,087
语言:
TypeScript
星标数:
2,023
分叉数:
383
简介:
A lightweight web dashboard for viewing all your OpenClaw Bots/Agents/Models/Sessions status at a glance.
intel/intel-extension-for-pytorch9,100
语言:
Python
星标数:
2,012
分叉数:
323
简介:
A Python package for extending the official PyTorch that can easily obtain performance on Intel platform
关键参数与规格
关键参数与规格
参数值
语言JavaScript
类别Infrastructure
子类别Deploy & Serve
关键词API
星标数2,074
分叉数115
贡献者12
创建日期2022-10-13
更新日期2026-10-14
1 天星标数0
7 天星标数-1
排名9,023
上次排名18,572
排名变化9,549
7 天星标排名16,962
上次 7 天星标排名16,957
7 天星标排名变化-5
总星标排名6,159
上次总星标排名6,154
总星标排名变化-5
README 摘录

WaaS - Whisper as a Service GUI and API for OpenAI Whisper No video support What is Jojo? Jojo is a GUI for upload and transcribe a audio or video file. After the transcription is done you get an email with download links. You can directly download a Jojo-file, SRT, or text from the email. Then you can upload a Jojo file to the frontend to come into an editor (see video). Editor The editor works 100% local in your

browser. Here can you listen to segments and fix transcriptions errors. After you are done just save the Jojo-file to your desktop. An easy way to play the selected segment is by holding down the Control-key on the keyboard. This project started out by VG API Documentation POST Add a new transcribe job to the queue. The job will be processed by the worker asynchroniously. The response will be a JSON object with that can be used to

check the status of the job. Query parameters: REQUIRED: : string or : string OPTIONAL: : string (default: automatic detection) OPTIONAL: : string (default: ) OPTIONAL: : string (default: ) : Transcribe audio to text : Transcribe then translate audio to text OPTIONAL: : string (default: ) Body: REQUIRED: : Raw data with the audio content to transcribe OPTIONS Get the available options for the transcribe route. POST Detect the language of the audio file. Query parameters: OPTIONAL: : string (default: ) Body: REQUIRED: : Raw data with the audio content to detect the language

for OPTIONS Get the available options for the detect route. GET Receive the finished job result as the requested output format. Query parameters: OPTIONAL: : string (default: ) : JSON response of the model output : Plain text file with timecodes(srt) : Plain text file of the detected text : WebVTT file with the detected text : WebVTT file with the detected text OPTIONS Get the available options for the download route. GET Get the status and metadata of the provided job. GET Get the available

length of the queue as JSON object with the key . Webhook response If using in the request parameters you will get a to the webhook url of your choice. The request will contain a header with a hash that can be used to verify the content. Check for an example on how to verify this signature using Python on the receiving end. The post payload will be a json with this content On success: On failure: Contributing Requirements Required amount

of VRAM depends on the model used. The smallest model is which requires about 1GB of VRAM. You can see the full list of models here with information about the required VRAM. The codebase is expected to be compatible with Python 3. This would be the same as the OpenAI Whisper requirements. Installation Running full setup using docker-compose First create a file with the following content: Add a json file named to the root folder of the project. The

content should be a list of valid webhooks, urls and your generated tokens like this: For testing you could use

常见问题

记录了多少星标和分叉?

schibsted/WAAS 有 2,074 个星标和 115 个分叉。

仓库排名是多少?

schibsted/WAAS 排名第 9,023。

记录的语言和类别是什么?

schibsted/WAAS 有 2,074 个星标,语言为 JavaScript,类别为 Infrastructure。

哪个仓库排名最接近?

schibsted/WAAS 与 marcoslucianops/DeepStream-Yolo 比较,后者排名第 9,025,有 2,071 个星标。

README

WaaS - Whisper as a Service

GUI and API for OpenAI Whisper

No video support

What is Jojo?

Jojo is a GUI for upload and transcribe a audio or video file. After the transcription is done you get an email with download links. You can directly download a Jojo-file, SRT, or text from the email. Then you can upload a Jojo file to the frontend to come into an editor (see video).

Editor

The editor works 100% local in your browser. Here can you listen to segments and fix transcriptions errors. After you are done just save the Jojo-file to your desktop. An easy way to play the selected segment is by holding down the Control-key on the keyboard.

This project started out by VG

API Documentation

POST /v1/transcribe

Add a new transcribe job to the queue. The job will be processed by the worker asynchroniously.

The response will be a JSON object with job_id that can be used to check the status of the job.

Query parameters:

  • REQUIRED: email_callback: string or webhook_id: string
  • OPTIONAL: language: string (default: automatic detection)
  • OPTIONAL: model: string (default: tiny)
  • OPTIONAL: task: string (default: transcribe)
    • transcribe: Transcribe audio to text
    • translate: Transcribe then translate audio to text
  • OPTIONAL: filename: string (default: untitled-transcription)

Body:

  • REQUIRED: binary data: Raw data with the audio content to transcribe

OPTIONS /v1/transcribe

Get the available options for the transcribe route.

POST /v1/detect

Detect the language of the audio file.

Query parameters:

  • OPTIONAL: model: string (default: tiny)

Body:

  • REQUIRED: binary data: Raw data with the audio content to detect the language for

OPTIONS /v1/detect

Get the available options for the detect route.

GET /v1/download/

Receive the finished job result as the requested output format.

Query parameters:

  • OPTIONAL: output: string (default: srt)
    • json: JSON response of the model output
    • timecode_txt: Plain text file with timecodes(srt)
    • txt: Plain text file of the detected text
    • vtt: WebVTT file with the detected text
    • srt: WebVTT file with the detected text

OPTIONS /v1/download/

Get the available options for the download route.

GET /v1/jobs/

Get the status and metadata of the provided job.

GET /v1/queue

Get the available length of the queue as JSON object with the key length.

Webhook response

If using webhook_id in the request parameters you will get a POST to the webhook url of your choice.

The request will contain a X-WAAS-Signature header with a hash that can be used to verify the content. Check tests/test_webhook.py for an example on how to verify this signature using Python on the receiving end.

The post payload will be a json with this content

On success:

{
  "source": "waas",
  "job_id": "09d2832d-cf3e-4719-aea7-1319000ef372",
  "success": true,
  "url": "https://example.com/v1/download/09d2832d-cf3e-4719-aea7-1319000ef372",
  "filename": "untitled-transcription"
}

On failure:

{
  "source": "waas",
  "job_id": "09d2832d-cf3e-4719-aea7-1319000ef372",
  "success": false
}

Contributing

Requirements

Required amount of VRAM depends on the model used. The smallest model is tiny which requires about 1GB of VRAM.

You can see the full list of models here with information about the required VRAM.

The codebase is expected to be compatible with Python 3.8-3.10. This would be the same as the OpenAI Whisper requirements.

Installation

python3 -mvenv .venv
source .venv/bin/activate
pip install -r requirements.txt

Running full setup using docker-compose

First create a .envrc file with the following content:

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 [disclaimer](example.com)'

export ALLOWED_WEBHOOKS_FILE='allowed_webhooks.json'
export LOG_EMAIL=true // Optional, log email content to console

Add a json file named allowed_webhooks.json to the root folder of the project. This file is ignored by git. The content should be a list of valid webhooks, urls and your generated tokens like this:

[
  {
    "id": "77c500b2-0e0f-4785-afc7-f94ed529c897",
    "url": "https://myniceserver.com/mywebhook",
    "token": "frKPI6p5LxxpJa8tCvVr=u5NvU66EJCQdybPuEmzKNeyCDul2-zrOx05?LwIhL5N"
  }
]

For testing you could use the https://webhook.site service (as long as you do not post/transcribe private data)

And set the env variable ALLOWED_WEBHOOKS_FILE=allowed_webhooks.json

Then run the following command

docker-compose --env-file .envrc up

This will start three docker containers.

  • redis
  • api running flask fra src
  • worker running rq from src

Using NVIDIA CUDA with docker-compose

If you have a NVIDIA GPU and want to use it with docker-compose, you need to install nvidia-docker.

To enable CUDA support, you need to edit the docker-compose.yml file to use the nvidia runtime:

build:
  context: .
  # use Dockerfile.gpu when using a NVIDIA GPU
  dockerfile: Dockerfile.gpu

You also have to uncomment the device reservation in the docker-compose.yml file:

deploy:
  resources:
    reservations:
      devices:
        - driver: nvidia
          capabilities: [gpu]

Then run the following command as usual:

docker-compose --env-file .envrc up

The worker will now use the GPU acceleration.

Running full setup using devcontainers

Install remote-development extensions (containers) And then in vscode do Devcontainers: open folder in container Then you are inside the api-container and can do stuff

curl

To upload a file called audunspodssounds.mp3 in norwegian from your download directory

With email callback:

curl --location --request POST 'localhost:3000/v1/transcribe?output=vtt&email_callback=test@localhost&language=norwegian&model=large' \
  --header 'Content-Type: audio/mpeg' \
  --data-binary '@/Users//Downloads/audunspodssounds.mp3'

With webhook callback:

curl --location --request POST 'localhost:3000/v1/transcribe?output=vtt&language=norwegian&model=large&webhook_callback_url=https://myniceserver.something/mywebhookid' \
  --header 'Content-Type: audio/mpeg' \
  --data-binary '@/Users//Downloads/audunspodssounds.mp3'

Running tests

$ pytest

🥳 Contributing

FAQ

How to fix [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate?

$ /Applications/Python\ 3.7/Install\ Certificates.command

How to run tests outside the docker container?

Make sure you have fired up the Redis using docker-compose and then use:

ENVIRONMENT=test BASE_URL=http://localhost REDIS_URL=redis://localhost:6379 pytest -v

排名相邻
同类项目