Added Numen phrases and vosk german

This commit is contained in:
Kaybee 2025-08-15 01:48:40 +02:00
parent 136a5554a7
commit 2f390cb877
Signed by: kb01
SSH key fingerprint: SHA256:kv2GYUy1MZEqusYnS+Y9nMgrpv77jhm+3kknl3UGV1k
18 changed files with 864 additions and 228 deletions

View file

@ -28,15 +28,6 @@ in
'';
};
# models = mkOption {
# type = types.uniq types.listOf types.package;
# default = [vosk-model-small-en-us];
# example = "[vosk-model-small-en-us]";
# description = ''
# List of vosk models to be loaded by numen. They can be referred to using the index, eg. model0 or model1.
# '';
# };
dotoolPkg = mkOption {
type = types.package;
default = pkgs.kb-one.dotool;
@ -49,12 +40,7 @@ in
phrases = mkOption {
type = types.listOf types.path;
default = [
./phrases/character.phrases
./phrases/control.phrases
./phrases/environment.phrases
./phrases/voice.phrases
];
default = [ ];
description = ''
Phrases to be loaded by numen. If empty, the default phrases are used.
'';
@ -70,7 +56,7 @@ in
dotoolXkbLayout = mkOption {
type = types.singleLineStr;
default = "de";
default = "en";
description = ''
The XKB keyboard layout that should be used by dotool.
'';
@ -78,7 +64,6 @@ in
};
config = mkIf cfg.enable {
# System Configuration
environment.systemPackages = [
cfg.numenPkg

View file

@ -1,85 +0,0 @@
space: press space
yes: press Return
tab: press Tab
scape: stick off \
press Escape
# Enable a modifier for the next press
# (The Super modifier is also known as the "Windows key")
shy: mod shift
troy: mod ctrl
hype: mod alt
shock: mod super \
stick off
# Clear modifiers
cleanse: mod clear \
caps off \
stick off
# Enable Caps Lock until the end of the sentence or you say "cleanse"
shout: caps on
<complete>: caps off
# Start holding down each pressed key, and stop by saying "cleanse"
squeeze: run notify-send STICKING & \
stick off \
stick on
hack: press BackSpace
mince: press BackSpace BackSpace
toss: press Delete
smite: press Delete Delete
raze: press BackSpace BackSpace BackSpace BackSpace
# Delete a word (depending on the program)
swipe: press ctrl+BackSpace
left: press Left
right: press Right
up: press Up
down: press Down
lunge: press Left Left
rush: press Right Right
leave: press Left Left Left Left
charge: press Right Right Right Right
# I use these to navigate words and to complete bits of shell autosuggestions
stretch: press ctrl+Right
wrench: press ctrl+Left
# PageDown, PageUp, Home, End
page: press Next
reel: press Prior
home: press Home
end: press End
# Paste the clipboard (depending on the program)
gluten: stick off \
press XF86Paste
# Repeat the previous press etc.
more: repeat 1
bunch: repeat 2
handful: repeat 4
fistful: repeat 8
plateful: repeat 12
frank one: press F1
frank two: press F2
frank three: press F3
frank four: press F4
frank five: press F5
frank six: press F6
frank sept: press F7
frank eight: press F8
frank nine: press F9
frank one newt: press F10
frank one one: press F11
frank one two: press F12
# This saves your changes in vi-style programs
save: caps off \
press Escape colon w Return
# This cycles round splits in Vim
switch: caps off \
press Escape ctrl+w w

View file

@ -1,36 +0,0 @@
# I use these for managing application windows but they just simulate keys,
# so you'll need to configure your desktop environment, or you can use my
# preconfigured desktop environment: https://git.sr.ht/~geb/tiles
# Navigate to the window in the given direction
west: stick off \
press super+Left
east: stick off \
press super+Right
north: stick off \
press super+Up
south: stick off \
press super+Down
# Cycle round the windows
cycle: stick off \
press super+c
recycle: stick off \
press super+C
# Close window
exterminate: stick off \
press super+q
# Toggle fullscreen
screen: stick off \
press super+f
# These two are just for --gadget mode.
# Switch to controlling the gadget
@gadget shock gadget: handler uinput
# Switch to controlling the host machine
@gadget shock host: handler gadget

View file

@ -1,67 +0,0 @@
# Cancel sentence
# For example, "four down no five down" would just do "five down".
@cancel no:
# Transcribe a sentence
# For example, "scribe please type this".
@transcribe scribe: set numen_fmt echo normal \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# Transcribe a sentence formatted...
# With the first letter uppercase
@transcribe scrub: set numen_fmt echo sentence \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# With Each First Letter Uppercase
@transcribe tight scribe: set numen_fmt echo title \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with_underscrores_inbetween
@transcribe snake: set numen_fmt echo snake \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with-dashes-inbetween
@transcribe dash: set numen_fmt echo dash \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with.dots.inbetween
@transcribe dot scribe: set numen_fmt echo dot \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with, commas, inbetween
@transcribe roh scribe: set numen_fmt echo list \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with/slashes/inbetween
@transcribe path scribe: set numen_fmt echo path \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# allsmashedtogether
@transcribe kludge: set numen_fmt echo smash \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# camelCase
@transcribe camel: set numen_fmt echo camel \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# PascalCase
@transcribe pascal: set numen_fmt echo pascal \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# dot.camelCase
@transcribe dot camel: set numen_fmt echo dotcamel \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# dot.PascalCase
@transcribe dot pascal: set numen_fmt echo dotpascal \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# (You can also do "shout scribe" etc.)
# Erase the transcription
ditch: eval /etc/numen/scripts/transcripts | sed 's/./ BackSpace/g; s/^/press/; q'
# Go to the start of the transcription
trudge: eval /etc/numen/scripts/transcripts | sed 's/./ Left/g; s/^/press/; q'
# Menus to type or choose another transcription result
# They use the dmenu command (only works in X11) or the command specified
# by $NUMEN_DMENU or $DMENU (you could use wmenu if you're on Wayland).
transcripts: run /etc/numen/scripts/menu | numenc & \
run sleep 0.1
change: run /etc/numen/scripts/menu change | numenc & \
run sleep 0.1
# Ignore this, vosk-model-small-en-us-0.15 can output huh after a long silence.
huh:

View file

@ -0,0 +1,58 @@
{
stdenv,
lib,
pkgs,
}:
stdenv.mkDerivation {
pname = "numen-phrases";
version = "0.1.0";
src = ./phrases;
installPhase = ''
mkdir $out
mkdir $out/phrases
mkdir $out/phrases/en-active
mkdir $out/phrases/de-active
mkdir $out/phrases/en-inactive
mkdir $out/phrases/de-inactive
install -Dm644 en-active/* -t "$out/phrases/en-active"
install -Dm644 de-active/* -t "$out/phrases/de-active"
install -Dm644 en-inactive/* -t "$out/phrases/en-inactive"
install -Dm644 de-inactive/* -t "$out/phrases/de-inactive"
sed -i "s:/etc/numen/phrases:${placeholder "out"}/phrases:g" \
$out/phrases/en-active/* \
$out/phrases/de-active/* \
$out/phrases/en-inactive/* \
$out/phrases/de-inactive/*
sed -i "s:/etc/numen/scripts:${pkgs.kb-one.numen}/scripts:g" \
$out/phrases/en-active/* \
$out/phrases/de-active/* \
$out/phrases/en-inactive/* \
$out/phrases/de-inactive/*
sed -i "s:/etc/numen/bin:${pkgs.kb-one.numen}/bin:g" \
$out/phrases/en-active/* \
$out/phrases/de-active/* \
$out/phrases/en-inactive/* \
$out/phrases/de-inactive/*
sed -i "s:notify-send:${pkgs.libnotify}/bin/notify-send:g" \
$out/phrases/en-active/* \
$out/phrases/de-active/* \
$out/phrases/en-inactive/* \
$out/phrases/de-inactive/*
sed -i "s:pkill:${pkgs.procps}/bin/pkill:g" \
$out/phrases/en-active/* \
$out/phrases/de-active/* \
$out/phrases/en-inactive/* \
$out/phrases/de-inactive/*
sed -i "s:/usr/share/vosk-models/small-en-us:${pkgs.kb-one.vosk-model-small-en-us}/usr/share/vosk-models/small-en-us:g" \
$out/phrases/de-active/*
sed -i "s:/usr/share/vosk-models/small-de:${pkgs.kb-one.vosk-model-small-de}/usr/share/vosk-models/small-de:g" \
$out/phrases/en-active/*
'';
}

View file

@ -0,0 +1,90 @@
# Letter
auto: press a
ball: press b
cello: press c
dach: press d
eis: press e
fisch: press f
glück: press g
haus: press h
insel: press i
jahr: press j
kuss: press k
licht: press l
mond: press m
nacht: press n
oma: press o
pferd: press p
quiz: press q
rad: press r
soll: press s
tisch: press t
um: press u
v: press v
wer: press w
mix: press x
yoga: press y
zug: press z
# Number
null: press 0
eins: press 1
zwei: press 2
drei: press 3
vier: press 4
fünf: press 5
sechs: press 6
sieb: press 7
acht: press 8
neun: press 9
# Symbol
schrei: press exclam
frag: press question
dollar: press dollar
## TODO € euro: press euro
mail: press at
und: press ampersand
sag: press quotedbl
ast: press apostrophe
zweig: press grave
hut: press asciicircum
## TODO ° grad: press
stop: press comma
steh: press period
halt: press semicolon
kommt: press colon
mit: press plus
ohne: press minus
stern: press asterisk
roh: press numbersign
teil: press percent
gleich: press equal
toll: press asciitilde
schwer: press slash
wert: press backslash
wand: press bar
flur: press underscore
auf: press parenleft
zu: press parenright
an: press bracketleft
aus: press bracketright
berg: press braceleft
tal: press braceright
klein: press less
groß: press greater
# Function Keys
funk eins: press F1
funk zwei: press F2
funk drei: press F3
funk vier: press F4
funk fünf: press F5
funk sechs: press F6
funk sieb: press F7
funk acht: press F8
funk neun: press F9
funk eins null: press F10
funk eins eins: press F11
funk eins zwei: press F12

View file

@ -0,0 +1,51 @@
# -----------------
# Extend
# -----------------
leer: press space
ja: press Return
schieb: press Tab
geh: stick off \
press Escape
super: press Scroll_Lock
sonder: press Super_L
links: press Left
rechts: press Right
hoch: press Up
runter: press Down
lauf: press Left Left
renn: press Right Right
lange: press Left Left Left Left
runde: press Right Right Right Right
zieh: press ctrl+Left
streck: press ctrl+Right
himmel: press Prior
hölle: press Next
heim: press Home
ende: press End
# Delete
werf: press Delete
wirf: press Delete Delete
weg: press BackSpace
weit: press BackSpace BackSpace
fern: press BackSpace BackSpace BackSpace BackSpace
fremd: press ctrl+BackSpace
# Repeat
mehr: repeat 1
paar: repeat 2
oft: repeat 4
viel: repeat 8
ganz viel: repeat 12
# GUI Action
# TODO Cut
# TODO Copy
platz: stick off \
press XF86Paste
# TODO Save

View file

@ -0,0 +1,88 @@
# -----------------
# Modifier & Modes
# -----------------
# Modifier
schau: mod shift
mein: mod ctrl
geil: mod alt
sau: mod super \
stick off
# Mode
laut: caps on
#<complete>: caps off
zusammen: run notify-send --expire-time=3000 --urgency=low --icon=🧩 "🧩 Sticky Mode" & \
stick off \
stick on
# Cancel
sauber: mod clear \
caps off \
stick off
# Cancel sentence
@cancel nein:
# -----------------
# Desktop
# -----------------
# KDE Window
west: stick off \
press super+Left
ost: stick off \
press super+Right
nord: stick off \
press super+Up
süd: stick off \
press super+Down
schirm: stick off \
press super+Prior
#???: stick off \
# press super+Next
zerstören: stick off \
press alt+f4
# KDE Taskbar
#sau eins: press super+1
#sau zwei: press super+2
#sau drei: press super+3
# KDE Workspace
sicht: stick off \
press super+w
#mein funk eins: press ctrl+f1
#mein funk zwei: press ctrl+f2
#mein funk drei: press ctrl+f3
# -----------------
# Switching
# -----------------
# Sleep https://lists.sr.ht/~geb/numen/%3C55fe1488feeb1cee2627d61b9b7e16a74ef5fca0.camel@dalibo.com%3E
schlaf gut: run echo load /etc/numen/phrases/de-inactive/hibernate.phrases | /etc/numen/bin/numenc & notify-send --expire-time=3000 --urgency=low --icon=💤 "💤 Numen geht schlafen..."
# Language
sprache: set LANGUAGE_WORD echo 1
englisch: run [ "LANGUAGE_WORD" ] && { sleep .3; NUMEN_MODEL=/usr/share/vosk-models/small-en-us /etc/numen/bin/numen /etc/numen/phrases/en-active/base.phrases /etc/numen/phrases/en-active/extend.phrases /etc/numen/phrases/en-active/function.phrases /etc/numen/phrases/en-active/transcribe.phrases; } & pkill numen & notify-send --expire-time=3000 --urgency=low --icon=🌍 "🌍 Numen wechselt zu Englisch..."
# Reset Language Module Detection
<complete>: caps off \
set LANGUAGE_WORD
# Activate Language Module
#sprache: set LANGUAGE_WORD echo 1
# Commands
#englisch: run [ "LANGUAGE_WORD" ] && { sleep .3; NUMEN_MODEL=/usr/share/vosk-models/small-en-us /etc/numen/bin/numen /etc/numen/phrases/en-active/voice.phrases /etc/numen/phrases/en-active/environment.phrases /etc/numen/phrases/en-active/control.phrases /etc/numen/phrases/en-active/character.phrases /etc/numen/phrases/en-active/language.phrases; } & pkill numen & notify-send -t 3000 -p -r ${NUMENMODE_NID:-0} -u low -i 🌍 "🌍 Switched to English" ||:
# Reset Language Module Detection
#<complete>: set LANGUAGE_WORD :

View file

@ -0,0 +1,65 @@
# -----------------
# Transcribe
# -----------------
# Transcribe
@transcribe schreib: set numen_fmt echo normal \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# Erase Transcription
tritt: eval /etc/numen/scripts/transcripts | sed 's/./ BackSpace/g; s/^/press/; q'
# Cursor to Start
start: eval /etc/numen/scripts/transcripts | sed 's/./ Left/g; s/^/press/; q'
# -----------------
# Transcription Modes
# -----------------
# First letter uppercase
@transcribe satz: set numen_fmt echo sentence \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# All Words Uppercase
@transcribe oben: set numen_fmt echo title \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with_snake_inbetween
@transcribe schlange: set numen_fmt echo snake \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with-dashes-inbetween
@transcribe strich: set numen_fmt echo dash \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with.dots.inbetween
@transcribe punkt: set numen_fmt echo dot \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# as, list, items
@transcribe auf list: set numen_fmt echo list \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# in/path/format
@transcribe pfad: set numen_fmt echo path \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# allsmashedtogether
@transcribe eng: set numen_fmt echo smash \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# inCamelCase
@transcribe kamel: set numen_fmt echo camel \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# InPascalCase
@transcribe paste: set numen_fmt echo pascal \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# ALL IN CAPS
# laut schreib
# Ignore this, vosk-model-small-de-0.15 can output hmm after a long silence.
hmm:

View file

@ -0,0 +1,8 @@
schlaf gut: run notify-send --expire-time=3000 --urgency=low --icon=💤 "💤 Numen schläft schon"
wach: set WAKEUP_WORD_ONE echo 1
jetzt: eval [ "$WAKEUP_WORD_ONE" ] && echo set WAKEUP_WORD_TWO echo 1 ||:
auf: run [ "$WAKEUP_WORD_TWO" ] && echo load /etc/numen/phrases/de-active/base.phrases /etc/numen/phrases/de-active/extend.phrases /etc/numen/phrases/de-active/function.phrases /etc/numen/phrases/de-active/transcribe.phrases | /etc/numen/bin/numenc & notify-send --expire-time=3000 --urgency=low --icon=☀️ "☀️ Numen wacht auf..." ||:
<complete>: set WAKEUP_WORD_ONE : \
set WAKEUP_WORD_TWO :

View file

@ -1,3 +1,5 @@
# Letter
air: press a
bat: press b
cap: press c
@ -25,6 +27,7 @@ plex: press x
yank: press y
zip: press z
# Number
newt: press 0
one: press 1
two: press 2
@ -36,36 +39,52 @@ sept: press 7
eight: press 8
nine: press 9
ask: press question
plus: press plus
mine: press minus
tide: press asciitilde
# Symbol
yell: press exclam
ask: press question
quid: press dollar
score: press underscore
clause: press colon
same: press semicolon
wax: press parenleft
wane: press parenright
curl: press braceleft
crimp: press braceright
bric: press bracketleft
brac: press bracketright
small: press less
big: press greater
star: press asterisk
hash: press numbersign
mood: press percent
blunt: press asciicircum
## TODO € europe: press euro
snail: press at
gain: press ampersand
vert: press bar
spoke: press quotedbl
mark: press apostrophe
tick: press grave
slash: press slash
slope: press backslash
blunt: press asciicircum
## TODO ° degree: press
list: press comma
point: press period
same: press semicolon
clause: press colon
plus: press plus
mine: press minus
star: press asterisk
hash: press numbersign
mood: press percent
match: press equal
tide: press asciitilde
slash: press slash
slope: press backslash
vert: press bar
score: press underscore
wax: press parenleft
wane: press parenright
bric: press bracketleft
brac: press bracketright
curl: press braceleft
crimp: press braceright
small: press less
big: press greater
# Function Keys
frank one: press F1
frank two: press F2
frank three: press F3
frank four: press F4
frank five: press F5
frank six: press F6
frank sept: press F7
frank eight: press F8
frank nine: press F9
frank one newt: press F10
frank one one: press F11
frank one two: press F12

View file

@ -0,0 +1,51 @@
# -----------------
# Extend
# -----------------
space: press space
yes: press Return
tab: press Tab
scape: stick off \
press Escape
smock: press Scroll_Lock
super: press Super_L
left: press Left
right: press Right
up: press Up
down: press Down
lunge: press Left Left
rush: press Right Right
leave: press Left Left Left Left
charge: press Right Right Right Right
wrench: press ctrl+Left
stretch: press ctrl+Right
reel: press Prior
page: press Next
home: press Home
end: press End
# Delete
toss: press Delete
smite: press Delete Delete
hack: press BackSpace
mince: press BackSpace BackSpace
raze: press BackSpace BackSpace BackSpace BackSpace
swipe: press ctrl+BackSpace
# Repeat
more: repeat 1
bunch: repeat 2
handful: repeat 4
fistful: repeat 8
plateful: repeat 12
# GUI Action
# TODO Cut
# TODO Copy
gluten: stick off \
press XF86Paste
# TODO Save

View file

@ -0,0 +1,75 @@
# -----------------
# Modifier & Modes
# -----------------
# Modifier
shy: mod shift
troy: mod ctrl
hype: mod alt
shock: mod super \
stick off
# Mode
shout: caps on
#<complete>: caps off
squeeze: run notify-send --expire-time=3000 --urgency=low --icon=🧩 "🧩 Sticky Mode" & \
stick off \
stick on
# Cancel
cleanse: mod clear \
caps off \
stick off
# Cancel sentence
@cancel no:
# -----------------
# Desktop
# -----------------
# KDE Window
west: stick off \
press super+Left
east: stick off \
press super+Right
north: stick off \
press super+Up
south: stick off \
press super+Down
screen: stick off \
press super+Prior
#???: stick off \
# press super+Next
exterminate: stick off \
press alt+f4
# KDE Taskbar
#shock one: press super+1
#shock two: press super+2
#shock three: press super+3
# KDE Workspace
view: stick off \
press super+w
#troy frank one: press ctrl+f1
#troy frank two: press ctrl+f2
#troy frank three: press ctrl+f3
# -----------------
# Switching
# -----------------
# Sleep https://lists.sr.ht/~geb/numen/%3C55fe1488feeb1cee2627d61b9b7e16a74ef5fca0.camel@dalibo.com%3E
hibernate: run echo load /etc/numen/phrases/en-inactive/hibernate.phrases | /etc/numen/bin/numenc & notify-send --expire-time=3000 --urgency=low --icon=💤 "💤 Numen goes to sleep..."
# Language
language: set LANGUAGE_WORD echo 1
german: run [ "LANGUAGE_WORD" ] && { sleep .3; NUMEN_MODEL=/usr/share/vosk-models/small-de /etc/numen/bin/numen /etc/numen/phrases/de-active/base.phrases /etc/numen/phrases/de-active/extend.phrases /etc/numen/phrases/de-active/function.phrases /etc/numen/phrases/de-active/transcribe.phrases; } & pkill numen & notify-send --expire-time=3000 --urgency=low --icon=🌍 "🌍 Numen switches to German..."
# Reset Language Module Detection
<complete>: caps off \
set LANGUAGE_WORD

View file

@ -0,0 +1,65 @@
# -----------------
# Transcribe
# -----------------
# Transcribe
@transcribe scribe: set numen_fmt echo normal \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# Erase Transcription
ditch: eval /etc/numen/scripts/transcripts | sed 's/./ BackSpace/g; s/^/press/; q'
# Cursor to Start
trudge: eval /etc/numen/scripts/transcripts | sed 's/./ Left/g; s/^/press/; q'
# -----------------
# Transcription Modes
# -----------------
# First letter uppercase
@transcribe scrub: set numen_fmt echo sentence \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# All Words Uppercase
@transcribe tight scribe: set numen_fmt echo title \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with_snake_inbetween
@transcribe snake: set numen_fmt echo snake \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with-dashes-inbetween
@transcribe dash: set numen_fmt echo dash \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# with.dots.inbetween
@transcribe dot scribe: set numen_fmt echo dot \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# as, list, items
@transcribe roh scribe: set numen_fmt echo list \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# in/path/format
@transcribe path scribe: set numen_fmt echo path \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# allsmashedtogether
@transcribe kludge: set numen_fmt echo smash \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# inCamelCase
@transcribe camel: set numen_fmt echo camel \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# InPascalCase
@transcribe pascal: set numen_fmt echo pascal \
pen /etc/numen/scripts/tweak; /etc/numen/scripts/transcripts | head -n 1
# ALL IN CAPS
# shout scribe
# Ignore this, vosk-model-small-en-us-0.15 can output huh after a long silence.
huh:

View file

@ -0,0 +1,9 @@
# Sleep
hibernate: run notify-send --expire-time=3000 --urgency=low --icon=💤 "💤 Numen is allready asleep"
wake: set WAKEUP_WORD_ONE echo 1
up: eval [ "$WAKEUP_WORD_ONE" ] && echo set WAKEUP_WORD_TWO echo 1 ||:
now: run [ "$WAKEUP_WORD_TWO" ] && echo load /etc/numen/phrases/en-active/base.phrases /etc/numen/phrases/en-active/extend.phrases /etc/numen/phrases/en-active/function.phrases /etc/numen/phrases/en-active/transcribe.phrases | /etc/numen/bin/numenc & notify-send --expire-time=3000 --urgency=low --icon=☀️ "☀️ Numen is waking up..." ||:
<complete>: set WAKEUP_WORD_ONE : \
set WAKEUP_WORD_TWO :

View file

@ -0,0 +1,246 @@
# Phrases Documentation
## Base
### Letter
| Letter | Phrase en | Phrase de |
| ------ | --------- | --------- |
| a | air | auto |
| b | bat | ball |
| c | cap | cello |
| d | drum | dach |
| e | each | eis |
| f | fig | fisch |
| g | gust | glück |
| h | hoof | haus |
| i | ice | insel |
| j | jive | jahr |
| k | kid | kuss |
| l | link | licht |
| m | made | mond |
| n | nerd | nacht |
| o | odd | oma |
| p | pit | pferd |
| q | quench | quiz |
| r | red | rad |
| s | sun | soll |
| t | trap | tisch |
| u | urge | um |
| v | void | v |
| w | whiz | wald |
| x | plex | mix |
| y | yank | yoga |
| z | zip | zug |
| ä | | |
| ö | | |
| ü | | |
| ß | | |
### Number
| Number | Phrase en | Phrase de |
| ------ | --------- | --------- |
| 0 | newt | null |
| 1 | one | eins |
| 2 | two | zwei |
| 3 | three | drei |
| 4 | four | vier |
| 5 | five | fünf |
| 6 | six | sechs |
| 7 | sept | sieb |
| 8 | eight | acht |
| 9 | nine | neun |
### Symbol
| Symbol | Phrase en | Phrase de |
| ------ | --------- | --------- |
| ! | yell | schrei |
| ? | ask | frag |
| $ | quid | dollar |
| € todo | europe | euro |
| @ | snail | mail |
| & | gain | und |
| " | spoke | sag |
| ' | mark | ast |
| ` | tick | zweig |
| ^ | blunt | hut |
| ° todo | degree | grad |
| , | list | stop |
| . | point | steh |
| ; | same | halt |
| : | clause | kommt |
| + | plus | mit |
| - | mine | ohne |
| * | star | stern |
| # | hash | roh |
| % | mood | teil |
| = | match | gleich |
| ~ | tide | toll |
| / | slash | schwer |
| \ | slope | wert |
| \| | vert | wand |
| _ | score | flur |
| ( | wax | auf |
| ) | wane | zu |
| [ | bric | an |
| ] | brac | aus |
| { | curl | berg |
| } | crip | tal |
| < | small | klein |
| > | big | groß |
### Function Keys
| Key | Phrase en | Phrase de |
| ---- | -------------- | -------------- |
| F1 | frank one | funk eins |
| F2 | frank two | funk zwei |
| F3 | frank three | funk drei |
| F4 | frank four | funk vier |
| F5 | frank five | funk fünf |
| F6 | frank six | funk sechs |
| F7 | frank sept | funk sieb |
| F8 | frank eight | funk acht |
| F9 | frank nine | funk neun |
| F10 | frank one newt | funk eins null |
| F11 | frank one one | funk eins eins |
| F12 | frank one two | funk eins zwei |
## Extend
| Extend | Phrase en | Phrase de |
| ------------ | --------- | --------- |
| Space | space | leer |
| Enter | yes | ja |
| Tab | tab | schieb |
| Esc | scape | geh |
| Super Key | super | super |
| Compose | smock | sonder |
| | | |
| Left | left | links |
| Right | right | rechts |
| Up | up | hoch |
| Down | down | runter |
| 2x Left | lunge | lauf |
| 2x Right | rush | renn |
| 4x Left | leave | lange |
| 4x Right | charge | runde |
| Ctrl + Left | wrench | zieh |
| Ctrl + Right | stretch | streck |
| | | |
| Page Up | reel | himmel |
| Page Down | page | hölle |
| Home | home | heim |
| End | end | ende |
| Delete | Phrase en | Phrase de |
| ---------------- | --------- | --------- |
| Delete | toss | werf |
| Delete x 2 | smite | wirf |
| Backspace | hack | weg |
| Backspace x 2 | mince | weit |
| Backspace x 4 | raze | fern |
| Ctrl + Backspace | swipe | fremd |
| Repeat | Phrase en | Phrase de |
| ------ | --------- | --------- |
| + 1x | more | mehr |
| + 2x | bunch | paar |
| + 4x | handful | oft |
| + 8x | fistful | viel |
| + 12x | plateful | ganz viel |
| GUI Action | Phrase en | Phrase de |
| ---------- | --------- | --------- |
| Cut | | |
| Copy | | |
| Paste | gluten | platz |
| Save | | |
## Function
### Modifier & Modes
Works until end of Scentence or Cancel Keyword
| Modifier | Phrase en | Phrase de |
| -------- | --------- | --------- |
| Shift | shy | schau |
| Control | troy | mein |
| Alt | hype | geil |
| Super | shock | sau |
| Mode | Phrase en | Phrase de |
| --------- | --------- | --------- |
| Capslock | shout | laut |
| Hold Keys | squeeze | zusammen |
| Cancel | Phrase en | Phrase de |
| --------------- | --------- | --------- |
| Cancel | cleanse | sauber |
| Cancel sentence | no | nein |
### Desktop
| KDE Window | Phrase en | Phrase de |
| ----------- | ---------------- | --------- |
| Tile Left | west | west |
| Tile Right | east | ost |
| Tile Up | north | nord |
| Tile Down | south | süd |
| Maximize | screen | schirm |
| Minimize | | |
| Close | exterminate | zerstören |
| KDE Taskbar | Phrase en | Phrase de |
| ----------- | ---------------- | --------- |
| Window 1 | shock one | sau eins |
| Window 2 | shock two | sau zwei |
| Window 2 | shock three | sau drei |
| KDE Workspace | Phrase en | Phrase de |
| ------------- | ---------------- | -------------- |
| Overview | view | sicht |
| Workspace 1 | troy frank one | mein funk eins |
| Workspace 2 | troy frank two | mein funk zwei |
| Workspace 3 | troy frank three | mein funk drei |
### Switching
| Sleep | Phrase en | Phrase de |
| --------- | ----------- | -------------- |
| Numen off | hibernate | schlaf gut |
| Numen on | wake up now | wach jetzt auf |
| Langauge | Phrase en | Phrase de |
| --------- | --------------- | ---------------- |
| german | language german | |
| english | | sprache englisch |
## Transcribe
| Transcribe | Phrase en | Phrase de |
| ------------------- | --------- | --------- |
| Transcribe | scribe | schreib |
| Erase Transcription | ditch | tritt |
| Cursor to Start | trudge | start |
| Transcription Modes | Phrase en | Phrase de |
| ---------------------- | ------------ | -------------- |
| First letter uppercase | scrub | satz |
| All Words Uppercase | tight scribe | oben |
| with_snake_inbetween | snake | schlange |
| with-dashes-inbetween | dash | strich |
| with.dots.inbetween | dot scribe | punkt |
| as, list, items | roh scribe | auf list |
| in/path/format | path scribe | pfad |
| allsmashedtogether | kludge | eng |
| inCamelCase | camel | kamel |
| InPascalCase | pascal | paste |
| ALL IN CAPS | shout scribe | laut schreib |

View file

@ -1,7 +1,7 @@
{ stdenv, fetchurl, unzip }:
# Source: https://github.com/Lykos153/numen-nix
stdenv.mkDerivation {
name = "vosk-model-small-en-us";
name = "vosk-model-small-de";
version = "0.15";
src = fetchurl {
url = "https://alphacephei.com/vosk/models/vosk-model-small-de-0.15.zip";
@ -15,3 +15,4 @@ stdenv.mkDerivation {
cp -r . $out/usr/share/vosk-models/small-de
'';
}

View file

@ -126,6 +126,16 @@
# Tailscale
services.tailscale.enable = true;
services.numen = {
enable = true;
autoStart = true;
phrases = [
"${pkgs.kb-one.numen-phrases}/phrases/en-inactive/hibernate.phrases"
];
dotoolXkbLayout = "de";
};
# Packages installed in system profile. Search Packages: $ nix search wget
environment.systemPackages = with pkgs; [
vim
@ -137,8 +147,11 @@
python3
sops
kb-one.numen
kb-one.numen-phrases
libnotify
kb-one.dotool
kb-one.vosk-model-small-en-us
kb-one.vosk-model-small-de
];
system.stateVersion = "24.11"; # NEVER Change this!