{"id":21236233,"url":"https://github.com/lepisma/emacs-speech-input","last_synced_at":"2025-07-10T17:32:03.719Z","repository":{"id":74308376,"uuid":"212647054","full_name":"lepisma/emacs-speech-input","owner":"lepisma","description":"Set of packages for speech and voice inputs in Emacs","archived":false,"fork":false,"pushed_at":"2024-09-21T04:42:30.000Z","size":6794,"stargazers_count":33,"open_issues_count":3,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-05T15:51:13.480Z","etag":null,"topics":["emacs","speech-api","speech-recognition"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lepisma.png","metadata":{"files":{"readme":"README.org","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}},"created_at":"2019-10-03T18:11:41.000Z","updated_at":"2025-03-02T13:53:47.000Z","dependencies_parsed_at":"2024-02-11T13:25:36.488Z","dependency_job_id":"ebb7542a-411d-49ed-89ca-0db991d87da3","html_url":"https://github.com/lepisma/emacs-speech-input","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/lepisma/emacs-speech-input","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lepisma%2Femacs-speech-input","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lepisma%2Femacs-speech-input/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lepisma%2Femacs-speech-input/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lepisma%2Femacs-speech-input/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lepisma","download_url":"https://codeload.github.com/lepisma/emacs-speech-input/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lepisma%2Femacs-speech-input/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264619211,"owners_count":23638414,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["emacs","speech-api","speech-recognition"],"created_at":"2024-11-21T00:08:16.386Z","updated_at":"2025-07-10T17:32:01.246Z","avatar_url":"https://github.com/lepisma.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+TITLE: Emacs Speech Input\n\n#+HTML: \u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/lepisma/emacs-speech-input?style=flat-square\"\u003e\n\nSet of packages for speech and voice inputs in Emacs. Use cases are explained\nnext with the packages they are available in:\n\n** Dictation with Real-Time Editing\n~esi-dictate~ is aimed to help you input faster[fn::Needs more work and empirical\nvalidation.]  than simply using voice with post-edits or typing in. It allows\nblended workflows of voice and keyboard inputs assisted via LLMs for real time\nedits.\n\nAt the very basic, it's a dictation tool allowing real-time edits. Most of the\ncontent gets inserted in the buffer via voice at a /voice cursor/. Utterances are\nautomatically inferred as having edit suggestions, in which case, the current\n/voice context/ (displayed differently) is edited via an LLM.\n\nWhile working, the keyboard cursor is kept free so you can keep making finer\nedits independent of the dictation work.\n\nSome more notes on the design are in my blog post [[https://lepisma.xyz/2024/09/12/emacs-dictation-mode/index.html][here]].\n\n*** Usage\nPresently this systems uses Deepgram via a Python script ~dg.py~ that you need to\nput in your ~PATH~ somewhere. Python \u003e=3.10 is required. Afterwards, you would need\nto set the following configuration:\n\n#+begin_src emacs-lisp\n  (use-package esi-dictate\n    :vc (:fetcher github :repo lepisma/emacs-speech-input)\n    :custom\n    (esi-dictate-dg-api-key \"\u003cDEEPGRAM-API-KEY\u003e\")\n    (esi-dictate-llm-provider \u003cllm-provider-using-llm.el\u003e)\n    ; Here is an example configuration for using OpenAI's\n    ; (esi-dictate-llm-provider (make-llm-openai :key \"\u003cOPENAI-API-KEY\u003e\" :chat-model \"gpt-4o-mini\"))\n    :bind (:map esi-dictate-mode-map\n                (\"C-g\" . esi-dictate-stop))\n    :config\n    (setq llm-warn-on-nonfree nil)\n    :hook (esi-dictate-speech-final . esi-dictate-fix-context))\n#+end_src\n\nStart dictation mode using ~esi-dictate-start~.  Use ~esi-dictate-stop~ to exit\ndictation mode. ~esi-dictate-fix-context~ is hooked to utterance end and does\ngeneral fixes without asking for explicit commands. If you mark a region and\ncall ~esi-dictate-move-here~, the voice context and cursor will move to the region\nbounds. If you just need to move the voice cursor, call move here function after\nmoving point to the appropriate position.\n\nAs of now this uses non-free models for both transcriptions (Deepgram) and edits\n(GPT4o-mini). This will change in the future.\n\n*** Customization\nTo improve LLM performance, you can customize the ~esi-dictate-llm-prompt~ and add\nfew shot examples in ~esi-dictate-fix-examples~.\n\nFor visual improvements, customize ~esi-dictate-cursor~, ~esi-dictate-cursor-face~,\n~esi-dictate-intermittent-face~, and ~esi-dictate-context-face~.\n\n** Flight-mode Recording\nThis is available as a dynamic module (~esi-core~) which needs a bit of clean up\nbefore I document the usage.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flepisma%2Femacs-speech-input","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flepisma%2Femacs-speech-input","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flepisma%2Femacs-speech-input/lists"}