{"id":31725652,"url":"https://github.com/exectx/dictation","last_synced_at":"2025-10-09T05:55:09.875Z","repository":{"id":312206099,"uuid":"1046681633","full_name":"exectx/dictation","owner":"exectx","description":"push to talk dictation cli tool for macos","archived":false,"fork":false,"pushed_at":"2025-08-29T04:11:10.000Z","size":191,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-29T08:26:04.751Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exectx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-08-29T04:07:51.000Z","updated_at":"2025-08-29T04:11:13.000Z","dependencies_parsed_at":"2025-08-29T08:27:28.782Z","dependency_job_id":"a78190da-d1d3-479d-ba5e-1c5e96525044","html_url":"https://github.com/exectx/dictation","commit_stats":null,"previous_names":["exectx/dictation"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/exectx/dictation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exectx%2Fdictation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exectx%2Fdictation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exectx%2Fdictation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exectx%2Fdictation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exectx","download_url":"https://codeload.github.com/exectx/dictation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exectx%2Fdictation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000742,"owners_count":26082932,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"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":[],"created_at":"2025-10-09T05:55:05.232Z","updated_at":"2025-10-09T05:55:09.871Z","avatar_url":"https://github.com/exectx.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dictation POC\n\nHold-to-record speech-to-text prototype that transcribes audio locally using a Parakeet MLX model and rapidly injects the resulting Unicode text via macOS CoreGraphics events.\n\n## Features\n\n- Press and hold Right Shift (configurable) to record; release to transcribe \u0026 type.\n- Non-blocking keyboard listener + background transcription.\n- Single concurrent transcription (drops overlapping recordings gracefully).\n- Rich (optional) color logging with debug timing, frame counts, and preprocessing/model breakdown.\n- Plain logger mode for piping to files / CI.\n\n## Installation\n\nThis project uses a modern Python (\u003e=3.11). Install dependencies (uv / pip):\n\n```\nuv sync\n# or\npip install -e .\n```\n\n## Usage\n\n```\npython main.py                    # normal run (info level, colored logs)\npython main.py --debug            # verbose diagnostics \u0026 timings\npython main.py --timestamps       # add HH:MM:SS to log records\npython main.py --no-color         # disable Rich; plain text logs\npython main.py --log-file run.log # also append plain formatted logs to run.log\n```\n\nWhile running, hold Right Shift to capture audio. Release to trigger transcription. The recognized text is injected immediately at the current cursor location.\n\n## Logging Notes\n\n- Rich output omits path for cleanliness; enable timestamps for performance tuning.\n- Debug mode reports preprocessing \u0026 model inference timings plus sample normalization stats.\n- Use `--no-color` when redirecting output, or `--log-file` to simultaneously keep colored console output and a plain file.\n\n## Safety / Edge Cases\n\n- Very short taps (\u003c40ms default) are ignored to avoid stray noise.\n- Only one transcription runs at a time; overlapping captures while one is processing are dropped with a warning.\n- On shutdown (Ctrl+C) the program waits (up to 5s) for background workers.\n\n## Customization\n\nChange activation key inside `main.py` (`ACTIVATION_KEY`). Minimum duration and data type are constructor parameters of `Recorder`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexectx%2Fdictation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexectx%2Fdictation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexectx%2Fdictation/lists"}