Automatic Speech Recognition
Transformers
Safetensors
Japanese
qwen3_asr
japanese
qwen3-asr
lora-merged
noise-robustness
Instructions to use Junlaii/Bro-ASR-1.7B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Junlaii/Bro-ASR-1.7B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="Junlaii/Bro-ASR-1.7B")# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("Junlaii/Bro-ASR-1.7B") model = AutoModelForMultimodalLM.from_pretrained("Junlaii/Bro-ASR-1.7B", device_map="auto") - Notebooks
- Google Colab
- Kaggle
| license: apache-2.0 | |
| pipeline_tag: automatic-speech-recognition | |
| library_name: transformers | |
| language: | |
| - ja | |
| base_model: Qwen/Qwen3-ASR-1.7B-hf | |
| tags: | |
| - automatic-speech-recognition | |
| - japanese | |
| - qwen3-asr | |
| - lora-merged | |
| - noise-robustness | |
| # Bro-ASR-1.7B | |
| Bro-ASR-1.7B is a merged, parameter-efficiently fine-tuned derivative of | |
| `Qwen/Qwen3-ASR-1.7B-hf` for Japanese noisy-recording/device-domain speech | |
| recognition. The repository contains full merged model weights; it does **not** | |
| require a separate LoRA adapter at inference time. | |
| ## Intended use | |
| - Offline Japanese ASR for noisy conversational recordings. | |
| - Research and evaluation of device/noise-domain ASR adaptation. | |
| It is not a safety-critical transcription system. Validate performance on your | |
| own audio domain before deployment. | |
| ## Training | |
| The model was produced by merging a LoRA adapter trained with the frozen | |
| `lowrank_loraplus8_coverage` recipe: | |
| - Base model: `Qwen/Qwen3-ASR-1.7B-hf` | |
| - Training pool: 3,000 Delivery_JP Japanese audio/text segments | |
| - LoRA: rank 8, alpha 16, dropout 0.1, applied to attention and MLP | |
| projections | |
| - LoRA+: base learning rate `8e-6`, B-matrix ratio `8x` | |
| - Sampling: shuffle without replacement; 500 micro-steps, gradient | |
| accumulation 2 | |
| The Delivery_JP audio and transcripts are not included in this repository. | |
| ## Dataset and evaluation | |
| Evaluation uses the 20,619-segment Delivery_JP Japanese manifest. The shared | |
| 3,000-segment training/development pool is excluded before scoring, leaving a | |
| strictly unseen evaluation set of **17,619** segments. Both models were run on | |
| the same ordered `sample_id` list with identical normalized ground truth; each | |
| side produced exactly 17,619 predictions with no duplicate IDs. | |
| Decoding uses a Japanese language hint, beam size 5, and | |
| `max_new_tokens=256`. CER is character-level Levenshtein distance after the | |
| same whitespace normalization for both models. Macro-CER is the unweighted | |
| mean of per-segment CER. | |
| | Model | Evaluated segments | Micro-CER | Macro-CER | Character errors | Exact-match rate | | |
| |---|---:|---:|---:|---:|---:| | |
| | Base Qwen3-ASR-1.7B | 17,619 | 0.34295 | 0.41445 | 102,563 | 14.995% | | |
| | Bro-ASR-1.7B | 17,619 | **0.33763** | **0.39566** | **100,970** | **18.208%** | | |
| Compared with the base model, Bro-ASR-1.7B reduces Micro-CER by **0.533 | |
| percentage points** and character errors by **1,593**. On paired per-segment | |
| comparison, Bro-ASR-1.7B is better / unchanged / worse on 5,681 / 7,775 / | |
| 4,163 segments, respectively. | |
| ### Fixed-set audit score comparisons | |
| The following four models were evaluated on the identical frozen 1,000 | |
| `sample_id` values with identical normalized ground truth and exact fractional | |
| audio time boundaries. This fixed-set audit is separate from the 17,619-segment | |
| strict-unseen evaluation above. | |
| | Fixed audit subset | Model | Segments | Micro-CER | Macro-CER | Character errors | Exact-match rate | Decoding | | |
| |---|---|---:|---:|---:|---:|---:|---| | |
| | Delivery_JP frozen 1,000 | Bro-ASR-1.7B | 1,000 | **0.47119** | **0.49852** | **7,581** | **14.4%** | Japanese, beam 5 | | |
| | Delivery_JP frozen 1,000 | Qwen3-ASR-1.7B baseline | 1,000 | 0.48574 | 0.54712 | 7,815 | 10.3% | Japanese, beam 5 | | |
| | Delivery_JP frozen 1,000 | Cohere Transcribe 03-2026 | 1,000 | 0.56871 | 0.63912 | 9,150 | 7.1% | Official `model.transcribe`, `ja`, punctuation, greedy | | |
| | Delivery_JP frozen 1,000 | Whisper large-v3-turbo (untrained) | 1,000 | 1.53969 | 3.86799 | 24,772 | 0.7% | Historical frozen TTA: speed factors 1.0/0.95/1.05, Japanese, beam 5 | | |
| On this 1,000-segment audit, Bro-ASR-1.7B reduces Micro-CER by **1.454 | |
| percentage points** and character errors by **234** relative to the paired | |
| Qwen baseline. The Cohere run used the official native transcription entry | |
| point with EOS handling; Qwen and Bro-ASR both used Japanese beam size 5. | |
| The Whisper row is the untrained base model, not the historical Plan B | |
| fine-tuned checkpoint. It was reproduced with the frozen | |
| `best_solution_snapshot.py` TTA decoder and an asserted zero LoRA B-matrix. | |
| Its result is substantially weaker on this audit; the decode policy is | |
| reported separately because it uses three TTA speed factors while the Qwen | |
| runs use beam-5 decoding. | |
| ## Quick start | |
| Qwen3-ASR is not included in older stable Transformers releases. Install the | |
| current Transformers source first, as recommended by the upstream Qwen3-ASR | |
| model card: | |
| ```bash | |
| pip install "git+https://github.com/huggingface/transformers" | |
| pip install torch soundfile | |
| ``` | |
| ```python | |
| import torch | |
| from transformers import AutoModelForMultimodalLM, AutoProcessor | |
| model_id = "Junlaii/Bro-ASR-1.7B" | |
| processor = AutoProcessor.from_pretrained(model_id) | |
| model = AutoModelForMultimodalLM.from_pretrained( | |
| model_id, torch_dtype=torch.bfloat16, device_map="auto" | |
| ).eval() | |
| inputs = processor.apply_transcription_request( | |
| audio="sample.wav", language="ja" | |
| ).to(model.device, model.dtype) | |
| with torch.inference_mode(): | |
| output = model.generate(**inputs, num_beams=5, max_new_tokens=256) | |
| text = processor.decode( | |
| output[:, inputs["input_ids"].shape[1]:], return_format="transcription_only" | |
| )[0] | |
| print(text) | |
| ``` | |
| ## Limitations | |
| - The current adaptation is specifically motivated by Japanese noisy-recording | |
| conditions; it may regress on other languages or acoustic domains. | |
| - The full strict-unseen Delivery_JP evaluation has completed on 17,619 | |
| segments under the protocol described above. | |
| - Decoding settings affect results. The final comparison uses Japanese, | |
| beam size 5, and `max_new_tokens=256`. | |
| ## License and attribution | |
| Bro-ASR-1.7B follows the Apache-2.0 license indicated by its base checkpoint. | |
| Please cite and follow the upstream Qwen3-ASR model terms when using this model. | |