{"id":44595054,"url":"https://github.com/xinkai/dictype","last_synced_at":"2026-02-21T10:01:11.767Z","repository":{"id":338376474,"uuid":"1157567053","full_name":"Xinkai/dictype","owner":"Xinkai","description":"Real-time voice-to-text input on Linux.","archived":false,"fork":false,"pushed_at":"2026-02-14T13:41:57.000Z","size":1993,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-14T13:43:30.582Z","etag":null,"topics":["fcitx","linux","speech-to-text","voice-input","voice-to-text"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/Xinkai.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,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-14T01:11:10.000Z","updated_at":"2026-02-14T13:41:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Xinkai/dictype","commit_stats":null,"previous_names":["xinkai/dictype"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Xinkai/dictype","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xinkai%2Fdictype","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xinkai%2Fdictype/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xinkai%2Fdictype/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xinkai%2Fdictype/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xinkai","download_url":"https://codeload.github.com/Xinkai/dictype/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xinkai%2Fdictype/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29679049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T09:33:50.764Z","status":"ssl_error","status_checked_at":"2026-02-21T09:33:19.949Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["fcitx","linux","speech-to-text","voice-input","voice-to-text"],"created_at":"2026-02-14T08:12:51.272Z","updated_at":"2026-02-21T10:01:11.753Z","avatar_url":"https://github.com/Xinkai.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"Dictype\n=======\n\nReal-time voice-to-text input on Linux.\n\nFeatures\n--------\n\n- Fcitx integration: customizable trigger keys for your profiles.\n- Real-time dictation: no need to wait for a connection before you speak, with real-time preview as the model revises.\n- Model\n  options: [paraformer-realtime-v2 (Alibaba Cloud)](https://help.aliyun.com/zh/model-studio/real-time-speech-recognition#ea9240a128roy), [qwen3-asr-flash-realtime (Alibaba Cloud)](https://help.aliyun.com/zh/model-studio/qwen-real-time-speech-recognition).\n\nSetup\n-----\n\n1. Install packages for your distro.\n\n   \u003cdetails\u003e\n   \u003csummary\u003eArch Linux\u003c/summary\u003e\n\n   \u003cp\u003e\n   Install packages from AUR:\n   \u003c/p\u003e\n   \u003cul\u003e\n      \u003cli\u003e\u003ca href=\"https://aur.archlinux.org/packages/dictype-fcitx\"\u003edictype-fcitx\u003c/a\u003e\u003c/li\u003e\n      \u003cli\u003e\u003ca href=\"https://aur.archlinux.org/packages/dictype\"\u003edictype\u003c/a\u003e\u003c/li\u003e\n   \u003c/ul\u003e\n   \u003c/details\u003e\n\n2. Configure Dictype.\n\n   ```toml\n   # This is the configuration file for Dictype.\n   # Put it at `~/.config/dictype.toml`.\n   \n   [PulseAudio]\n   # Use the following command to get a list of available `source_name`.\n   # $ pactl --format json list sources \\\n   #   | jq '[\n   #     .[]\n   #     | select((.monitor_of_sink == null) and (.name | endswith(\".monitor\") | not))\n   #     | {\n   #         source_name: .[\"name\"],\n   #         properties: {\n   #            device_name: .properties[\"device.name\"],\n   #            device_alias: .properties[\"device.alias\"],\n   #            device_description: .properties[\"device.description\"]\n   #         }\n   #     }\n   #   ]'\n   preferred_source_name = \"...\" # optional\n   \n   # You can have up to 5 profiles at the same time, starting with Profile1.\n   # Each profile may have different formats depending on the model (Backend).\n   [Profile1]\n   Backend = \"ParaformerV2\"\n   Config = {\n       dashscope_api_key = \"...\",                   # required\n       dashscope_websocket_url = \"wss://dashscope.aliyuncs.com/api-ws/v1/inference\", # optional\n       disfluency_removal_enabled = true,           # optional\n       language_hints = [\"zh\"],                     # optional\n       semantic_punctuation_enabled = false,        # optional\n       max_sentence_silence = 800,                  # optional\n       multi_threshold_mode_enabled = false,        # optional\n       punctuation_prediction_enabled = true,       # optional\n       inverse_text_normalization_enabled = true,   # optional\n   }\n   \n   [Profile2]\n   Backend = \"QwenV3\"\n   Config = {\n       dashscope_api_key = \"...\",                                       # required\n       dashscope_websocket_url = \"wss://dashscope.aliyuncs.com/api-ws/v1/realtime?model=qwen3-asr-flash-realtime\", # optional\n       language = \"en\",                                                 # optional\n       turn_detection = { threshold = 0.2, silence_duration_ms = 900 }, # optional\n   }\n   ```\n\n3. Run daemon\n\n   ```bash\n   systemctl --user enable dictyped --now\n   ```\n\n4. Restart Fcitx.\n\n   \u003e Restarting Fcitx can be complex depending on your setup. The easist way to do this is just restart your computer.\n\n5. Configure `dictype-fcitx` trigger keys using the official Fcitx configuration, under `Configuration addons...`\n\n6. Focus on your text input, then press the profile trigger key to start. Press it again to stop. You may lose focus\n   while transcribing.\n\nRequirements\n------------\n\n1. `PulseAudio`, or `PipeWire` with pulseaudio compatibility support.\n2. `fcitx5`.\n3. cloud accounts for respective models (currently supports two models on Alibaba Cloud).\n\nTODOs\n-----\n\n- [ ] GUI configuration tool\n- [ ] local inference\n\nDisclaimer\n----------\n\n- This is a personal project and is not affiliated with any cloud providers or model providers.\n- Discretion is advised when it comes to model fees and privacy concerns when using cloud models.\n\nLicense\n-------\n\nMIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxinkai%2Fdictype","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxinkai%2Fdictype","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxinkai%2Fdictype/lists"}