Flatten package layout and add Gitea CI
Some checks failed
CI / CLI (push) Has been cancelled
CI / Backend (push) Has been cancelled

This commit is contained in:
2026-05-24 12:43:03 +02:00
parent 8cd7385eb8
commit 9fd0e707f0
11 changed files with 108 additions and 28 deletions

62
.gitea/workflows/ci.yml Normal file
View File

@@ -0,0 +1,62 @@
name: CI
on:
push:
branches:
- main
pull_request:
jobs:
backend:
name: Backend
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Set up Python
uses: https://github.com/actions/setup-python@v5
with:
python-version: "3.13"
- name: Install backend dependencies
working-directory: backend
run: |
python -m pip install --upgrade pip
python -m pip install -e .[dev]
python -m pip install build
- name: Test backend
working-directory: backend
run: python -m pytest
- name: Build backend package
working-directory: backend
run: python -m build
cli:
name: CLI
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Set up Python
uses: https://github.com/actions/setup-python@v5
with:
python-version: "3.13"
- name: Install CLI dependencies
working-directory: cli
run: |
python -m pip install --upgrade pip
python -m pip install -e .[dev]
python -m pip install build
- name: Test CLI
working-directory: cli
run: python -m pytest
- name: Build CLI package
working-directory: cli
run: python -m build

View File

@@ -1,11 +1,15 @@
# whisper-remote # whisper-remote
Two separate Python packages live in this repo: A split repo for running the upstream `openai/whisper` CLI remotely.
Two separate Python packages live here:
- `backend/`: FastAPI wrapper around the upstream `whisper` CLI - `backend/`: FastAPI wrapper around the upstream `whisper` CLI
- `cli/`: local `whisper-remote` command that forwards work to the remote API - `cli/`: local `whisper-remote` command that forwards work to the remote API
## Backend The repo also includes a Gitea Actions workflow at `.gitea/workflows/ci.yml` that tests and builds both packages on pushes to `main` and pull requests.
## Backend setup
```bash ```bash
cd backend cd backend
@@ -15,13 +19,34 @@ uvicorn whisper_remote_backend.server:app --host 0.0.0.0 --port 8000
The backend machine must already have the upstream `whisper` CLI available on `PATH`. The backend machine must already have the upstream `whisper` CLI available on `PATH`.
## CLI ## CLI setup
```bash ```bash
cd cli cd cli
pip install -e . pip install -e .
whisper-remote ./audio.mp3 --model base --language en --output-format txt
```
PowerShell:
```powershell
$env:WHISPER_REMOTE = "http://your-server:8000"
whisper-remote .\audio.mp3 --model base --language en --output-format txt
```
Bash:
```bash
export WHISPER_REMOTE=http://your-server:8000 export WHISPER_REMOTE=http://your-server:8000
whisper-remote ./audio.mp3 --model base --language en --output-format txt whisper-remote ./audio.mp3 --model base --language en --output-format txt
``` ```
By default the CLI prints the transcript to stdout. Use `--to-file` to save the returned transcript locally. ## Supported v1 options
- model selection
- language forwarding
- transcript output formats: `txt`, `vtt`, `srt`, `tsv`, `json`
- file upload to the backend
- backend-side cleanup of uploaded and generated files after each request
By default the CLI prints the returned transcript to stdout. Use `--to-file` to save it locally.

View File

@@ -2,6 +2,8 @@
FastAPI wrapper around the upstream `whisper` CLI from `openai/whisper`. FastAPI wrapper around the upstream `whisper` CLI from `openai/whisper`.
Package layout is flat in this folder: `whisper_remote_backend/server.py`.
## Run ## Run
```bash ```bash
@@ -21,3 +23,8 @@ Multipart form fields:
- `output_format`: `txt`, `vtt`, `srt`, `tsv`, or `json` - `output_format`: `txt`, `vtt`, `srt`, `tsv`, or `json`
The response body is the transcript artifact itself. The backend deletes the uploaded file and generated output after each request. The response body is the transcript artifact itself. The backend deletes the uploaded file and generated output after each request.
## Notes
- The backend host must already have the upstream `whisper` command on `PATH`.
- The included Gitea Actions workflow runs backend tests and package builds automatically.

View File

@@ -22,9 +22,3 @@ dev = [
"httpx>=0.28.0,<1.0.0", "httpx>=0.28.0,<1.0.0",
"pytest>=8.3.0,<9.0.0", "pytest>=8.3.0,<9.0.0",
] ]
[tool.setuptools]
package-dir = {"" = "src"}
[tool.setuptools.packages.find]
where = ["src"]

View File

@@ -2,6 +2,8 @@
Local CLI that forwards media files to a remote `whisper-remote-backend` server. Local CLI that forwards media files to a remote `whisper-remote-backend` server.
Package layout is flat in this folder: `whisper_remote_cli/main.py`.
## Run ## Run
```bash ```bash
@@ -10,4 +12,11 @@ export WHISPER_REMOTE=http://127.0.0.1:8000
whisper-remote ./audio.mp3 --model base --language en --output-format txt whisper-remote ./audio.mp3 --model base --language en --output-format txt
``` ```
Use `--to-file` to save the returned transcript locally. PowerShell:
```powershell
$env:WHISPER_REMOTE = "http://127.0.0.1:8000"
whisper-remote .\audio.mp3 --model base --language en --output-format txt
```
Use `--to-file` to save the returned transcript locally. Without it, the CLI prints the transcript body to stdout.

View File

@@ -19,9 +19,3 @@ dev = [
[project.scripts] [project.scripts]
whisper-remote = "whisper_remote_cli.main:main" whisper-remote = "whisper_remote_cli.main:main"
[tool.setuptools]
package-dir = {"" = "src"}
[tool.setuptools.packages.find]
where = ["src"]

View File

@@ -1,11 +0,0 @@
from __future__ import annotations
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
SRC = ROOT / "src"
if str(SRC) not in sys.path:
sys.path.insert(0, str(SRC))