--- pipeline_tag: automatic-speech-recognition language: - nan - zh base_model: - Qwen/Qwen3-ASR-1.7B - FireRedTeam/FireRedASR2-AED tags: - wenetspeech-min - minnan - speech-recognition - paired-transcript-asr --- # WenetSpeech-Min ASR Models ASR models for Minnan transcription, Mandarin transcription, and paired-transcript recognition, described in [WenetSpeech-Min](https://arxiv.org/abs/2609.36834). The corpus contains around 10,000 hours of Minnan speech, with paired Minnan and Mandarin transcripts for each utterance. ## Available Models | Model | Task | Framework | | --- | --- | --- | | [Qwen3-ASR-WSM-Min](https://huggingface.co/ASLP-lab/WS-Min-ASR/tree/main/Qwen3-ASR-WSM-Min) | Minnan transcription | ms-swift | | [Qwen3-ASR-WSM-Mandarin](https://huggingface.co/ASLP-lab/WS-Min-ASR/tree/main/Qwen3-ASR-WSM-Mandarin) | Mandarin transcription | ms-swift | | [FireRedASR2-AED-WSM](https://huggingface.co/ASLP-lab/WS-Min-ASR/tree/main/FireRedASR2-AED-WSM) | Paired-transcript recognition | WeNet | ## Installation Follow the official installation guides: - [Qwen3-ASR](https://github.com/QwenLM/Qwen3-ASR#environment-setup), including the vLLM backend for inference. - [ms-swift](https://swift.readthedocs.io/en/latest/GetStarted/SWIFT-installation.html) for Qwen fine-tuning. - [WeNet](https://github.com/wenet-e2e/wenet#install-for-training--deployment) for FireRed fine-tuning and inference. ## Usage ### Qwen3-ASR Select `Qwen3-ASR-WSM-Min` for Minnan output or `Qwen3-ASR-WSM-Mandarin` for Mandarin output. Both take Minnan audio as input. ```python from huggingface_hub import snapshot_download from qwen_asr import Qwen3ASRModel if __name__ == "__main__": subfolder = "Qwen3-ASR-WSM-Min" # Or "Qwen3-ASR-WSM-Mandarin" model_root = snapshot_download( repo_id="ASLP-lab/WS-Min-ASR", allow_patterns=[f"{subfolder}/*.safetensors", f"{subfolder}/*.json", f"{subfolder}/*.txt", f"{subfolder}/*.jinja", "examples/G1216S0004.wav"], ) model = Qwen3ASRModel.LLM( model=f"{model_root}/{subfolder}", gpu_memory_utilization=0.8, max_model_len=8192, max_new_tokens=1024, ) results = model.transcribe( audio=f"{model_root}/examples/G1216S0004.wav", # Or your audio path language=None, ) print(results[0].text) ``` ### FireRedASR2-AED-WSM Download the model and run paired-transcript recognition with the GitHub recipe: ```bash git clone https://github.com/ASLP-lab/WenetSpeech-Min-Repo.git cd WenetSpeech-Min-Repo bash FireRedASR2-AED-WSM/setup_wenet.sh hf download ASLP-lab/WS-Min-ASR --include "FireRedASR2-AED-WSM/*" \ --local-dir pretrained_models/WS-Min-ASR CUDA_VISIBLE_DEVICES=0 bash FireRedASR2-AED-WSM/infer.sh \ --model-dir pretrained_models/WS-Min-ASR/FireRedASR2-AED-WSM \ --task both ``` Use `--task minnan` or `--task mandarin` for a single transcript. Add `--audio /path/to/audio.wav` to use your own audio; otherwise the included example is used. Paired output contains `text_minnan` and `text_mandarin`. ## Training - [Minnan transcription: Qwen3-ASR-WSM-Min](https://github.com/ASLP-lab/WenetSpeech-Min-Repo/tree/main/Qwen3-ASR-Min) - [Mandarin transcription: Qwen3-ASR-WSM-Mandarin](https://github.com/ASLP-lab/WenetSpeech-Min-Repo/tree/main/Qwen3-ASR-Mandarin) - [Paired-transcript recognition: FireRedASR2-AED-WSM](https://github.com/ASLP-lab/WenetSpeech-Min-Repo/tree/main/FireRedASR2-AED-WSM)