Views
No views yet
Kubernetes, FastAPI, PRD, Code Review) as well as mixed Chinese-English speech, effectively addressing the term-misrecognition and code-switching segmentation issues common to general-purpose models — so transcripts come out clear, domain-aware, and accurate. The service runs fully locally, works out of the box, and keeps audio and transcript data on your machine.brew install, then octoasr start.octoasr mentions) for editing nickname → canonical-name mappings; spoken "艾特" is normalized to @ before replacement. (v0.1.15 fixes packaging so the web page ships in the Homebrew build.)octoasr model use <name>.| Model | Base model | Quant | Size | Languages | Links |
|---|---|---|---|---|---|
| OctoASR-1.7B (default) | Qwen3-ASR | 8bit | 1.7 GB | ZH / EN | 🤗 · 🤖 · 🌟 |
| OctoASR-0.8B | Fun-ASR-Nano | 8bit | 0.8 GB | ZH / EN | 🤗 · 🤖 · 🌟 |
The model is downloaded automatically from HuggingFace or ModelScope (China mirror); the source is chosen by network environment on first run.
1brew tap Mininglamp-AI/tap
2brew install octoasr
3
4# Start (first run auto-initializes + downloads the default model)
5octoasr start
6octoasr doctor # environment check1# 1. Dependency: ffmpeg (decodes non-WAV audio)
2brew install ffmpeg
3
4# 2. Clone + install
5git clone https://github.com/Mininglamp-AI/OctoASR.git
6cd octoasr
7python3 -m venv .venv && source .venv/bin/activate
8pip install -U pip
9pip install -e .
10
11# 3. Download the model
12hf download Mininglamp-2718/OctoASR-1.7B-Instruct-1.0-MLX-8bit \
13 --local-dir models/Mininglamp-2718/OctoASR-1.7B-Instruct-1.0-MLX-8bit
14
15hf download Mininglamp-2718/fsmn-vad-mlx \
16 --local-dir models/Mininglamp-2718/fsmn-vad-mlx
17
18# Behind a China mirror:
19# HF_ENDPOINT=https://hf-mirror.com hf download ...
20
21# 4. Start the server
22python3 server.py \
23 --model-path models/Mininglamp-2718/OctoASR-1.7B-Instruct-1.0-MLX-8bit \
24 --vad-model-path models/Mininglamp-2718/fsmn-vad-mlx \
25 --host 0.0.0.0 --port 8787 --load-on-startupffmpeg / ffprobe on PATH.1# On first run, the service auto-initializes and downloads the default model
2octoasr start
3
4# Transcribe / translate an audio file
5octoasr transcribe assets/BAC009S0764W0129.wav
61from core.auto_model import AutoModel
2
3model = AutoModel(
4 model="models/Mininglamp-2718/OctoASR-1.7B-Instruct-1.0-MLX-8bit",
5 vad_model="models/Mininglamp-2718/fsmn-vad-mlx", # optional: auto-segment long audio
6)
7
8text = model.generate(
9 "assets/BAC009S0764W0129.wav",
10 task="translate", # translation task
11 target_language="zh", # target language: Chinese
12 merge_vad=True,
13)
14print(text)
15# -> "甚至出现交易几乎停滞的情况"1curl -X POST http://127.0.0.1:8787/v1/voice/transcribe \
2 -F "audio=@assets/BAC009S0764W0129.wav" \
3 -F "personal_context=## Terms\n- FastAPI\n- Kubernetes" \
4 -F "mode=smart"1{
2 "status": 200,
3 "text": "transcribed text",
4 "m": "octoasr",
5 "engine": "mlx"
6}Full API fields, limits and auth are documented under API.
@小明 → @Xiaoming). Manage entries on a visual web page — no JSON editing required:1octoasr start # Start the service (if not running)
2octoasr mentions # Open the management page in your browser📖 Full guide: Mentions
POST /v1/voice/transcribemultipart/form-data.| Field | Type | Required | Description |
|---|---|---|---|
audio | file | yes | Audio file. Supported: .wav .mp3 .ogg .webm .m4a .flac |
context_text | string | no | Existing text for append/edit modes; last 5000 chars kept |
chat_context | string | no | Chat context; last 20000 chars kept |
personal_context | string | no | Personal correction / hotword context; last 10000 chars kept |
member_context | string | no | Member context; last 5000 chars kept |
mode | string | no | smart / append_only / edit_only, default smart |
30 MiB, max duration 660 s; edit_only requires context_text.GET /v1/voice/configcurl http://127.0.0.1:8787/v1/voice/config--auth-token, requests must carry Authorization: Bearer <token>.python3 server.py --model-path <path> --auth-token "$OCTOASR_TOKEN"