https://github.com/xifan2333/fcitx5-vinput
Voice input for Fcitx5 — local and cloud ASR, LLM rewriting, cross-distro packages
https://github.com/xifan2333/fcitx5-vinput
fcitx5 input-method linux offline-asr sherpa-onnx speech-recognition voice-input
Last synced: about 2 months ago
JSON representation
Voice input for Fcitx5 — local and cloud ASR, LLM rewriting, cross-distro packages
- Host: GitHub
- URL: https://github.com/xifan2333/fcitx5-vinput
- Owner: xifan2333
- License: gpl-3.0
- Created: 2026-03-06T10:40:59.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-05-23T22:00:18.000Z (about 2 months ago)
- Last Synced: 2026-05-23T23:23:25.388Z (about 2 months ago)
- Topics: fcitx5, input-method, linux, offline-asr, sherpa-onnx, speech-recognition, voice-input
- Language: C++
- Homepage: https://xifan2333.github.io/fcitx5-vinput/
- Size: 19.7 MB
- Stars: 231
- Watchers: 1
- Forks: 23
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# fcitx5-vinput
**Voice input for Fcitx5 — local and cloud ASR, LLM rewriting, cross-distro packages**
[](LICENSE)
[](https://github.com/xifan2333/fcitx5-vinput/actions/workflows/release.yml)
[](https://github.com/xifan2333/fcitx5-vinput/releases)
[](https://aur.archlinux.org/packages/fcitx5-vinput-bin)
[](https://github.com/xifan2333/fcitx5-vinput/releases)
[English](README.md) | [中文](README_zh.md) | [Documentation](https://xifan2333.github.io/fcitx5-vinput/)
https://github.com/user-attachments/assets/5a548a68-153c-4842-bab6-926f30bb720e
## Features
- **Two trigger modes** — tap to toggle recording, or hold to push-to-talk
- **Local & cloud ASR** — offline [sherpa-onnx](https://github.com/k2-fsa/sherpa-onnx) models or cloud providers (Doubao, Aliyun Bailian, ElevenLabs, OpenAI-compatible), switchable at runtime with `F8`
- **LLM post-processing** — error correction, formatting, translation via scenes
- **Command mode** — select text, speak an instruction, release to apply
- **GUI & CLI** — `vinput-gui` for quick setup, `vinput` CLI for full control
- **Cross-distro** — Arch, Fedora, Ubuntu/Debian, Nix, Flatpak
## Installation
### Arch Linux (AUR)
```bash
yay -S fcitx5-vinput-bin
```
### Fedora (COPR)
```bash
sudo dnf copr enable xifan/fcitx5-vinput-bin
sudo dnf install fcitx5-vinput
```
### Ubuntu 24.04 (PPA)
```bash
sudo add-apt-repository ppa:xifan233/ppa
sudo apt update
sudo apt install fcitx5-vinput
```
### Ubuntu / Debian (manual)
```bash
# Download latest .deb from GitHub Releases
sudo dpkg -i fcitx5-vinput_*.deb
sudo apt-get install -f
```
### Nix (flake)
Supports `x86_64-linux` and `aarch64-linux`.
```nix
inputs.fcitx5-vinput.url = "github:xifan2333/fcitx5-vinput";
```
Binary cache via [Cachix](https://fcitx5-vinput.cachix.org):
```nix
nixConfig = {
extra-substituters = [ "https://fcitx5-vinput.cachix.org" ];
extra-trusted-public-keys = [ "fcitx5-vinput.cachix.org-1:XpX3AA6+dDIX4qJhb1QM7sbTwX6/qSlGvW8Z5NK6XdU=" ];
};
```
Full Home Manager example in the [install docs](https://xifan2333.github.io/fcitx5-vinput/install/).
### Flatpak
```bash
flatpak remote-add --if-not-exists xifan https://xifan2333.github.io/flatpak-auto/xifan.flatpakrepo
flatpak install https://xifan2333.github.io/flatpak-auto/refs/org.fcitx.Fcitx5.Addon.Vinput.flatpakref
```
After installation, grant the extra permissions and restart Fcitx5:
```bash
flatpak override --user --filesystem=xdg-run/pipewire-0 org.fcitx.Fcitx5
flatpak override --user --filesystem=xdg-config/systemd:create org.fcitx.Fcitx5
flatpak override --user --filesystem=xdg-cache org.fcitx.Fcitx5
flatpak kill org.fcitx.Fcitx5
Download the package for your system from [GitHub Releases](https://github.com/xifan2333/fcitx5-vinput/releases/latest):
- **Debian / Linux Mint / Ubuntu (other)**: `.deb`
- **openSUSE / Fedora (other)**: `.rpm`
- **Arch-based**: `.pkg.tar.zst`
- **Flatpak**: `.flatpak`
- **Generic Linux**: `_bundled.tar.gz`
### Build from source
**Dependencies:** cmake, fcitx5, pipewire, libcurl, nlohmann-json, CLI11, Qt6
```bash
sudo bash scripts/build-sherpa-onnx.sh
cmake --preset release-clang-mold
cmake --build --preset release-clang-mold
sudo cmake --install build
```
## Quick start
```bash
systemctl --user enable --now vinput-daemon.service
fcitx5 -r
```
Open **Vinput GUI** → **Resources → Models** → download and activate a model. Then:
- **Tap** `Alt_R` — start/stop recording
- **Hold** `Alt_R` — push-to-talk
## Key bindings
| Key | Default | Function |
|-----|---------|----------|
| Trigger Key | `Alt_R` | Tap to toggle recording; hold to push-to-talk |
| Command Key | `Control_R` | Hold after selecting text to modify with voice |
| ASR Menu Key | `F8` | Open ASR provider / model switcher |
| Scene Menu Key | `Shift_R` | Open scene switcher |
All keys can be customized in Fcitx5 configuration.
## Documentation
For ASR configuration, scenes & LLM setup, CLI reference, and registry contribution guide, see the [documentation site](https://xifan2333.github.io/fcitx5-vinput/).
## License
[GPL-3.0](LICENSE)
## Star History
[](https://star-history.com/#xifan2333/fcitx5-vinput&Date)
## Contributors
## Sponsor
If this project has been helpful to you, feel free to support it.