mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 12:29:19 -08:00
feat(mediabox): wyoming
This commit is contained in:
parent
a5966c0724
commit
a202d0703f
9 changed files with 283 additions and 2 deletions
22
nixos/wyoming/openwakeword.nix
Normal file
22
nixos/wyoming/openwakeword.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf mkDefault;
|
||||
cfg = config.services.wyoming.openwakeword;
|
||||
in {
|
||||
imports = [./wyoming.nix];
|
||||
services.wyoming.openwakeword = {
|
||||
enable = mkDefault true;
|
||||
uri = mkDefault "tcp://0.0.0.0:10400";
|
||||
# models: https://github.com/dscripka/openWakeWord?tab=readme-ov-file#pre-trained-models
|
||||
preloadModels = mkDefault [
|
||||
"ok_nabu"
|
||||
"hey_rhasspy"
|
||||
];
|
||||
};
|
||||
|
||||
# allow access to LAN satellites
|
||||
networking.firewall.interfaces.local.allowedTCPPorts = mkIf cfg.enable [cfg.port];
|
||||
}
|
||||
18
nixos/wyoming/piper.nix
Normal file
18
nixos/wyoming/piper.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkDefault;
|
||||
in {
|
||||
imports = [./wyoming.nix];
|
||||
services.wyoming.piper = {
|
||||
# voices: https://rhasspy.github.io/piper-samples/
|
||||
servers.piper = {
|
||||
enable = mkDefault true;
|
||||
uri = mkDefault "tcp://0.0.0.0:10200";
|
||||
voice = mkDefault "en_GB-semaine-medium";
|
||||
speaker = mkDefault 0;
|
||||
};
|
||||
};
|
||||
}
|
||||
40
nixos/wyoming/whisper.nix
Normal file
40
nixos/wyoming/whisper.nix
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf mkForce mkDefault;
|
||||
cfg = config.services.wyoming.faster-whisper;
|
||||
inherit (cfg.servers) whisper;
|
||||
useRocm = false; # broken...
|
||||
in {
|
||||
imports = [./wyoming.nix];
|
||||
services.wyoming.faster-whisper = {
|
||||
# models: https://github.com/rhasspy/wyoming-faster-whisper/releases/tag/v2.0.0
|
||||
servers.whisper = {
|
||||
enable = mkDefault true;
|
||||
language = mkDefault "en";
|
||||
model = let
|
||||
#distil = "distil";
|
||||
#distil = "distil-whisper/distil-whisper";
|
||||
distil = "Systran/faster-distil-whisper";
|
||||
#size = "small.en";
|
||||
size = "medium.en";
|
||||
#size = "large-v3";
|
||||
in
|
||||
mkDefault "${distil}-${size}";
|
||||
uri = mkDefault "tcp://0.0.0.0:10300";
|
||||
device = mkIf useRocm "cuda";
|
||||
};
|
||||
};
|
||||
systemd.services.wyoming-faster-whisper-whisper = mkIf whisper.enable {
|
||||
serviceConfig = mkIf (whisper.device != "cpu" && useRocm) {
|
||||
DeviceAllow = [
|
||||
"char-drm"
|
||||
"char-kfd"
|
||||
];
|
||||
SupplementaryGroups = ["render"];
|
||||
PrivateDevices = mkForce false;
|
||||
};
|
||||
};
|
||||
}
|
||||
22
nixos/wyoming/wyoming.nix
Normal file
22
nixos/wyoming/wyoming.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf mkMerge;
|
||||
inherit (lib.attrsets) mapAttrsToList;
|
||||
cfgs = config.services.wyoming;
|
||||
in {
|
||||
config = {
|
||||
networking.firewall.interfaces.lan.allowedTCPPorts = let
|
||||
mkServerPort = _: server: mkIf (server.enable && server ? port) server.port;
|
||||
mkServicePorts = name: cfg:
|
||||
mapAttrsToList mkServerPort
|
||||
cfg.servers
|
||||
or {
|
||||
${name} = cfg;
|
||||
};
|
||||
in
|
||||
mkMerge (mapAttrsToList mkServicePorts cfgs);
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue