Edge0/Audio8-ASR-0.1B
<div align="center">
Audio8-ASR-0.1B
  
</div>
Audio8-ASR-0.1B is a compact autoregressive ASR model whose language-model component has only 0.1B parameters. It supports multilingual speech recognition for languages including Chinese, English, French, German, Japanese, Korean, and Cantonese. We position it as one of the smallest usable performance ASR models in the LLM era.
This base repository provides the Hugging Face Transformers checkpoint. We also provide deployment-focused releases:
The ONNX Runtime release is designed for edge-device deployment and can run with roughly 1.1 GB peak memory footprint, depending on device, runtime configuration, and workload.
The iOS release is designed for local iPhone transcription with roughly 200 MB peak runtime memory footprint, depending on device, iOS version, and workload.
Demo Video
<p align="center"> <video src="https://huggingface.co/AutoArk-AI/Audio8-ASR-0.1B/resolve/main/assets/audio8-teaser-aurora-redesign-final.mp4" controls preload="metadata" width="720"> Your browser does not support the video tag. </video> </p>
<p align="center"> <a href="https://huggingface.co/AutoArk-AI/Audio8-ASR-0.1B/resolve/main/assets/audio8-teaser-aurora-redesign-final.mp4">Open the demo video</a> </p>
Evaluation Results
The Open ASR results use the seven current public splits from `hf-audio/open-asr-leaderboard` at dataset revision b6bdcd0beb34f8975dc659796176d88f43aff502. They were measured with the standalone Transformers package on standardized H200 Hugging Face Jobs using BF16, eager attention, greedy decoding, max_new_tokens=256, and the documented 30-second audio cap. Per-split batch sizes were 1152, 1024, 1408, 1024, 1024, 2048, and 628. Raw manifests are stored in hf://buckets/AutoArk-AI/audio8-asr-open-asr-results, and the corresponding machine-readable results are provided in .eval_results/open_asr_leaderboard.yaml.
The internal canonical WenetSpeech results come from the reproducibility-checked teacher0p6B-step3000 export with batch size 128. Its effective model tensors are byte-identical to this standalone release; the release only removes a redundant tied LM-head tensor and packages the same weights for standalone use. Chinese results are reported as character error rate. AISHELL is intentionally excluded from this table.
Model Overview
- Task: automatic speech recognition
- Checkpoint format:
safetensors - Sampling rate: 16 kHz
- Decoder: 8-layer Qwen-style causal LM
- Audio front end: Qwen3-ASR audio encoder plus MLP adapter/projector
- Language-model parameters: 103,502,336 (about 0.104B)
- End-to-end unique parameters: 323,990,528 (about 0.324B)
- Runtime: Hugging Face Transformers
- Hotwords: optional decode-time logit boosting, no fine-tuning required
The model should be loaded with trust_remote_code=True.
Files
config.json, tokenizer files, processor files, andmodel.safetensorsconfiguration_arkasr.py,modeling_arkasr.py,processing_arkasr.pyqwen3_asr_audio_config.py,qwen3_asr_audio_model.pyhotword/: backend-agnostic hotword trieexamples/: Transformers inference examples
The root config.json is intentionally kept in this repository so Hugging Face can recognize the model package and count downloads through normal model-file queries.
Transformers Inference
import torch
from transformers import AutoModelForCausalLM, AutoProcessor
model_path = "AutoArk-AI/Audio8-ASR-0.1B"
audio_path = "path/to/audio.wav"
device = "cuda" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.bfloat16 if device == "cuda" else torch.float32
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path,
trust_remote_code=True,
torch_dtype=torch_dtype,
attn_implementation="eager",
).to(device)
model.eval()
conversation = [
{
"role": "user",
"content": [
{"type": "audio", "path": audio_path},
{"type": "text", "text": "Please transcribe this audio."},
],
}
]
batch = processor.apply_chat_template(
conversation,
return_tensors="pt",
sampling_rate=16000,
audio_padding="longest",
add_generation_prompt=True,
audio_max_length=30 * 16000,
text_kwargs={"padding": "longest", "truncation": True, "max_length": 1000},
)
batch = {key: value.to(device) if hasattr(value, "to") else value for key, value in dict(batch).items()}
with torch.inference_mode():
output_ids = model.generate(**batch, max_new_tokens=128, do_sample=False)
prompt_len = int(batch["input_ids"].shape[1])
text = processor.decode(output_ids[0, prompt_len:], skip_special_tokens=True).strip()
print(text)Equivalent script:
python examples/transcribe.py path/to/audio.wav --model AutoArk-AI/Audio8-ASR-0.1BFor local staging before upload:
python examples/transcribe.py path/to/audio.wav --model .Hotword Boosting
Hotwords are applied at decode time by nudging logits for tokenizer paths that match the requested words. This does not modify model weights and does not inject the hotwords into the prompt.
python examples/transcribe_hotword.py path/to/audio.wav \
--model AutoArk-AI/Audio8-ASR-0.1B \
--hotwords "Audio8,AutoArk"Main knobs:
--hotword_topk: only boost tokens already inside the current top-k logits.--hotword_start_boost: boost for the first token of each hotword.--hotword_continuation_boost: boost for continuation tokens after a matched prefix.
Related Releases
Limitations
- The default examples target short-form ASR and truncate audio at 30 seconds.
- Hotword boosting can help with near-miss terms but can also over-bias decoding when boost values are too high.
- Some Transformers/tokenizers versions emit a Qwen tokenizer regex warning. The staged tokenizer config is kept in the loadable form used by this package; pass explicit tokenizer regex flags only after testing your local Transformers version.
Acknowledgements
The audio encoder backbone is based on Qwen3-ASR-0.6B, with the audio adapter and projector trained as part of Audio8-ASR. The language-model backbone is based on Ref-Pretrain-Qwen-104M.
