{"id":51248813,"url":"https://github.com/matanhakim/local-speech-to-text","last_synced_at":"2026-06-29T06:02:32.933Z","repository":{"id":367912315,"uuid":"1280661544","full_name":"matanhakim/local-speech-to-text","owner":"matanhakim","description":"Offline, local speech-to-text for any language: set up Whisper, dictate by hotkey, and a drop-in transcription skill.","archived":false,"fork":false,"pushed_at":"2026-06-28T07:29:18.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-28T09:15:40.488Z","etag":null,"topics":["claude-code","dictation","faster-whisper","hebrew","local-first","offline","speech-to-text","voice-to-text","whisper"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matanhakim.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-25T20:12:25.000Z","updated_at":"2026-06-28T07:29:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/matanhakim/local-speech-to-text","commit_stats":null,"previous_names":["matanhakim/local-speech-to-text"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/matanhakim/local-speech-to-text","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matanhakim%2Flocal-speech-to-text","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matanhakim%2Flocal-speech-to-text/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matanhakim%2Flocal-speech-to-text/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matanhakim%2Flocal-speech-to-text/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matanhakim","download_url":"https://codeload.github.com/matanhakim/local-speech-to-text/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matanhakim%2Flocal-speech-to-text/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34915002,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-29T02:00:05.398Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","dictation","faster-whisper","hebrew","local-first","offline","speech-to-text","voice-to-text","whisper"],"created_at":"2026-06-29T06:02:32.025Z","updated_at":"2026-06-29T06:02:32.923Z","avatar_url":"https://github.com/matanhakim.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# local-speech-to-text\n\n**Free, offline speech-to-text for any language, running entirely on your own\nmachine.** No cloud, no API key, no per-minute meter.\n\nVoice input in AI tools is almost always English-first. Most built-in dictation\nand voice features cover English and a short list of major languages; many\nlanguages aren't covered at all. The moment you want to dictate or transcribe in,\nsay, Hebrew, you get pushed toward a paid provider, an API key, and a meter.\n\nThis repo needs none of that. Everything runs locally on\n[`faster-whisper`](https://github.com/SYSTRAN/faster-whisper) - on a regular CPU\nlaptop - so you can dictate and transcribe in a language the big tools leave out.\n\n## Three standalone tools\n\nEach works on its own; pick what you need.\n\n| # | Part | What it does |\n|---|------|--------------|\n| 1 | [**install-whisper/**](install-whisper/) | Set up the local transcription model (Whisper via faster-whisper). The foundation for the other two. |\n| 2 | [**dictation/**](dictation/) | System-wide push-to-talk: tap a key, speak, and your words are pasted into whatever field has focus - an editor, a browser, the Claude Code prompt. |\n| 3 | [**skill/**](skill/) | Turn a recording (meeting, call, voice memo) into a timestamped Markdown transcript. Ships as a drop-in Claude Code skill, and runs standalone too. |\n\n## Why bother talking instead of typing\n\nThe bottleneck to good output from a language model is often how much context you\nbother to give it. Typing pushes you toward short, pruned input; speaking lets\nyou spill everything that's actually in your head. The dictation tool (part 2)\nexists to remove that bottleneck: tap a key, think out loud, and the model gets\nthe full paragraph you would never have typed. The skill (part 3) does the same\nfor context captured earlier - record a long voice memo, hand over the\ntranscript.\n\n## Hardware\n\nThe default model (`ivrit-ai/whisper-large-v3-turbo-ct2`, a Hebrew fine-tune)\nruns comfortably on a CPU laptop with 16-32 GB RAM - no GPU needed. For other\nlanguages or smaller machines, see the model guide in\n[`install-whisper/`](install-whisper/). Only **NVIDIA** GPUs accelerate this\nstack; on everything else it runs on the CPU, which is fine - transcription runs\nat roughly real time.\n\n## Adapt it to your language\n\nHebrew is the worked example throughout. To switch languages, change `MODEL` and\n`LANGUAGE` in `dictation/dictate.py`, and pass `-l \u003ccode\u003e` / `-m \u003cmodel\u003e` to\n`skill/transcribe.py`. For any non-English language, prefer `large-v3-turbo` over\nthe tiny/base models, and check Hugging Face for a fine-tune in your language\nfirst - it usually beats the generic model of the same size.\n\n## Privacy\n\nThe speech-to-text is **fully local** - audio never leaves the machine. Models\ndownload once from Hugging Face, then run offline.\n\n## Platform note\n\nThe dictation daemon (part 2) is **Windows-focused** (global key hook,\nauto-paste, and beeps use Win32 APIs). The model setup (part 1) and the\ntranscription script (part 3) are cross-platform.\n\n## Background\n\nCompanion to the blog post\n[*Free, Offline Speech-to-Text for Non-English Languages*](https://www.matanhakim.com/posts/2026-06-29-local-transcription/).\n\n## License\n\n[MIT](LICENSE) © Matan Hakim\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatanhakim%2Flocal-speech-to-text","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatanhakim%2Flocal-speech-to-text","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatanhakim%2Flocal-speech-to-text/lists"}