--- language: en license: gpl-3.0 tags: - speech-to-text - text-correction - qwen3 - speech-processing - transcription-cleaning datasets: - custom base_model: Qwen/Qwen3-1.7B --- # Qwen3-1.7B Sussurro - v1.0 A fine-tuned version of [Qwen/Qwen3-1.7B](https://huggingface.co/Qwen/Qwen3-1.7B) for speech-to-text transcription correction. ## Model Description This model converts raw speech transcriptions into clean, written-quality text by: - **Removing filler words**: um, uh, like, you know, I mean, actually, literally, right, you see - **Fixing stuttering**: the the → the, we we → we, I I → I - **Eliminating false starts**: "I was- actually, I mean..." → clean phrasing - **Converting conversational to written**: Transform spoken language patterns to formal written text - **Organizing rambling speech**: Convert stream-of-consciousness to structured sentences - **Preserving meaning**: Maintain all important content and intent ## Training Details - **Base Model**: Qwen/Qwen3-1.7B - **Training Method**: QLoRA (4-bit quantization + LoRA adapters) - **Training Data**: 3,997 speech transcription pairs - **Hardware**: AMD Radeon RX 7800 XT (16GB VRAM) with ROCm - **Training Duration**: ~4 hours ### Training Configuration - **Quantization**: 4-bit NF4 with double quantization - **LoRA**: rank=64, alpha=128, targeting all attention and MLP layers - **Batch Size**: 2 per device, 32 gradient accumulation (effective batch=64) - **Learning Rate**: 2e-4 with cosine schedule - **Epochs**: 3 - **Optimizer**: paged_adamw_8bit ## Evaluation Results - **BLEU-4**: 0.461 - **ROUGE-1**: 0.785 - **ROUGE-2**: 0.652 - **ROUGE-L**: 0.748 - **Test Samples**: 401 ## Usage ```python from transformers import AutoModelForCausalLM, AutoTokenizer import torch # Load model and tokenizer model_name = "cesp99/qwen3-sussurro" model = AutoModelForCausalLM.from_pretrained( model_name, device_map="auto", trust_remote_code=True, torch_dtype=torch.bfloat16, ) tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) # System prompt system_prompt = """You are a speech-to-text correction specialist. Your task is to convert raw speech transcriptions into clean, written text by: - Removing all filler words (um, uh, like, you know, I mean, actually, literally, right, you see) - Fixing stuttering and repeated words (the the → the, we we → we) - Eliminating false starts and self-corrections - Converting conversational speech patterns to formal written language - Organizing rambling thoughts into clear, structured sentences - Preserving all important meaning and content""" # Example correction raw_speech = "so, uh, I was thinking like maybe we could, you know, meet up on Saturday?" messages = [ {"role": "system", "content": system_prompt}, {"role": "user", "content": raw_speech}, ] prompt = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, enable_thinking=False, ) inputs = tokenizer(prompt, return_tensors="pt").to(model.device) outputs = model.generate( **inputs, max_new_tokens=256, temperature=0.7, top_p=0.8, top_k=20, do_sample=True, ) corrected_text = tokenizer.decode( outputs[0][inputs['input_ids'].shape[1]:], skip_special_tokens=True ) print(corrected_text) # Output: "I was thinking maybe we could meet up on Saturday?" ``` ## Example Corrections ### Example 1: Filler Words **Input**: "so, uh, I was thinking like maybe we could, you know, meet up on Saturday?" **Output**: "I was thinking maybe we could meet up on Saturday?" ### Example 2: Stuttering **Input**: "the the budget report is, uh, almost ready and we we just need to finalize" **Output**: "The budget report is almost ready and we just need to finalize it." ### Example 3: False Starts **Input**: "I mean, actually, uh, we should probably, like, you know, consider all the options" **Output**: "We should probably consider all the options before making a decision." ## Use Cases - **Meeting Transcripts**: Clean up recorded meeting transcriptions - **Podcast/Interview Processing**: Convert conversational speech to publishable text - **Voice Notes**: Transform voice memos into written format - **Content Creation**: Prepare speech-to-text data for articles or documentation - **Data Cleaning**: Pre-process speech datasets for downstream NLP tasks ## Limitations - Trained primarily on English speech patterns - May occasionally over-correct or change intended meaning - Best suited for conversational speech patterns (not formal presentations) - Requires careful review for critical applications ## Technical Requirements - **GPU**: Recommended 8GB+ VRAM for inference - **Framework**: PyTorch with Transformers library - **Precision**: BF16 recommended (FP16 also supported) ## License GNU General Public License v3.0 (GPL-3.0) This fine-tuned model is licensed under GPL-3.0. Note that the base model (Qwen3-1.7B) is Apache 2.0 licensed. ## Citation If you use this model, please cite: ```bibtex @misc{qwen3-sussurro, title={Qwen3-1.7B Sussurro}, author={Carlo Esposito}, year={2026}, publisher={Hugging Face}, url={https://huggingface.co/cesp99/qwen3-sussurro} } ``` ## Acknowledgments - Base model: [Qwen/Qwen3-1.7B](https://huggingface.co/Qwen/Qwen3-1.7B) - Training framework: Hugging Face Transformers + PEFT - Quantization: BitsAndBytes ## Training Repository Full training pipeline and code: [github.com/cesp99/qwen3-sussurro](https://github.com/cesp99/qwen3-sussurro)