| --- |
| license: apache-2.0 |
| base_model: Audio8/ARK-ASR-0.6B |
| base_model_relation: quantized |
| library_name: onnx-asr |
| pipeline_tag: automatic-speech-recognition |
| tags: |
| - onnx |
| - onnxruntime |
| - automatic-speech-recognition |
| - speech |
| - audio |
| - asr |
| - int8 |
| - speech-llm |
| language: |
| - zh |
| - en |
| - de |
| - ja |
| - fr |
| - ko |
| - es |
| - pl |
| - it |
| - ro |
| - hu |
| - cs |
| - nl |
| - fi |
| - hr |
| - sk |
| - sl |
| - et |
| - lt |
| --- |
| |
| # ARK-ASR-0.6B ONNX |
|
|
| ONNX export of [Audio8/ARK-ASR-0.6B](https://huggingface.co/Audio8/ARK-ASR-0.6B) for |
| [onnx-asr](https://github.com/istupakov/onnx-asr). All credit for the model goes to |
| Audio8 (AutoArk AI). This repository only contains the converted graphs; the |
| weights are the original ones. |
|
|
| The model is a speech-LLM: a Whisper-large-v3-style audio encoder with rotary |
| position embeddings, an MLP adapter that merges four encoder frames into one |
| embedding, and a Qwen2 0.6B causal language model that writes the transcription. |
|
|
| ## Usage |
|
|
| ```sh |
| pip install onnx-asr[cpu,hub] |
| ``` |
|
|
| ```py |
| import onnx_asr |
| |
| model = onnx_asr.load_model("speech-llm", "OpenVoiceOS/ARK-ASR-0.6B-onnx") |
| print(model.recognize("audio.wav")) |
| |
| # int8 weights |
| model = onnx_asr.load_model("speech-llm", "OpenVoiceOS/ARK-ASR-0.6B-onnx", quantization="int8") |
| ``` |
|
|
| ## Files |
|
|
| | File | Contents | |
| | --- | --- | |
| | `encoder.onnx` | audio encoder and MLP adapter, log-mel features in, LM embeddings out | |
| | `embed_tokens.onnx` | token embedding table | |
| | `decoder.onnx` | Qwen2 decoder with KV cache, logits out | |
| | `*.int8.onnx` | dynamically quantized int8 weights | |
| | `config.json` | model type, prompt token ids, suppressed token ids | |
| | `vocab.json` | tokenizer vocabulary for detokenization | |
|
|
| ## Graph contract |
|
|
| | Graph | Inputs | Outputs | |
| | --- | --- | --- | |
| | `encoder.onnx` | `input_features (1, 128, frames)` | `audio_embeds (1, frames/8, 896)` | |
| | `embed_tokens.onnx` | `input_ids (1, S)` | `inputs_embeds (1, S, 896)` | |
| | `decoder.onnx` | `inputs_embeds (1, S, 896)`, `attn_bias (1, 1, S, P+S)`, `position_ids (1, S)`, `past_key_values.{0..23}.{key,value} (1, 2, P, 64)` | `logits (1, S, 163958)`, `present.{0..23}.{key,value} (1, 2, P+S, 64)` | |
|
|
| ## Accuracy |
|
|
| Four FLEURS clips (2 English, 2 Mandarin), greedy decoding, compared against the |
| PyTorch model in float32: |
|
|
| * fp32 ONNX: 4 of 4 transcriptions identical to PyTorch, character for character. |
| * int8 ONNX: 3 of 4 identical. One Mandarin clip stops early and loses the last |
| clause. |
|
|
| Speed on a 12-core CPU under load: RTF 0.35 to 0.61 (fp32) and 0.09 to 0.29 |
| (int8). |
|
|
| ## Licence |
|
|
| Apache 2.0, the same licence as the source model. The model was published by |
| Audio8; see the [source repository](https://huggingface.co/Audio8/ARK-ASR-0.6B) |
| and the paper [arXiv:2605.28139](https://arxiv.org/abs/2605.28139). |
|
|