# Dictation Service Setup Guide

This guide will help you set up the dictation service as a system service with global keybindings for voice-to-text input.

## Prerequisites

- Ubuntu/GNOME desktop environment
- Python 3.12+ (already specified in project)
- uv package manager
- Microphone access
- Audio system (PulseAudio)

## Installation Steps

### 1. Install Dependencies

```bash
# Install system dependencies
sudo apt update
sudo apt install python3.12 python3.12-venv portaudio19-dev

# Install Python dependencies with uv
uv sync
```

### 2. Set Up System Service

```bash
# Copy service file to systemd directory
sudo cp dictation.service /etc/systemd/system/

# Reload systemd daemon
sudo systemctl daemon-reload

# Enable and start the service
systemctl --user enable dictation.service
systemctl --user start dictation.service
```

### 3. Configure Global Keybinding

```bash
# Run the keybinding setup script
./setup-keybindings.sh
```

This will configure Alt+D as the global shortcut to toggle dictation.

### 4. Verify Installation

```bash
# Check service status
systemctl --user status dictation.service

# Test the toggle script
./toggle-dictation.sh
```

## Usage

1. **Start Dictation**: Press Alt+D (or run `./toggle-dictation.sh`)
2. **Wait for notification**: You'll see "Dictation Started"
3. **Speak clearly**: The service will transcribe your voice to text
4. **Text appears**: Transcribed text will be typed wherever your cursor is
5. **Stop Dictation**: Press Alt+D again

## Troubleshooting

### Service Issues

```bash
# Check service logs
journalctl --user -u dictation.service -f

# Restart service
systemctl --user restart dictation.service
```

### Audio Issues

```bash
# Test microphone
arecord -D pulse -f cd -d 5 test.wav
aplay test.wav

# Check PulseAudio
pulseaudio --check -v
```

### Keybinding Issues

```bash
# Check current keybindings
gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys

# Reset keybindings if needed
gsettings reset org.gnome.settings-daemon.plugins.media-keys custom-keybindings
```

### Permission Issues

```bash
# Add user to audio group
sudo usermod -a -G audio $USER

# Check microphone permissions
pacmd list-sources | grep -A 10 index
```

## Configuration

### Service Configuration

Edit `/etc/systemd/user/dictation.service` to modify:
- User account
- Working directory
- Environment variables

### Keybinding Configuration

Run `./setup-keybindings.sh` again to change the keybinding, or edit the script to use a different shortcut.

### Dictation Behavior

The dictation service can be configured by modifying:
- `src/dictation_service/vosk_dictation.py` - Main dictation logic
- Model files for different languages
- Audio settings and formatting

## Files Created

- `dictation.service` - Systemd service file
- `toggle-dictation.sh` - Dictation control script
- `setup-keybindings.sh` - Keybinding configuration script

## Removing the Service

```bash
# Stop and disable service
systemctl --user stop dictation.service
systemctl --user disable dictation.service

# Remove service file
sudo rm /etc/systemd/system/dictation.service
sudo systemctl daemon-reload

# Remove keybinding
gsettings reset org.gnome.settings-daemon.plugins.media-keys custom-keybindings
```