haohan84 commited on
Commit
458a549
·
verified ·
1 Parent(s): 7d80bc4

Model card: add Qwen3-ASR 0.6B (speech to text)

Browse files
Files changed (1) hide show
  1. README.md +41 -4
README.md CHANGED
@@ -1,6 +1,8 @@
1
  ---
2
  license: apache-2.0
3
- base_model: Qwen/Qwen3.5-0.8B
 
 
4
  tags:
5
  - gguf
6
  - llama.cpp
@@ -9,15 +11,19 @@ tags:
9
  - ios
10
  - macos
11
  - qwen3.5
 
 
 
 
12
  pipeline_tag: text-generation
13
  language:
14
  - en
15
  - vi
16
  ---
17
 
18
- # DarkSurf models: small language models that run on phones
19
 
20
- Language models that have been measured and picked to **run on the device**, with no server: the apps in this
21
  project (starting with DarkSurf, a privacy-first browser for macOS and iOS) download one of these files once and run it
22
  locally with [llama.cpp](https://github.com/ggml-org/llama.cpp) on Metal. Prompts and page text never leave the device.
23
 
@@ -29,6 +35,7 @@ out of this repo.
29
  | Catalog id | File | Size | Min. RAM | Use |
30
  |---|---|---:|---:|---|
31
  | `qwen3.5-0.8b-ud-q4kxl` | `Qwen3.5-0.8B-UD-Q4_K_XL.gguf` | 559 MB | 3 GB | Summarize, ask about a page, translate. Text only |
 
32
 
33
  ### Qwen3.5-0.8B UD-Q4_K_XL
34
 
@@ -50,6 +57,28 @@ and at non-English text (Vietnamese translations read fluently but contain meani
50
  estimate, and speed and memory have **not yet been measured on an iPhone or iPad**. Perplexity was measured in English
51
  only.
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  ## Run it
54
 
55
  ```sh
@@ -61,12 +90,20 @@ llama-completion -m Qwen3.5-0.8B-UD-Q4_K_XL.gguf -c 8192 --top-k 20 --top-p 0.8
61
  The prompt is ChatML. The empty `<think></think>` block turns thinking off (faster, no scratchpad in the answer);
62
  without it Qwen3.5 starts with a long reasoning section. Tested with llama.cpp `3c809f4`.
63
 
 
 
 
 
 
 
 
 
64
  In an app, link llama.cpp as an xcframework (Metal) and load the file in-process with the same prompt and sampling
65
  settings. Keep the 8k context, and unload the model when idle.
66
 
67
  ## How the apps get models
68
 
69
- - `catalog.json` lists the models offered, each pinned to a commit of this repo (`/resolve/<commit>/…`) with its size
70
  and SHA-256. `catalog.json.sig` is an Ed25519 signature; apps accept a downloaded catalog only if it verifies against
71
  the public key built into the app, and check every download against the catalog's size and SHA-256.
72
  - The file is downloaded when the user asks for it, and kept on the device until deleted.
 
1
  ---
2
  license: apache-2.0
3
+ base_model:
4
+ - Qwen/Qwen3.5-0.8B
5
+ - Qwen/Qwen3-ASR-0.6B-hf
6
  tags:
7
  - gguf
8
  - llama.cpp
 
11
  - ios
12
  - macos
13
  - qwen3.5
14
+ - automatic-speech-recognition
15
+ - asr
16
+ - speech
17
+ - qwen3-asr
18
  pipeline_tag: text-generation
19
  language:
20
  - en
21
  - vi
22
  ---
23
 
24
+ # DarkSurf models: small language and speech models that run on phones
25
 
26
+ Language and speech-to-text models that have been measured and picked to **run on the device**, with no server: the apps in this
27
  project (starting with DarkSurf, a privacy-first browser for macOS and iOS) download one of these files once and run it
28
  locally with [llama.cpp](https://github.com/ggml-org/llama.cpp) on Metal. Prompts and page text never leave the device.
29
 
 
35
  | Catalog id | File | Size | Min. RAM | Use |
36
  |---|---|---:|---:|---|
37
  | `qwen3.5-0.8b-ud-q4kxl` | `Qwen3.5-0.8B-UD-Q4_K_XL.gguf` | 559 MB | 3 GB | Summarize, ask about a page, translate. Text only |
38
+ | `qwen3-asr-0.6b-q8` (speech) | `Qwen3-ASR-0.6B-Q8_0.gguf` + `mmproj-Qwen3-ASR-0.6B-Q8_0.gguf` | 847 MB | 3 GB | Speech to text, 52 languages including Vietnamese |
39
 
40
  ### Qwen3.5-0.8B UD-Q4_K_XL
41
 
 
57
  estimate, and speed and memory have **not yet been measured on an iPhone or iPad**. Perplexity was measured in English
58
  only.
59
 
60
+ ### Qwen3-ASR 0.6B Q8_0 (speech to text)
61
+
62
+ [Qwen3-ASR-0.6B](https://huggingface.co/Qwen/Qwen3-ASR-0.6B-hf) (Apache-2.0), converted to GGUF here with llama.cpp
63
+ `3c809f4` and quantized to Q8_0. **Two files, both required**: the language model (639 MB) and the audio encoder
64
+ `mmproj-…` (208 MB); sizes and SHA-256 are in `catalog.json`. Converting the `-hf` checkpoint needs two fixes that
65
+ llama.cpp's converter does not have yet (nested config and tensor names for the audio encoder, and the M-RoPE sections);
66
+ the converted files match the official `ggml-org` GGUF tensor for tensor.
67
+
68
+ Measured on an Apple M4 with llama.cpp `3c809f4` (Metal), on three short clips (English and Vietnamese synthetic speech,
69
+ one LibriSpeech clip):
70
+
71
+ | | Result |
72
+ |---|---|
73
+ | Word error rate | 1.8%, identical to the transformers fp32 reference (Vietnamese clip 0%) |
74
+ | Speed | 40 s of speech in about 2 s after a 0.9 s load (about 20x faster than real time) |
75
+ | Memory | 0.8 GiB peak footprint with a 4096-token context (1.4 GiB resident) |
76
+
77
+ **Always set a small context (4096).** The default 65 536-token context needs 8 GiB for the KV cache alone.
78
+
79
+ Limits: three clips are a smoke test, not an accuracy benchmark; noise, accents, long recordings and streaming are not
80
+ measured, and **it has not been run on an iPhone or iPad yet**. The language label it prints is one per recording.
81
+
82
  ## Run it
83
 
84
  ```sh
 
90
  The prompt is ChatML. The empty `<think></think>` block turns thinking off (faster, no scratchpad in the answer);
91
  without it Qwen3.5 starts with a long reasoning section. Tested with llama.cpp `3c809f4`.
92
 
93
+ Speech to text (needs both files):
94
+
95
+ ```sh
96
+ llama-mtmd-cli -m Qwen3-ASR-0.6B-Q8_0.gguf --mmproj mmproj-Qwen3-ASR-0.6B-Q8_0.gguf -c 4096 --temp 0 \
97
+ --audio speech.wav -p "Transcribe the audio."
98
+ # -> language English<asr_text>Mr. Quilter is the apostle of the middle classes, ...
99
+ ```
100
+
101
  In an app, link llama.cpp as an xcframework (Metal) and load the file in-process with the same prompt and sampling
102
  settings. Keep the 8k context, and unload the model when idle.
103
 
104
  ## How the apps get models
105
 
106
+ - `catalog.json` lists the models offered (chat models in `models`, speech models with several files in `speech`), each pinned to a commit of this repo (`/resolve/<commit>/…`) with its size
107
  and SHA-256. `catalog.json.sig` is an Ed25519 signature; apps accept a downloaded catalog only if it verifies against
108
  the public key built into the app, and check every download against the catalog's size and SHA-256.
109
  - The file is downloaded when the user asks for it, and kept on the device until deleted.