Making Acoustic Side-Channel Attacks on Noisy Keyboards Viable with LLM-Assisted Spectrograms' "Typo" Correction
Paper • 2504.11622 • Published
How to use FloatingDuck/zoom_model with Transformers:
# Use a pipeline as a high-level helper
from transformers import pipeline
pipe = pipeline("text-generation", model="FloatingDuck/zoom_model")
messages = [
{"role": "user", "content": "Who are you?"},
]
pipe(messages) # Load model directly
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("FloatingDuck/zoom_model")
model = AutoModelForCausalLM.from_pretrained("FloatingDuck/zoom_model")
messages = [
{"role": "user", "content": "Who are you?"},
]
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=40)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:]))How to use FloatingDuck/zoom_model with vLLM:
# Install vLLM from pip:
pip install vllm
# Start the vLLM server:
vllm serve "FloatingDuck/zoom_model"
# Call the server using curl (OpenAI-compatible API):
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "FloatingDuck/zoom_model",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'docker model run hf.co/FloatingDuck/zoom_model
How to use FloatingDuck/zoom_model with SGLang:
# Install SGLang from pip:
pip install sglang
# Start the SGLang server:
python3 -m sglang.launch_server \
--model-path "FloatingDuck/zoom_model" \
--host 0.0.0.0 \
--port 30000
# Call the server using curl (OpenAI-compatible API):
curl -X POST "http://localhost:30000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "FloatingDuck/zoom_model",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'docker run --gpus all \
--shm-size 32g \
-p 30000:30000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HF_TOKEN=<secret>" \
--ipc=host \
lmsysorg/sglang:latest \
python3 -m sglang.launch_server \
--model-path "FloatingDuck/zoom_model" \
--host 0.0.0.0 \
--port 30000
# Call the server using curl (OpenAI-compatible API):
curl -X POST "http://localhost:30000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "FloatingDuck/zoom_model",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'How to use FloatingDuck/zoom_model with Unsloth Studio:
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for FloatingDuck/zoom_model to start chatting
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for FloatingDuck/zoom_model to start chatting
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for FloatingDuck/zoom_model to start chatting
pip install unsloth
from unsloth import FastModel
model, tokenizer = FastModel.from_pretrained(
model_name="FloatingDuck/zoom_model",
max_seq_length=2048,
)How to use FloatingDuck/zoom_model with Docker Model Runner:
docker model run hf.co/FloatingDuck/zoom_model
This is a fine-tuned version of the LLaMA-3.2-3B model for Acoustic Side-Channel Attacks (ASCA), designed to improve keystroke classification and error correction in noisy environments. The model leverages Vision Transformers (VTs) for spectrogram classification and Large Language Models (LLMs) for typo correction.
If you use this model, please cite the following paper:
@article{ayati2025making,
title={Making Acoustic Side-Channel Attacks on Noisy Keyboards Viable with LLM-Assisted Spectrograms' "Typo" Correction},
author={Ayati, Seyyed Ali and Park, Jin Hyun and Cai, Yichen and Botacin, Marcus},
journal={arXiv preprint arXiv:2504.11622},
year={2025},
url={https://arxiv.org/abs/2504.11622}
}