File size: 5,143 Bytes
3a335d3
0b96cba
 
3a335d3
 
 
 
0b96cba
 
3a335d3
 
 
9e20f3c
 
88607c6
3a335d3
0b96cba
 
3a335d3
7cab6d6
 
 
3a335d3
 
 
88607c6
7c6ebd3
7cab6d6
ef62c4a
7cab6d6
3a335d3
c7602df
7cab6d6
 
c7602df
 
ef62c4a
 
 
3a335d3
 
 
 
 
 
 
 
 
 
 
 
 
 
f4f3a9e
3a335d3
 
7cab6d6
 
3a335d3
 
 
 
 
 
 
 
 
cdc1ffe
3a335d3
 
88607c6
3a335d3
 
 
 
 
 
 
cdc1ffe
3a335d3
 
 
 
cc4f5cd
3a335d3
 
 
 
 
 
 
 
 
 
 
 
88607c6
3a335d3
 
 
 
 
cdc1ffe
3a335d3
7c9551c
fd72278
3a335d3
 
0b96cba
 
3a335d3
 
cdc1ffe
3a335d3
 
cdc1ffe
7cab6d6
cdc1ffe
3a335d3
cdc1ffe
3a335d3
 
 
 
 
 
 
 
cdc1ffe
3a335d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88607c6
3a335d3
 
 
6073861
3a335d3
6353f4a
 
 
d574f1f
f45407f
 
6353f4a
 
93dea2f
 
 
 
 
 
6353f4a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
---
base_model:
- Qwen/Qwen3-4B
language:
- en
- ko
library_name: transformers
license: apache-2.0
pipeline_tag: audio-text-to-text
tags:
- audio
- text-generation
---

* FastSLM is an designed for efficient and accurate speech-to-text transcription.

**Paper**: [FastSLM: Hierarchical Temporal Abstraction for Efficient Long-Form Speech Adaptation](https://huggingface.co/papers/2601.06199)  
**Code**: [GitHub - Lee-junseok1025/FastSLM](https://github.com/Lee-junseok1025/FastSLM)

<!-- * πŸ”Š **HFQ-Former**: Hierarchically compresses high-frame-rate audio features while preserving the audio's local and global contextual information. -->
<!-- * πŸ”Š **Adaptor**:  -->
<!-- * 🧠 **LLM Adaptation**: Effectively adapts pre-trained Large Language Models (LLMs) to the audio modality. -->

## πŸ“– Model Architecture

πŸš€ **FastSLM** is a designed for efficient speech-to-text transcription.  
> πŸŽ‰ **Accepted at EMNLP 2026 Findings**


## πŸ“Œ Key Features (Safe Version)

* ⚑ Efficient long-form speech processing (Processes up to 8 hours of audio on a 40GB GPU)
* 🧠 Adaptation of pre-trained LLMs to audio
* βœ… Evaluation results on standard ASR benchmarks (WERs listed above)
* πŸ“ Text Representation Preservation: Maintains the original LLM's capabilities for text-only tasks via the disable LoRA feature.


<p align="center">
  <img src="HTA.png" width="1024" alt="HTA architecture">
</p>

## πŸš€ Getting Started

### 1. Installation

First, install the required libraries.

```bash
sudo apt install ffmpeg
# pip
torch==2.3.1
peft==0.14.0
librosa==0.11.0
transformers>=4.53.1
accelerate==0.34.2
einops==0.8.1
torchaudio==2.3.1
openai-whisper
soundfile
```

### 2. Load Model and Tokenizer

You can easily load the model using `AutoModelForCausalLM.from_pretrained`. This model includes custom code, so the `trust_remote_code=True` option is required.

```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig

# ⬅️ Enter your Hugging Face repository ID here.
repo_id = "okestro-ai-lab/FastSLM" 

model = AutoModelForCausalLM.from_pretrained(
    repo_id,
    trust_remote_code=True,
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(repo_id)
generation_config = GenerationConfig.from_pretrained(repo_id)

model.eval()
```

### 3. Sample Inference (Automatic Speech Recognition)

This example shows how to load an audio file and transcribe it to text.

```python
import torch
import librosa

# 1. Load and resample the audio file
# ⬅️ Path to the audio file to be transcribed
wav_path = "sample_audio/English_audio.wav" 
wav,sample_rate  = librosa.load(wav_path)

# FastSLM requires 16kHz audio.
if sample_rate != 16000:
    audio = librosa.resample(wav,orig_sr=sample_rate,target_sr=16000)
else:
    audio = wav

# 2. Prepare the prompt and tokenize the prompt
# Automatic Speech Recognition (ASR) task
# Addiational Tasks: please refer to Supported Tasks
# A task token is not required, but it is recommended for achieving a more appropriate task.
TASK_TOKEN = "<|ASR|>" 
AUDIO_TOKEN = "<|audio_bos|><|AUDIO|><|audio_eos|>"
user_prompt = f"{TASK_TOKEN}{AUDIO_TOKEN}
Transcribe the audio clip into text."

prompt = [{"role": "user", "content": user_prompt}]
input_ids = tokenizer.apply_chat_template(
    prompt,
    add_generation_prompt=True,
    tokenize=True,
    return_tensors='pt'
).to(model.device)

# 3. Perform inference
# The model's generate function expects the audio input as a list.
audio_tensor = torch.tensor((audio,),dtype=torch.float32).cuda()

with torch.no_grad():
    with torch.cuda.amp.autocast(dtype=torch.bfloat16):
        output_ids = model.generate(
            input_ids=input_ids,
            audio=audio_tensor,
            generation_config=generation_config,
            max_new_tokens=256
        )

# 5. Decode the result
transcription = tokenizer.batch_decode(output_ids, skip_special_tokens=True)[0]

print("--- Transcription Result ---")
print(transcription)
```

---

## πŸ“Œ Supported Tasks

You can perform different tasks by using the following special tokens in your prompt:

* `<|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.

---

## ⚑ GPU Requirements

FastSLM inference requires a GPU with sufficient memory.

| Task      | Recommended GPU         | Minimum VRAM |
| --------- | ---------------- | --------- |
| **Inference** | NVIDIA A100 / H100 | β‰₯ 11.8 GB |

> πŸ’‘ Using mixed precision (`bfloat16` or `fp16`) is recommended to reduce memory usage.



## πŸ“– Citation

```bibtex
@inproceedings{lee2026fastslm,
  title={FastSLM: Hierarchical Temporal Abstraction for Efficient Long-Form Speech Adaptation},
  author={Lee, Junseok and Chun, Chang-Jae},
  booktitle={Findings of the Association for Computational Linguistics: EMNLP 2026},
  pages={5374--5389},
  year={2026}
}
```