25 Φεβρουαρίου 2026 / Lefteris Iliadis (SomniusX)
Οδηγός για Offline Voxtype-style Dictation σε Arch & Hyprland και άλλες διανομές (#3 post)
25 Φεβρουαρίου 2026
Αν θες να έχεις push-to-talk voice-to-text σε Arch, χωρίς cloud, με Hyprland ή οποιονδήποτε Wayland compositor, εδώ είναι οδηγός βήμα-βήμα που δουλεύει.
Αν θες να έχεις push-to-talk voice-to-text σε Arch, χωρίς cloud, με Hyprland ή οποιονδήποτε Wayland compositor, εδώ είναι οδηγός βήμα-βήμα που δουλεύει.
1. Εγκατάσταση απαραίτητων πακέτων
Ανοίγεις τερματικό και τρέχεις:
paru -S whisper.cpp wtype wl-clipboard alsa-utils libnotify
whisper.cpp→ offline speech-to-textwtype→ γράφει κείμενο στο ενεργό παράθυροwl-clipboard→ προαιρετικά για copy στο clipboardalsa-utils→ για να καταγράφει το μικρόφωνοlibnotify→ για να δείχνεις notifications στην οθόνη
2. Κατέβασε το μοντέλο
Δημιούργησε φάκελο και κατέβασε το base μοντέλο:
mkdir -p ~/.local/share/whisper
cd ~/.local/share/whisper
wget https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin
Το base.en είναι γρήγορο και αξιόπιστο για τους περισσότερους υπολογιστές. Αν έχεις δυνατό CPU, μπορείς να πάρεις το small.en για ακόμα καλύτερη ακρίβεια.
Προφανώς αυτό είναι για ΑΓΓΛΙΚΑ ΜΟΝΟ, ψάχνω πως μπορώ ανάλογα το keybord layout να διαλέγει το ανάλογο whisper model.. (διαβάστε 2ο post)
3. Δημιουργία του toggle push-to-talk script
Φτιάχνουμε ένα script που κάνει record όταν πατάς και μετά transcribe όταν πατάς ξανά:
mkdir -p ~/.local/bin
nano ~/.local/bin/voxtype
Και μέσα στο αρχείο βάζεις:
#!/usr/bin/env bash
MODEL="$HOME/.local/share/whisper/ggml-base.en.bin"
TMP_WAV="/tmp/whisper-record.wav"
TMP_OUT="/tmp/whisper-output.txt"
# If recording is running, stop and transcribe
if pgrep -x "arecord" > /dev/null; then
pkill -INT arecord
notify-send "Voxtype" "Processing..."
# Transcribe using whisper.cpp
whisper-cli -m "$MODEL" -f "$TMP_WAV" -otxt -of "/tmp/whisper-output" > /dev/null 2>&1
# Check correct output file
OUTPUT_FILE="/tmp/whisper-output.txt"
if [[ -f "$OUTPUT_FILE" ]]; then
cat "$OUTPUT_FILE" | wtype - # type into active window
cat "$OUTPUT_FILE" | wl-copy # optional copy to clipboard
else
notify-send "Voxtype" "Error: transcription file missing"
fi
rm -f "$TMP_WAV" "$TMP_OUT"
exit 0
fi
# Otherwise, start recording
notify-send "Voxtype" "Recording..."
## do -c 1 for mono recording ## arecord -f cd -c 1 -t wav "$TMP_WAV" &
arecord -f cd -t wav "$TMP_WAV" &
# Ξεκίνα καταγραφή
notify-send "Voxtype" "Recording..."
arecord -f cd -c 1 -t wav "$TMP_WAV" &
Εάν έχεις πρόβλημα μπορεί να φταίει που γράφει Stereo ήχο το μικρόφωνο, μπορείς με -c 1 να γράψει Mono.
Κάνουμε το script εκτελέσιμο:
chmod +x ~/.local/bin/voxtype
4. Ρύθμιση keybind στο Hyprland
Άνοιξε το αρχείο ρυθμίσεων:
nano ~/.config/hypr/hyprland.conf
Και πρόσθεσε μια γραμμή για το keybind (πχ SUPER + X):
bind = SUPER, X, exec, ~/.local/bin/voxtype
Μετά κάνεις reload Hyprland:
hyprctl reload
5. Πως δουλεύει
Εστίασε σε ένα text field (πχ browser ή editor)
Πάτα
SUPER + X→ ξεκινά η καταγραφή, βλέπεις notification “Recording…”Μίλα όσο θέλεις
Πάτα
SUPER + Xξανά → σταματά η καταγραφή, τρέχει το whisper, και το κείμενο γράφεται αυτόματα στο ενεργό παράθυρο και αντιγράφεται στο clipboard
6. Tips / Βελτιώσεις
Αν βλέπεις garbled text, βεβαιώσου ότι η γραμμή
arecord -f cd -c 1 -t wavχρησιμοποιεί-c 1(mono)Μπορείς να αλλάξεις το μοντέλο σε
small.enγια πιο ακριβή αναγνώρισηΤα notifications κάνουν πιο ξεκάθαρο πότε ηχογραφεί και πότε επεξεργάζεται πριν το κάνει paste
Με αυτόν τον τρόπο έχεις ένα fully offline Voxtype-style dictation σε Arch και χωρίς root, χωρίς ydotool και χωρίς daemons, που δουλεύει σταθερά σε Wayland/Hyprland.
7. Τίτλοι Τέλους
- Προσπάθεια ίδιας λειτουργίας σε άλλα wm/de, π.χ. kde/gnome/κ.α.
- Ιδέα την πήρα από το VoxType του Omarchy αλλά χωρίς το ουσιαστικό VoxType.io
- Προσπάθεια χρήσης Ελληνικών είτε αναγνωρίζοντας το keyboard layout είτε με άλλο keyboard binding (πιο εύκολο) (διαβάστε 2ο post)