TingMix-Desktop model packages

Converted, signed packages of TingMix-Large for the TingMix Desktop app (local speech recognition for Taiwanese Mandarin, English and Mandarin-English code-switching). Everything runs on the user's own machine; the app never sends audio anywhere.

Status: EXPERIMENTAL. The first package (macOS, Apple silicon, MLX) was checked on 8 synthetic text-to-speech clips and one real video. It is not a quality or safety guarantee. Read "Limitations" before relying on it.

What is in a package

A package is a folder holding the model files and one manifest.signed.json. The manifest lists every file with its size and SHA-256, the immutable upstream revisions, the licence terms the user must accept, and an Ed25519 signature. The app refuses a package whose manifest signature or any file hash does not match.

Package Backend Precision Status
tingmix-large-mlx-fp32-r75071a1 MLX, macOS on Apple silicon fp32 weights EXPERIMENTAL
tingmix-large-onnx-fp32-r75071a1 ONNX Runtime CPU, Windows x86-64 fp32 graph; the other five files are the same as the MLX package EXPERIMENTAL

Files of tingmix-large-mlx-fp32-r75071a1 (the signed manifest is authoritative; this table is a convenience copy):

File Size (bytes) SHA-256
tingmix-large-mlx-fp32.safetensors 1,308,067,132 9737153e4631bc773481ec458f34f242cc7800ccc6ae6ea1c509d895181fc7ec
config.json 660 eac5da8ce273202417906279698130b09c810111d75f82882ac323102ceb7431
tingmix.json 412 5b818f0dcd7752539a449f49d834a684518e3feac006ceb929f8d6548d6beb6e
units.json 35,553 dbc1aba97abeeae49dc7556531a2f670d4dc5f39705b54ca28e84b8de9187756
tokenizer_bpe.model 245,401 959e7af76bb54482be709575e7ee3da49dce7f293f1e6e18cc99baaf2eeb0c7a
lm/lmCN_cv_parl_ascend_ntuml.charlm.json.gz 113,932,911 c8251c39fd003df0527f074287acd5094f9da476c3bcd0a5eb86a5d6d9cc5a84

The last five files are byte-identical copies of the files of the same name in TingMix-Large at the revision below. Only the .safetensors file is new.

Provenance

Item Source Revision
Audio encoder (base weights) google/embeddinggemma-2, audio tower only 914f7f89142e33e77833254d9c9b90c3cef7303b
Reader, LoRA delta, vocabulary, language model tc3oliver/TingMix-Large 75071a1260fb21874f150df6ebd53716ac423f13
Reference code the pipeline follows tc3oliver/embed2asr, tc3oliver/tingmix (Apache-2.0) b58275785501c084610b1570f1a446a31da5f933, f44cbdbd2cd99598c99cf8d60da6cb41bb15d1db
Converter experiments/macos/mlx/convert.py in the TingMix Desktop repository (source not yet published) commit 0b32104e54dfed0ba6ce4a6f70bf0fa8d78b87c5

This is a modified copy of the Google weights (LoRA merged, not further trained). From google/embeddinggemma-2 only the audio tower was kept (text and vision towers dropped). The 96 LoRA pairs (rank 16, alpha 32, all 12 conformer layers) of TingMix-Large were merged into the tower weights in fp32 (W' = W + 2.0 * B A), the convolution weights were transposed to MLX layouts, the reader's GRU weights were repacked to the MLX gate layout, and everything was stored as fp32 in one safetensors file. No further training took place. Conversion environment: MLX 0.32.4, transformers 5.19.0 (see NOTICE).

Model summary: audio tower about 304.8 M parameters (128-bin log-mel, convolutional subsampling, 12 conformer layers, 25 frames/s, 1536-dimensional features), GRU-CTC reader about 22.2 M parameters over 5,025 units (CJK characters plus 400 English BPE pieces), greedy CTC or CTC prefix beam search with a character 5-gram language model (alpha 0.35, beta 1.5, beam 16, the settings recommended by the TingMix-Large card). The model is offline (bidirectional, 29.5 s window); the app produces live captions by re-decoding the open speech segment.

Using the files outside the app

The package is laid out for the TingMix Desktop loader, not for transformers. tingmix-large-mlx-fp32.safetensors holds the audio tower and reader weights as fp32 tensors in MLX layouts (see Provenance for the transposes); config.json and tingmix.json give the architecture and decoding settings; units.json maps CTC output ids to characters and BPE pieces; the language model is a gzipped JSON character 5-gram table. To run the model in Python, use the original TingMix-Large release with its reference code instead.

Intended use

Local, on-device transcription of speech in Mandarin (Taiwan), English, and sentences that mix them, through the TingMix Desktop app. Not intended for: speaker identification, surveillance or covert recording, legal, medical or safety-critical transcripts without human review, or any use prohibited by the policy linked in "Licence and use restrictions".

How the Desktop app uses this repository

  1. The app fetches a signed catalog entry (or the user imports the folder by hand; an offline import is verified exactly like a download).
  2. It checks the Ed25519 signature with a public key built into the app, then every file's size and SHA-256. A mismatch, an unknown file, a truncated file or an older release (anti-rollback serial) is rejected.
  3. Before installing, it shows the licence terms listed in the manifest and records that the user accepted them.
  4. The verified package is activated atomically; the previous version is kept for rollback. Sessions then load from the local cache with no network.
  5. Nothing in a package is executed or unpickled: only safetensors, JSON, SentencePiece and gzip data files are accepted.

Limitations (measured and inherited)

Measured by the TingMix Desktop project:

  • Parity, not accuracy. On 8 synthetic text-to-speech clips (Mandarin, English, mixed; 1.4 to 34.6 s) this package's greedy and beam+LM output equals the PyTorch CPU fp32 reference, text for text. That shows the conversion is faithful on those clips. It says nothing about real speakers; those clips are machine-generated speech.
  • Real video, one clip. A 527 s zh-TW product-review video (informal speech, background music, English brand names) decoded through the app's file path gave a character error rate of about 0.32 against uploader subtitles (approximate reference), with beam+LM (0.32 greedy). Hypotheses were about 20 % shorter than the reference (deletions in fast speech) and brand names were mostly wrong; rare proper nouns can fail even when every character is in the vocabulary. The language model did not help on this clip, and segmentation was not the cause. This is one clip: do not read it as an expected CER, and treat the model as out of domain for consumer video with music until more is measured.
  • Noise. With the app's original fixed-threshold voice detector, background noise produced spurious one-character captions and segments that never ended. The Desktop project has since built an adaptive detector and a confidence filter (measured on synthetic noise: speech coverage stays 1.0 down to 15 dB signal-to-noise ratio, falls to 0.85 to 0.94 at 10 dB, and nearly all speech is missed at 5 dB). A nearby second talker can still trigger captions.
  • Speed and memory on an Apple M4 Max with MLX: about 64 ms warm decode for 7.5 s of audio with beam+LM; worker peak memory about 2.2 GiB. Other machines were not measured.

Inherited from TingMix-Large (as published by its author; not re-measured here): English accuracy is well behind Whisper large-v3; numbers are produced in spoken form only (no digits); error rates on the author's test sets were 12.26 % CER (Common Voice zh-TW), 17.41 to 17.86 % CER (Taiwan Parliament), 20.76 % MER (ASCEND code-switching), 19.88 % WER (FLEURS en), 7.89 % WER (LibriSpeech test-clean); ASCEND speakers are from Hong Kong and Parliament references are not verbatim.

Training data and licences of the data

TingMix-Large was trained on Common Voice zh-TW and English, Taiwan Parliament speech, LibriSpeech, VoxPopuli, AMI, FLEURS, People's Speech, ASCEND and the NTUML2021 train split; the language model was built from the transcripts of Common Voice, Parliament, ASCEND and NTUML2021 (test sentences removed). No training audio or transcripts are distributed here. These are the facts recorded from the upstream cards and dataset cards (2026-10-17); this repository does not resolve them:

Data Licence as published Note
Common Voice zh-TW / en CC0 Speakers must not be identified
VoxPopuli CC0 Audio: (c) European Union, source: European Parliament
LibriSpeech CC BY 4.0 Panayotov et al., 2015
AMI CC BY 4.0 Carletta et al.
FLEURS CC BY 4.0 Conneau et al., 2022
People's Speech ("clean") listed as CC BY; the dataset card lists CC BY and CC BY-SA variants which variant was used is not documented
ASCEND CC BY-SA 4.0 Lovenia et al., LREC 2022. ShareAlike: the TingMix-Large author's own review reads this conservatively as possibly applying to derived weights and the language model
Taiwan Parliament speech CC BY-NC 4.0 NonCommercial. The TingMix-Large author's own review states that the weights and the Parliament-derived language model are likely non-commercial
NTUML2021 (train split) no licence stated upstream documents disagree on whether it was used for training; the published weights and language model include it

Consequences for you. Because of the NonCommercial and ShareAlike items above, do not assume you may use these weights or the language model in a commercial product or relicense them differently. The TingMix Desktop project does not give legal advice and has made no determination on these points. Check the sources yourself before any commercial or redistributed use. This package is published to be used with the TingMix Desktop app.

Licence and use restrictions

  • Files in this repository are made available under the Apache License 2.0 (LICENSE), the licence the upstream Hub cards of google/embeddinggemma-2 and tc3oliver/TingMix-Large declare, subject to the data notes above. The Apache terms require that you receive a copy of the licence (included), keep the notices in NOTICE, and mark changes: this package is a modified work, described under "Provenance".
  • The google/embeddinggemma-2 model card at the pinned revision says its licence is Apache 2.0 and adds: "Deployments must adhere to the Gemma Prohibited Use Policy." That policy is at https://ai.google.dev/gemma/prohibited_use_policy. You must not use this model for anything that policy prohibits. The package manifest makes the app show the licence terms and require the user's acceptance before installing. The page the Google card links as its licence, https://ai.google.dev/gemma/docs/gemma_4_license, served the Apache 2.0 text when it was checked on 2026-10-17 (it also displayed a notice that the documentation had moved); if Google publishes different terms for this model later, those terms govern, not this paragraph.
  • Google's original model and card: https://huggingface.co/google/embeddinggemma-2. This repository is not endorsed by Google.
  • The TingMix Desktop code is separate and is licensed in its own repository.

Citation and credit

EmbeddingGemma 2 is by Google DeepMind. TingMix-Large and Embed2ASR are by tc3oliver. Please credit them, and the dataset authors above, when you use results from this package.

Downloads last month

-

Downloads are not tracked for this model. How to track
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for tc3oliver/TingMix-Desktop

Finetuned
(116)
this model