# 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 from the command palette (`Shift_R` → `/asr`)
- **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 ([archlinuxcn](https://www.archlinuxcn.org/archlinux-cn-repo-and-mirror/) / AUR)
If you use the [archlinuxcn](https://www.archlinuxcn.org/archlinux-cn-repo-and-mirror/) repository, install the repo-built package:
```bash
sudo pacman -S fcitx5-vinput
```
The AUR binary package is also available:
```bash
# Full version (with local sherpa-onnx runtime)
yay -S fcitx5-vinput-bin
# Lite version (cloud-only, zero local ONNX runtime)
yay -S fcitx5-vinput-lite-bin
```
### Fedora (COPR)
```bash
sudo dnf copr enable xifan/fcitx5-vinput-bin
# Full version (with local sherpa-onnx runtime)
sudo dnf install fcitx5-vinput
# Lite version (cloud-only, zero local ONNX runtime)
sudo dnf install fcitx5-vinput-lite
```
### Ubuntu 24.04 (PPA)
```bash
sudo add-apt-repository ppa:xifan233/ppa
sudo apt update
# Full version (with local sherpa-onnx runtime)
sudo apt install fcitx5-vinput
# Lite version (cloud-only, zero local ONNX runtime)
sudo apt install fcitx5-vinput-lite
```
### Ubuntu / Debian (manual)
```bash
# Download latest .deb from GitHub Releases
# Full version (with local sherpa-onnx runtime):
sudo dpkg -i fcitx5-vinput_*.deb
sudo apt-get install -f
# Lite version (cloud-only, zero local ONNX runtime):
sudo dpkg -i fcitx5-vinput-lite_*.deb
sudo apt-get install -f
```
### Nix (flake)
Supports `x86_64-linux` and `aarch64-linux`. Both full and lite packages are cached on Cachix.
```nix
inputs.fcitx5-vinput.url = "github:xifan2333/fcitx5-vinput";
# Full version (default):
# inputs.fcitx5-vinput.packages.${system}.default
# Lite version (cloud-only, zero local ONNX runtime):
# inputs.fcitx5-vinput.packages.${system}.fcitx5-vinput-lite
```
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
# Full version (with local sherpa-onnx runtime)
flatpak install https://xifan2333.github.io/flatpak-auto/refs/org.fcitx.Fcitx5.Addon.Vinput.flatpakref
# Lite version (cloud-only, zero local ONNX runtime)
flatpak install https://xifan2333.github.io/flatpak-auto/refs/org.fcitx.Fcitx5.Addon.Vinput.Lite.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
```
### GitHub Releases
Download the package for your system from [GitHub Releases](https://github.com/xifan2333/fcitx5-vinput/releases/latest) (both full and lite variants are provided):
- **Debian / Linux Mint / Ubuntu (other)**: `.deb` (`fcitx5-vinput_*.deb` / `fcitx5-vinput-lite_*.deb`)
- **openSUSE / Fedora (other)**: `.rpm` (`fcitx5-vinput-*.rpm` / `fcitx5-vinput-lite-*.rpm`)
- **Arch-based**: `.pkg.tar.zst` (`fcitx5-vinput-*.pkg.tar.zst` / `fcitx5-vinput-lite-*.pkg.tar.zst`)
- **Flatpak**: `.flatpak` (`fcitx5-vinput.flatpak` / `fcitx5-vinput-lite.flatpak`)
- **Generic Linux**: `tar.gz` (`*_bundled.tar.gz` / `fcitx5-vinput-lite-*.tar.gz`)
### Build from source
**Dependencies:** cmake, fcitx5, pipewire, libcurl, CLI11, Qt6
```bash
# Full version (with local sherpa-onnx ASR runtime)
sudo bash scripts/build-sherpa-onnx.sh
cmake --preset release-clang-mold
cmake --build --preset release-clang-mold
sudo cmake --install build
# Lite version (pure cloud ASR + LLM, zero sherpa-onnx dependency)
cmake --preset release-clang-mold -DVINPUT_ENABLE_LOCAL_ASR=OFF
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 |
| Command Palette Key | `Shift_R` | Open unified command palette (/model, /asr, /scene, /proc) |
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)
## Contributors
## Sponsor
If this project has been helpful to you, feel free to support it.