Skip to content

makelinux/multi-dictate

Repository files navigation

Multi-Dictate

A voice dictation application for Linux that supports multiple languages. The tool captures voice input, converts it to text using speech recognition, and types it into any application while properly handling keyboard layout conversions.

Features

Automatic keybinding
Multi-language support with automatic language detection based on keyboard layout
Text-to-speech echo of recognized text
Visual status indicator during recording

System Requirements

Operating System

Linux (tested on Fedora 42)
X11 or Wayland display server

Installation

The installation script will: Install system dependencies
Install Python dependencies
Set up the application as a system service
Enable automatic startup on boot

# Clone the repository (if not already done)
git clone https://github.com/makelinux/multi-dictate.git
cd multi-dictate

# Run the installation script
./install.sh

Uninstallation

To completely remove the application:

./uninstall.sh

Usage

After Installation

Once installed with ./install.sh, the application is installed as a Python package and the service runs automatically:

  1. Check service status:

    systemctl --user status dictate.service
  2. View service logs:

    journalctl --user -u dictate.service -f
  3. Control the service:

    # Stop the service
    systemctl --user stop dictate.service
    
    # Start the service
    systemctl --user start dictate.service
    
    # Restart the service
    systemctl --user restart dictate.service
    
    # Disable auto-start on boot
    systemctl --user disable dictate.service

Using the dictation

  1. Focus cursor on any input field or text editor
  2. Use one of the following keybindings: Super+F9: Toggle speech echo on/off
    Super+F10: Start manual recording
    Super+F11: Stop manual recording
    Super+F12: Toggle recording
    Ctrl+Shift+S: Record until silence detected
  3. Speak clearly into your microphone
  4. The recognized text will be typed at your cursor position

Configuration

Edit ~/.config/multi-dictate/dictate.yaml to configure: Configure custom keybindings to activate the dictation
Recognition language preferences
Text-to-speech settings
Voice activity detection parameters

Troubleshooting

Check keybindings

dconf read /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings

dconf dump /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/

Check "Remote intergation" - orange icon on the top of the screen

Audio Issues

  1. Check PulseAudio is running:

    pactl info
  2. Test microphone:

    parecord test.wav
    paplay test.wav

Non-QWERTY Layout Issues

If text is typed incorrectly on non-QWERTY layouts:

  1. Verify XKB tools are installed:

    which setxkbmap xkbcomp
  2. Check layout detection:

    python -c "from kbd_utils import get_current_keyboard_layout; print(get_current_keyboard_layout())"
  3. Test layout mapping:

    python test_dictate.py
  4. On Wayland, you may see warnings about Xwayland - these can be safely ignored.

Development

Run from source directory:

./run_dictate.py

Interfaces

Custom keyboard bindings
FIFO for keybindings
pasimple - PulseAudio interface
webrtcvad - Voice Activity Detection
speech_recognition, Google Speech Recognition
gtts - Google Text-to-Speech for echo mode
tkinter - for Visual status indicator
pyautogui.typewrite - for final text output into keyboard buffer
Proper text conversion for non-QWERTY layouts (AZERTY, QWERTZ, etc.)
Remote desktop access

Optional packages: python-Levenshtein - For calibration mode only (--calibrate)
vosk - For offline speech recognition

Testing

Run the built-in tests:

make check

Future features

Fast clipboard-based text insertion (much faster than typing)

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

A user-friendly voice dictation application for Linux that supports multiple languages.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published