Docs
Browse documentation

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) and phonon-cuda:1.0.8 run 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. segments holds one entry per sentence or pause-sized stretch of speech, with start and end in 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 --json returns them, and fermion serve fills segments in verbose_json in the OpenAI shape.
  • One-line install. pip install fermion-research brings 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_TIER runs the tier it names.
  • Containers: phonon-cpu:2.0.8 (amd64 and arm64) runs this release; in phonon-cuda:1.0.7, transcribe --json returns 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 transcribe and fermion listen take --hotwords (or --hotwords @names.txt); the Python API takes hotwords=[...]; --hotword-lambda (hotword_lambda=) sets how hard the listed words pull.
  • The server honours the OpenAI prompt field as a vocabulary list and takes an explicit hotwords field. 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 describe shows 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<2 and transformers<5.1 on 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 --json returns words, one entry per word with its start and end in seconds from the start of the file, placed correctly on long audio.
  • fermion serve honours timestamp_granularities: with word, the verbose_json response carries words and segments.
  • 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 serve with a name that is not a published model or a local directory stops in one line before any network request.
  • fermion transcribe checks that the audio file exists before it loads a model.
  • fermion models names the model in its example commands; help texts describe the package, the CPU platforms and the model-first serve form.

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 describe and phonon describe print the processor features found, the tier chosen and the binaries loaded, with --json for 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.wav or fermion transcribe phonon-2 meeting.wav. A command without a model prints the model names and exits.
  • The phonon, phonon-2 and phonon-1 commands run a fixed model.
  • fermion serve takes --unix-socket for an owner-only local socket and --threads for 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-cache volume.

0.2.3

  • The command line checks it can read audio before downloading a model.
  • fermion models describes each model in plain words.
  • The README lists the CPU and NVIDIA container images.

0.2.2

  • fermion serve with its default model starts again with transformers 5.17.
  • Windows: fermion speech bench prints on consoles that cannot show Unicode.
  • Linux: the glibc note appears before any download.

0.2.1

  • Windows: fermion commands 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, stt and asr for Phonon-2; phonon-1 for Phonon-1), uses phonon-2 in the serve example, and describes the CPU speed machine as eight cores (16 vCPU).
  • Known: fermion serve with its default model does not start on macOS and Linux x86-64 with transformers 5.17; use fermion serve phonon-2, or pin transformers<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 transcribe and fermion listen without --model run it, fermion serve phonon-2 serves it, and the name phonon selects 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=cpu selects 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.wav reports 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 transcribe and POST /v1/audio/transcriptions decoded 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.
  • --json adds wall_seconds next to the decode-only decode_seconds, per-segment start and end times, segment_count, and truncated. --verbose prints the same, labelled. verbose_json on the server fills segments and reports truncated.
  • 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 transcribe and a speech fermion serve work 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 transcribe and a speech fermion serve now run on x86-64 Linux and Windows, and on a Mac without the MLX runtime. pip install fermion-research torch safetensors soundfile scipy zstandard is the whole setup; the models are the same verified downloads. Apple silicon keeps the MLX engine as its default, and FERMION_DEVICE=cpu selects the CPU engine explicitly.
  • Transcription decodes deterministically on every engine; transcripts across engines are same-accuracy, not word-identical.
  • fermion models reports 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 serve also mounts GET /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-key applies, as a Bearer header or ?api_key= for browser clients.
  • fermion serve --model pointed 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 FILE streams a file through the same path paced to real time.
  • fermion --version reads the installed package metadata instead of a maintained literal.

0.1.16

  • Fresh-install fix: mlx-lm added 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 transcribe and 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, and Phonon-1-Micro.

0.1.14

  • Native --draft routing with no PyTorch model loaded on the optimized path.
  • --draft auto resolves to Neutrino-0.6B.
  • fermion verify defaults 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.