Views
No views yet
🎉 Accepted to Findings of EMNLP 2026

1sudo apt install ffmpeg
2# pip
3torch==2.3.1
4peft==0.14.0
5librosa==0.11.0
6transformers>=4.53.1
7accelerate==0.34.2
8einops==0.8.1
9torchaudio==2.3.1
10openai-whisper
11soundfileAutoModelForCausalLM.from_pretrained. This model includes custom code, so the trust_remote_code=True option is required.1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
3
4# ⬅️ Enter your Hugging Face repository ID here.
5repo_id = "okestro-ai-lab/FastSLM-ASR"
6
7model = AutoModelForCausalLM.from_pretrained(
8 repo_id,
9 trust_remote_code=True,
10 device_map="auto"
11)
12tokenizer = AutoTokenizer.from_pretrained(repo_id)
13generation_config = GenerationConfig.from_pretrained(repo_id)
14
15model.eval()1import torch
2import librosa
3
4# 1. Load and resample the audio file
5# ⬅️ Path to the audio file to be transcribed
6wav_path = "sample_audio/English_audio.wav"
7wav,sample_rate = librosa.load(wav_path)
8
9# FastSLM-ASR requires 16kHz audio.
10if sample_rate != 16000:
11 audio = librosa.resample(wav,orig_sr=sample_rate,target_sr=16000)
12else:
13 audio = wav
14
15# 2. Prepare the prompt and tokenize the prompt
16# Automatic Speech Recognition (ASR) task
17# Addiational Tasks: please refer to Supported Tasks
18# A task token is not required, but it is recommended for achieving a more appropriate task.
19TASK_TOKEN = "<|ASR|>"
20AUDIO_TOKEN = "<|audio_bos|><|AUDIO|><|audio_eos|>"
21user_prompt = f"{TASK_TOKEN}{AUDIO_TOKEN}\nTranscribe the audio clip into text."
22
23prompt = [{"role": "user", "content": user_prompt}]
24input_ids = tokenizer.apply_chat_template(
25 prompt,
26 add_generation_prompt=True,
27 tokenize=True,
28 return_tensors='pt'
29).to(model.device)
30
31# 3. Perform inference
32# The model's generate function expects the audio input as a list.
33audio_tensor = torch.tensor((audio,),dtype=torch.float32).cuda()
34
35with torch.no_grad():
36 with torch.cuda.amp.autocast(dtype=torch.bfloat16):
37 output_ids = model.generate(
38 input_ids=input_ids,
39 audio=audio_tensor,
40 generation_config=generation_config,
41 max_new_tokens=256
42 )
43
44# 5. Decode the result
45transcription = tokenizer.batch_decode(output_ids, skip_special_tokens=True)[0]
46
47print("--- Transcription Result ---")
48print(transcription)<|ASR|>: Automatic Speech Recognition - Transcribes audio into text.<|AST|>: Automatic Speech Translation - Translates audio into text of another language.<|SSUM|>: Speech Summarization - Summarizes the content of an audio clip.<|SQQA|>: Spoken Query-based Question Answering - Answers questions based on the content of an audio clip.| Task | Recommended GPU | Minimum VRAM |
|---|---|---|
| Inference | NVIDIA A100 / H100 | ≥ 11.8 GB |
💡 Using mixed precision (bfloat16) is recommended to reduce memory usage.
1@inproceedings{lee2026fastslm,
2 title = {FastSLM: Hierarchical Temporal Abstraction for Efficient Long-Form Speech Adaptation},
3 author = {Lee, Junseok and Chun, Chang-Jae},
4 booktitle = {Findings of the Association for Computational Linguistics: EMNLP 2026},
5 year = {2026}
6}