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";
 | 
						|
          }
 | 
						|
        ];
 | 
						|
      };
 | 
						|
    })
 | 
						|
  ]);
 | 
						|
}
 |