Skip to content
anecho.ai
Start · quickstart

From nothing to enhanced audio in five minutes.

Anecho is one model behind one small API: load the model file, make a processor, feed it audio. This page gets that running. The routing question — which consumer downstream gets which audio — has its own guide.

  1. Step 01

    Get a key and your model

    Sign up and the dashboard shows two things: an API key and a model file stamped for your licence. Download the anecho.ai_focus_model_16khz_v4_1.anecho file — it is the model, not a pointer to one. No demo call, no procurement thread.

  2. Step 02

    Install

    @anecho-official/sdk on npm for Node 18 and later — pure JavaScript, no native build step. anecho on PyPI for Python; it pulls in numpy and torch. Both runtimes read the same model file.

  3. Step 03

    Hear it

    The CLI ships with the npm package. One command runs your own microphone through the model and plays the result back, before you write any code.

  4. Step 04

    Feed it blocks

    Make a Processor, push float32 mono blocks at 16 kHz, get the same number of samples back 15 ms later. The audio path is your process and nothing else — there is no streaming cloud API to fall back to, by design.

Install
npm install github:anecho-official/anecho-sdk
Your model file

There is one model: Focus (anecho.ai_focus_model_16khz_v4_1), 16 kHz primary-speaker isolation. The dashboard serves it as a .anecho file stamped per customer — 5.3 MB, 1.3 M parameters, 15 ms of algorithmic delay, real-time on a CPU core. The dashboard issues these files in versions; v4_1 is the default and what the demos run. Treat it like a credential: it is yours, not a public artefact.

cli · fetch it, then look inside
# your API key is also your download key — keys live in the dashboard
export ANECHO_API_KEY=sk_...

npx github:anecho-official/anecho-sdk fetch --list   # versions available to you
npx github:anecho-official/anecho-sdk fetch          # the default, sha256-verified

npx anecho inspect anecho.ai_focus_model_16khz_v4_1.anecho

No Node handy? The same endpoint speaks plain HTTP: curl -H "Authorization: Bearer $ANECHO_API_KEY" -O -J https://app.anecho.ai/api/v1/models/default

First run · your own voice
cli · no code yet
# ten seconds of your microphone, played back A/B
npx anecho mic anecho.ai_focus_model_16khz_v4_1.anecho --seconds 10

# a file through the model, with the three knobs
npx anecho process anecho.ai_focus_model_16khz_v4_1.anecho in.wav out.wav --level 0.8 --gain 3
npx anecho process anecho.ai_focus_model_16khz_v4_1.anecho in.wav out.wav --bypass   # control

--level is enhancement strength from 0 to 1, --gain lifts the kept voice in dB, --bypass passes audio through untouched so you have an honest control to compare against.

Streaming integration
import { Model, Processor, UsageReporter } from "@anecho-official/sdk";

const reporter = new UsageReporter(process.env.ANECHO_API_KEY!);
const model = Model.fromFile("anecho.ai_focus_model_16khz_v4_1.anecho");   // from your dashboard
const proc = new Processor(model, await reporter.ensureLicense());
reporter.attach(proc);
reporter.start();

// float32 at 16 kHz in, the same number of samples out, 15 ms behind.
const enhanced = proc.process(block);

The first `model.audioDelay` samples are the algorithmic delay and come back as silence — exactly as the delay says they will. Runs on CPU, no network in the audio path.

Licensing · the UsageReporter lifecycle

The processor takes a licence token, and the UsageReporter owns that token’s lifecycle: ensureLicense() returns one, caching it under ~/.anecho and refreshing it from app.anecho.ai; attach(proc) points the reporter at a processor; start() begins periodic reporting and stop() flushes and ends it. If the network goes away, processing continues on the cached token until its TTL runs out — 72 hours of offline grace.

node · the whole lifecycle
import { Model, Processor, UsageReporter } from "@anecho-official/sdk";

const reporter = new UsageReporter(process.env.ANECHO_API_KEY!);
const model = Model.fromFile("anecho.ai_focus_model_16khz_v4_1.anecho");
const proc = new Processor(model, await reporter.ensureLicense());

reporter.attach(proc);
reporter.start();
// ... stream for as long as the call lasts ...
await reporter.stop();   // flush the final usage report
Next

Split pipeline

Your VAD and your transcriber want different audio. How to route both from one capture without breaking alignment.

Read
Next

SDK reference

Model, Processor, Vad, UsageReporter and the CLI — every class and parameter, in both runtimes.

Read