63 lines
1.6 KiB
Nix
63 lines
1.6 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
...
|
|
}: {
|
|
options.services.wyoming.enable = lib.mkEnableOption "should wyoming be enabled on this device";
|
|
config = lib.mkIf config.services.wyoming.enable (lib.mkMerge [
|
|
{
|
|
services.wyoming = {
|
|
# Text to speech
|
|
piper = {
|
|
servers = {
|
|
"en" = {
|
|
enable = true;
|
|
# see https://github.com/rhasspy/rhasspy3/blob/master/programs/tts/piper/script/download.py
|
|
voice = "en-us-amy-low";
|
|
uri = "tcp://0.0.0.0:10200";
|
|
speaker = 0;
|
|
};
|
|
};
|
|
};
|
|
|
|
# Speech to text
|
|
faster-whisper = {
|
|
servers = {
|
|
"en" = {
|
|
enable = true;
|
|
# see https://github.com/rhasspy/rhasspy3/blob/master/programs/asr/faster-whisper/script/download.py
|
|
model = "tiny-int8";
|
|
language = "en";
|
|
uri = "tcp://0.0.0.0:10300";
|
|
device = "cpu";
|
|
};
|
|
};
|
|
};
|
|
|
|
openwakeword = {
|
|
enable = true;
|
|
uri = "tcp://0.0.0.0:10400";
|
|
preloadModels = [
|
|
"ok_nabu"
|
|
];
|
|
# TODO: custom models
|
|
};
|
|
};
|
|
|
|
# needs access to /proc/cpuinfo
|
|
systemd.services."wyoming-faster-whisper-en".serviceConfig.ProcSubset = lib.mkForce "all";
|
|
}
|
|
(lib.mkIf config.host.impermanence.enable {
|
|
environment.persistence."/persist/system/root" = {
|
|
enable = true;
|
|
hideMounts = true;
|
|
directories = [
|
|
{
|
|
directory = "/var/lib/private/wyoming";
|
|
mode = "0700";
|
|
}
|
|
];
|
|
};
|
|
})
|
|
]);
|
|
}
|