Skip to content

Releases: fermionresearch/phonon

fermion-research 0.2.15

Choose a tag to compare

@fermionresearch fermionresearch released this 24 Oct 12:17
  • fermion serve on an address other than localhost now requires --api-key.
  • Phonon models load faster on Apple silicon; long recordings use less memory.
  • Containers: phonon-cpu:2.0.12 (amd64 and arm64) and phonon-cuda:1.0.11 run this release. phonon-cuda starts much faster and transcribes longer files.

Performance improvements and bug fixes.

pip install -U fermion-research

fermion-research 0.2.14

Choose a tag to compare

@fermionresearch fermionresearch released this 23 Oct 21:24
  • Fixes a crash when a model is used from two threads at once, or loaded again in the same process.
  • fermion serve accepts long recordings as uploads.
  • Containers: phonon-cpu:2.0.11 (amd64 and arm64) and phonon-cuda:1.0.10 run this release.

Performance improvements and bug fixes.

pip install -U fermion-research

fermion-research 0.2.13

Choose a tag to compare

@fermionresearch fermionresearch released this 23 Oct 15:43
  • Phonon-2.5, speech recognition in 25 languages: fermion transcribe phonon-2.5 recording.wav.
  • Phonon-2.5 English: fermion transcribe phonon-2.5-en recording.wav.
  • Smaller model downloads for the Phonon models; the same files on disk after unpacking.

Performance improvements and bug fixes.

pip install -U fermion-research

fermion-research 0.2.12

Choose a tag to compare

@fermionresearch fermionresearch released this 20 Oct 00:59
  • Neutrino models load through transformers exactly as the model cards show, in bfloat16 by default on every device.
  • The Neutrino-8B Linux runtime adds --exact, which matches the float32 reference token for token.

Performance improvements and bug fixes.

pip install -U fermion-research

fermion-research 0.2.11

Choose a tag to compare

@fermionresearch fermionresearch released this 08 Oct 11:36

Performance improvements and bug fixes.

pip install -U fermion-research

Phonon-2 CPU engine, Android arm64-v8a 0.2.11

Choose a tag to compare

Phonon-2 CPU engine, Android arm64-v8a 0.2.11

The two Phonon-2 CPU engine libraries built with the Android NDK for arm64-v8a, with the C header and a note on the call
sequence. These are the same libraries the fermion-research Python package ships for linux-aarch64 (plus one fix to the
decoder's thread pool, so phonon2_tdt_set_threads can be called again after decodes have run; the Python package carries
it from its next release), compiled against bionic: they import only libc.so, libm.so and libdl.so, carry no versioned
symbol needs, and every loadable segment is 16 KB aligned.

In the package

  • libphonon2_enc-android-arm64-v8a.so / libphonon2_tdt-android-arm64-v8a.so: the packed int8 GEMM + FastConformer encoder, and the greedy TDT decode loop, for Armv8.2-A cores with dotprod (the i8mm kernel is selected at run time where the core has it).
  • libphonon2_enc-android-arm64-v8a-base.so / libphonon2_tdt-android-arm64-v8a-base.so: the same for Armv8.0-A NEON-only cores.
  • libphonon2_cpu-android-arm64-v8a.so (+ -base): the GEMM alone, for parity with the Linux package (not needed with libphonon2_enc).
  • phonon2.h: every exported entry point; docs/android.md: tier choice, the call sequence, input layouts, frame counting, threads, return codes; docs/build_facts.txt; LICENSE, NOTICE; SHA256SUMS.txt.

Supported: Android 8.0 and later (API 26+), arm64-v8a only. Pick the tier before loading (the note shows the three
getauxval bits); a binary that assumes an instruction the core lacks must not be loaded.

What the app provides today: reading the model.fermion container index, the log-mel front end, the encoder projector
and the token-to-text step, all specified in docs/android.md. The model weights are not in this package: they come from
FermionResearch/Phonon-2 under that repository's licence (CC-BY-4.0).

Licence: the libraries and the header are Fermion Research's own work, released under the Apache License 2.0 (see LICENSE
and NOTICE in the package). The kernels ship as binaries with a header; the C sources are not part of this release.

Checksum (phonon2-android-arm64-v8a-0.2.11.zip, 177,650 bytes):

sha256  06d75b2d0e88f4e2194400e9c6c1b5987056702b36a5f95720e56ce8a11d220b

fermion-research 0.2.10

Choose a tag to compare

@fermionresearch fermionresearch released this 06 Oct 23:09

fermion-research 0.2.10

Faster on Intel and AMD processors

Phonon-2 loads much faster and decodes faster on Intel and AMD processors (Linux and Intel Macs), and uses less memory while it runs. Transcripts are unchanged, byte for byte.

Segment timestamps

segments now holds one entry per sentence or pause-sized stretch of speech, with start and end in seconds from the start of the file and the segment's text. The segment texts joined with single spaces give the transcript.

phonon transcribe meeting.wav --json      # text, words and segments: {id, start, end, text}

fermion serve fills segments in verbose_json in the OpenAI shape, so existing OpenAI clients read them as they are. The CUDA image does the same from ghcr.io/fermionresearch/phonon-cuda:1.0.7, where transcribe --json returns segments and word timestamps too.

One-line install

pip install fermion-research now brings everything the CPU engine needs, so on Linux, Windows and Intel Macs that one line is the whole setup. On Apple silicon, the mlx extra adds the MLX speech runtime:

pip install "fermion-research[mlx]"

Also

  • FERMION_CPU_TIER now runs the tier it names.
  • The CPU container ghcr.io/fermionresearch/phonon-cpu:2.0.8 (amd64 and arm64) runs this release.
pip install -U fermion-research

fermion-research 0.2.9

Choose a tag to compare

@fermionresearch fermionresearch released this 04 Oct 16:45

fermion-research 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. The audio still decides: a listed word that was not said stays out of the transcript. Hotwords work on Apple silicon, on Linux, Windows and macOS CPUs, and in the CUDA image (ghcr.io/fermionresearch/phonon-cuda:1.0.6). Without hotwords every transcript is unchanged.

phonon transcribe call.wav --hotwords "Ada, Quillon, Neutrino"      # or --hotwords @names.txt
import fermion
speech = fermion.load_speech("phonon-2")
text, _, _ = speech.transcribe("call.wav", hotwords=["Ada", "Quillon"])

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:

client.audio.transcriptions.create(model="phonon-2", file=open("call.wav", "rb"), prompt="Ada, Quillon, Neutrino")

--hotword-lambda (hotword_lambda=) sets how hard the listed words pull. See docs/hotwords.md.

Intel Macs (0.2.8, first published in this release)

  • 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 Parakeet-TDT model classes ship inside the package and are used wherever the installed transformers lacks them.
  • The Phonon-1 family is not available on Intel Macs; the command says so in one line, before any download.
pip install -U fermion-research