Docs / Reference
Changelog
Recent changes to the public fermion package, verified against the shipped package source.
0.2.11
- Performance improvements and bug fixes.
- Containers:
phonon-cpu:2.0.9(amd64 and arm64) andphonon-cuda:1.0.8run this release.
0.2.10
- Faster on Intel and AMD processors. Phonon-2 loads much faster and decodes faster on Linux and on Intel Macs, and uses less memory while it runs. Transcripts are unchanged, byte for byte.
- Segment timestamps.
segmentsholds one entry per sentence or pause-sized stretch of speech, withstartandendin seconds from the start of the file and its text; the segment texts joined with single spaces give the transcript.fermion transcribe phonon-2 meeting.wav --jsonreturns them, andfermion servefillssegmentsinverbose_jsonin the OpenAI shape. - One-line install.
pip install fermion-researchbrings everything the CPU engine needs on Linux, Windows and Intel Macs. On Apple silicon,pip install "fermion-research[mlx]"adds the MLX speech runtime. FERMION_CPU_TIERruns the tier it names.- Containers:
phonon-cpu:2.0.8(amd64 and arm64) runs this release; inphonon-cuda:1.0.7,transcribe --jsonreturns segments and word timestamps.
0.2.9
- Hotwords on every Phonon-2 engine. Give Phonon-2 up to 25 names and terms (people, products, places, jargon) and it favours them whenever the audio is close; nothing is ever penalised, so the audio still decides. Without hotwords every transcript is unchanged.
fermion transcribeandfermion listentake--hotwords(or--hotwords @names.txt); the Python API takeshotwords=[...];--hotword-lambda(hotword_lambda=) sets how hard the listed words pull.- The server honours the OpenAI
promptfield as a vocabulary list and takes an explicithotwordsfield. Each request’s words apply to that request only. - Hotwords work on Apple silicon, on Linux, Windows and macOS CPUs, and in the CUDA image
phonon-cuda:1.0.6.
0.2.8
- Intel Macs run Phonon-2 through the CPU engine. The engine is chosen on its own;
fermion describeshows the tier (AVX2 on Core i5/i7/i9 and Xeon Macs, a baseline tier on parts without it). - Python 3.10 to 3.12 on Intel Macs; the package resolves
torch<2.3,numpy<2andtransformers<5.1on that platform only. - The Phonon-1 family is not available on Intel Macs; the command says so in one line, before any download.
- First published on PyPI as part of 0.2.9.
0.2.7
- Word timestamps.
fermion transcribe phonon-2 clip.wav --jsonreturnswords, one entry per word with its start and end in seconds from the start of the file, placed correctly on long audio. fermion servehonourstimestamp_granularities: withword, theverbose_jsonresponse carrieswordsandsegments.- Both Phonon-2 engines return timings, the Apple-silicon engine and the CPU engine on Linux, Windows and macOS. Transcripts are unchanged.
0.2.6
fermion servewith a name that is not a published model or a local directory stops in one line before any network request.fermion transcribechecks that the audio file exists before it loads a model.fermion modelsnames the model in its example commands; help texts describe the package, the CPU platforms and the model-firstserveform.
0.2.5
- The CPU engine reads the processor’s features before it loads a kernel (dotprod, i8mm and SVE on 64-bit Arm; SSE4.1, AVX2, AVX-512 and AMX on x86-64) and picks the matching tier.
- Arm processors without dotprod (Raspberry Pi 3 and 4, Cortex-A53 and A72 boards) and x86-64 processors without AVX2 run Phonon-2 on a baseline tier instead of stopping.
fermion describeandphonon describeprint the processor features found, the tier chosen and the binaries loaded, with--jsonfor scripts.- The package carries its Apache-2.0 licence text and NOTICE file.
0.2.4
- Every command names its model, as in
phonon transcribe meeting.wavorfermion transcribe phonon-2 meeting.wav. A command without a model prints the model names and exits. - The
phonon,phonon-2andphonon-1commands run a fixed model. fermion servetakes--unix-socketfor an owner-only local socket and--threadsfor the CPU engine.- The containers phonon-cpu 2.0.3 and phonon-cuda 1.0.4 take the model first and keep it in the
phonon-cachevolume.
0.2.3
- The command line checks it can read audio before downloading a model.
fermion modelsdescribes each model in plain words.- The README lists the CPU and NVIDIA container images.
0.2.2
fermion servewith its default model starts again with transformers 5.17.- Windows:
fermion speech benchprints on consoles that cannot show Unicode. - Linux: the glibc note appears before any download.
0.2.1
- Windows:
fermioncommands start again; in 0.2.0 every command stopped as soon as it was launched. - Linux: on glibc older than 2.28 the CPU engine says so and, once libsndfile1 is installed, runs a slower full-precision path instead of failing to load.
- Documentation: the README names Phonon-2 as the default speech model, lists the names that select each model (
phonon-2,phonon2,phonon,speech,sttandasrfor Phonon-2;phonon-1for Phonon-1), usesphonon-2in the serve example, and describes the CPU speed machine as eight cores (16 vCPU). - Known:
fermion servewith its default model does not start on macOS and Linux x86-64 with transformers 5.17; usefermion serve phonon-2, or pintransformers<5.17.
0.2.0
- New speech model: Phonon-2 (
FermionResearch/Phonon-2), selected with--model phonon-2. It is a 164 MB download, and it averages 5.21 % word error on the seven public test sets of the Open ASR Leaderboard. On an M5 MacBook Air it transcribes a single stream at 174 times realtime. The weights are released under CC-BY-4.0. - Phonon-2 is now the default speech model.
fermion transcribeandfermion listenwithout--modelrun it,fermion serve phonon-2serves it, and the namephononselects it everywhere. Phonon-1 remains available as--model phonon-1. - Phonon-2 runs on CPUs on macOS, Linux (x86-64 and ARM) and Windows. On eight Zen 5 cores (16 vCPU) it transcribes a single stream at 143 times realtime, at the accuracy of full precision (3.94 % word error on LibriSpeech test-other against 3.91 %); 52 times on Google Axion, 40 times on the CPU of an M5 MacBook Air.
FERMION_DEVICE=cpuselects the CPU engine on a Mac. - Long recordings are cut at pauses, and each window is decoded with 0.25 s of silence at both ends so that words at the edges stay whole.
fermion speech bench --audio recording.wavreports load time, milliseconds of compute per second of audio, the realtime factor and peak memory for the selected model on the current machine.- Requirements: Python 3.10 to 3.14. Apple silicon runs the MLX engine; the CPU engine on Linux needs glibc 2.28 or newer (Ubuntu 18.10 or newer, Debian 10+, RHEL 8+).
0.1.24
- Fixes a startup failure on systems with a broken torchaudio install; the runtime now starts and tells you how to remove the broken package.
- Requirements: on Linux x86-64 the CPU speech engine needs glibc 2.34 or newer (Ubuntu 22.04, Debian 12, RHEL 9 and later) and about 7 GB of free RAM. macOS and Windows requirements are unchanged.
0.1.23
- Long recordings are transcribed in full.
fermion transcribeandPOST /v1/audio/transcriptionsdecoded a whole file in one pass with a token budget sized for a single utterance, so anything over about two minutes came back truncated and anything over about three degenerated into a repeated letter. Audio longer than 35 s is now cut into 25 to 35 s windows at pauses and each window is decoded on its own, on both the MLX and the CPU engine. Audio up to 35 s takes the unchanged single-pass path, so short-utterance transcripts are byte-identical to 0.1.22. --jsonaddswall_secondsnext to the decode-onlydecode_seconds, per-segment start and end times,segment_count, andtruncated.--verboseprints the same, labelled.verbose_jsonon the server fillssegmentsand reportstruncated.- One always-on line at engine start names the decode backend (mlx or cpu) and the model, and says on the first run in a new environment that the run compiles once and later runs are fast.
- A Python running under Rosetta on an Apple-silicon Mac is told so, with the fix (an arm64 Python), instead of being refused as an Intel Mac.
0.1.22
- The CPU speech engine now also runs on ARM Linux (aarch64):
fermion transcribeand a speechfermion servework on 64-bit ARM Linux machines with the same install line as x86-64 Linux. The models are the same verified downloads, and transcription stays deterministic. - The CPU engine's first run no longer prints a spurious advisory line from the model backend's import.
fermion models: one transcribe example in the usage footer.
0.1.21
- Speech on plain CPU:
fermion transcribeand a speechfermion servenow run on x86-64 Linux and Windows, and on a Mac without the MLX runtime.pip install fermion-research torch safetensors soundfile scipy zstandardis the whole setup; the models are the same verified downloads. Apple silicon keeps the MLX engine as its default, andFERMION_DEVICE=cpuselects the CPU engine explicitly. - Transcription decodes deterministically on every engine; transcripts across engines are same-accuracy, not word-identical.
fermion modelsreports which speech engine this machine runs.
0.1.20
- Package documentation copy edits; no behavior change.
fermion models: shorter speech model summaries.
0.1.19
- Package documentation refreshed for the Phonon-1 release.
0.1.18
- Streaming speech over WebSocket: a speech
fermion servealso mountsGET /v1/audio/stream, taking one JSON config frame and then raw mono audio, and answering with partial hypotheses, final segments, and the full transcript on close.--api-keyapplies, as a Bearer header or?api_key=for browser clients. fermion serve --modelpointed at a local speech model directory now serves speech; it previously failed down the chat path.
0.1.17
fermion listen: live dictation from the microphone. Partial hypotheses update one terminal line, a pause finalizes the segment, and Ctrl-C prints the full transcript to standard output.fermion listen phonon-2 --wav FILEstreams a file through the same path paced to real time.fermion --versionreads the installed package metadata instead of a maintained literal.
0.1.16
- Fresh-install fix:
mlx-lmadded to the checked speech runtime and the documented install line. Without it, a first run crashed after the model download instead of printing the install hint.
0.1.15
- Speech support:
fermion transcribeand speech serving with/v1/audio/transcriptions. - Three speech models, downloaded on first use and selected with
--model:FermionResearch/Phonon-1(the default),Phonon-1-Big, andPhonon-1-Micro.
0.1.14
- Native
--draftrouting with no PyTorch model loaded on the optimized path. --draft autoresolves to Neutrino-0.6B.fermion verifydefaults to float32 so PASS matches the identity guarantee.- Clearer reduced-precision near-tie messages.
0.1.13
- More tolerant multi-call envelope parser and private think-block guard.
- Serve-side stuck detector and tool-request sampling profiles.
- Warnings for unsupported OpenAI sampling fields.
- TF32 disabled during CUDA float32 verification.
0.1.12
- Int8 KV column in
inspect. - Clearer YaRN scope and per-model tool-calling guidance.
0.1.11 and earlier
- 0.1.11 added free-space preflight, named disk errors,
FERMION_CACHE_DIR, and post-expansion transport cleanup. - 0.1.10 added KV dtypes, experimental YaRN controls, and session memory guards.
- 0.1.9 added coded Apple Silicon downloads and live prose streaming for tool requests.
- 0.1.8 added unique tool-name aliasing, multiple KV conversations, and session statistics.
- 0.1.7 added OpenAI tools, persistent KV sessions, context clamps, and longer chat output.