Most of my speech recognition work this autumn has run into the same chore. To teach a model a word (a romanised Hebrew term like "gemach", a street name, an AI model's name), I have to record myself saying that word in a sentence, many times over, in sentences that sound like something a person would actually say. Writing those sentences is the slow part, and it's what today's model takes over.
Contextual-Sentence-Creator is a small model with one job. You give it a term, a one-line description of what the term means, and a number. It gives you back a JSON array of that many natural English sentences, each between 6 and 18 words, each using the term exactly once and in the sense you described.
Hugging Face Model danielrosehill/Contextual-Sentence-Creator A small model for one job. Given a term, a one-line context and a count n, it returns a JSON array of exactly n natural English sentences (6 to 18 words). Each sentence uses the term once, spelled as given, in the… Text generationAPACHE-2.0Updated Nov 2026 View model on Hugging FaceWhy not just ask a big model?
Until now I did ask a big model. Gemini and Claude are both good at this, and the sentences that make up my read-aloud dataset were mostly written that way. But the job is narrow and repetitive, I run it thousands of times, and it is exactly the kind of task a 3B model should be able to learn. A local model costs nothing per call and needs no API key.
Hugging Face Dataset danielrosehill/Read-Aloud-Voice-Sentences ↓ 2.9kAutomatic speech recognitionCC-BY-4.0Updated Nov 2026 View dataset on Hugging FaceSo I took sentences the bigger models (Claude, Gemini and DeepSeek) had already written, collected them into term-context-sentences (13,408 examples over 8,342 terms), and fine-tuned IBM's Granite 4.2 3B on them with LoRA. Training took 27 minutes on one L40S.
Hugging Face Dataset danielrosehill/term-context-sentences Training data for danielrosehill/term-context-sentence-generator-granite-4.2-3b-v1: given a term, a one-line context and a count n, write n natural English sentences that each use the term once, in the meaning the… Text generationCC-BY-4.0Updated Nov 2026 View dataset on Hugging FaceWhat the output looks like
The input is a small JSON object. kind is optional and tells the model what sort of term it is (hebrew, name, place, tech, ai_model and so on):
{"term": "gemach", "context": "a free community lending fund", "n": 3, "kind": "hebrew"}And it answers with sentences like "The gemach has everything from baby monitors to hiking boots." That is the register I'm after: ordinary, slightly chatty, the sort of thing I'd say out loud.
How good is it?
I tested it on 309 calls with terms it never saw in training, at temperature 0.8, against Gemini 3.1 Flash-Lite on the same prompts. Both returned valid JSON with the right number of sentences every time. The difference is in the details: 95.7% of this model's sentences passed my acceptance check (length, term present exactly once, allowed characters), against 99.7% for Gemini. When the model slips, it's usually a sentence of 19 to 22 words, or a rare word swapped for a more familiar one (it once wrote "avrech" when asked for "arev"). The practical fix is to ask for two more sentences than you need and keep the first ones that pass.
So it's not as good as the API, and I don't claim it is. But it's a 3B model that runs on my own machine, costs nothing per call, and is good enough for a job where a failed sentence just gets thrown away.
A word of caution: it writes plausible sentences, not true ones. Nothing checks them for facts, which doesn't matter when the point is to read them aloud.
Getting it
The full weights are on Hugging Face under Apache 2.0, and there is a GGUF build for llama.cpp, Ollama and LM Studio. Use the system prompt from the model card exactly as written, because that is the prompt it was trained on.
Hugging Face Model danielrosehill/Contextual-Sentence-Creator-GGUF GGUF builds of danielrosehill/Contextual-Sentence-Creator. Prompt format, evaluation and limitations are on that page. Text generationAPACHE-2.0Updated Nov 2026 View model on Hugging FaceIt feeds the same pipeline as my Hebrish speech models and my personal English dictation model, Fritter. Every new word I want those models to learn now starts with a few sentences from this one.
Hugging Face Model danielrosehill/Fritter A personal speech-recognition fine-tune for English dictation without code-switching: tech vocabulary (model and product names, CLI and cloud terms), brand names, acronyms, numbers and currency in digits, Irish-English… ↓ 177Automatic speech recognitionCC-BY-NC-4.0Updated Oct 2026 View model on Hugging Face