This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

radio: split out tts in tts.nix

+43 -30
+2 -30
2configs/services/radio/news.nix
··· 1 1 { self, pkgs, ... }: 2 2 let 3 - 4 - tts = pkgs.writers.writeBashBin "tts" '' 5 - set -efu 6 - set -x 7 - 8 - offset=0 9 - OUTPUT=$(mktemp -d) 10 - trap 'rm -rf "$OUTPUT"' EXIT 11 - SPEAKER=$[ $RANDOM % 900 ] 12 - while read line; do 13 - echo "$line" | 14 - ${pkgs.piper-tts}/bin/piper \ 15 - --model ${pkgs.fetchzip { 16 - url = "https://github.com/rhasspy/piper/releases/download/v0.0.2/voice-en-us-libritts-high.tar.gz"; 17 - hash = "sha256-jCoK4p0O7BuF0nr6Sfj40tpivCvU5M3GHKQRg1tfIO8="; 18 - stripRoot = false; 19 - }}/en-us-libritts-high.onnx \ 20 - -s "$SPEAKER" \ 21 - -f "$OUTPUT"/"$offset".wav >/dev/null 22 - 23 - ((offset+=1)) 24 - done 25 - 26 - ${pkgs.sox}/bin/sox "$OUTPUT"/*.wav "$OUTPUT"/all.wav 27 - cat "$OUTPUT"/all.wav 28 - ''; 29 - 30 3 send_to_radio = pkgs.writers.writeDashBin "send_to_radio" '' 31 4 ${pkgs.vorbis-tools}/bin/oggenc - | 32 5 ${pkgs.cyberlocker-tools}/bin/cput news.ogg ··· 67 40 systemd.services.newsshow = { 68 41 path = [ 69 42 newsshow 70 - tts 71 43 send_to_radio 72 44 gc_news 73 45 get_current_news ··· 76 48 script = '' 77 49 set -efu 78 50 retry -t 5 -d 10 -- newsshow | 79 - retry -t 5 -d 10 -- tts | 51 + retry -t 5 -d 10 -- /run/current-system/sw/bin/tts | 80 52 retry -t 5 -d 10 -- send_to_radio 81 53 ''; 82 54 startAt = "*:00:00"; ··· 97 69 }; 98 70 imports = [ 99 71 self.inputs.stockholm.nixosModules.htgen 72 + ./tts.nix 100 73 ]; 101 74 krebs.htgen.news = { 102 75 port = 7999; ··· 130 103 environment.systemPackages = [ 131 104 send_to_radio 132 105 newsshow 133 - tts 134 106 ]; 135 107 }
+41
2configs/services/radio/tts.nix
··· 1 + { pkgs, ... }: 2 + let 3 + model = pkgs.runCommand "model" {} '' 4 + mkdir -p $out 5 + ln -s ${pkgs.fetchurl { 6 + url = "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/libritts/high/en_US-libritts-high.onnx?download=true"; 7 + hash = "sha256-kSelWeEWA/ELNm0aIKx0JoJggdvFId5MJCDFdyjXPw8="; 8 + }} $out/model.onnx 9 + ln -s ${pkgs.fetchurl { 10 + url = "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/libritts/high/en_US-libritts-high.onnx.json?download=true.json"; 11 + hash = "sha256-Lv3G1/lUWIuBgBMsvZuAAZM/3QCTLJK8kv0NICip6z0="; 12 + }} $out/model.onnx.json 13 + ''; 14 + 15 + tts = pkgs.writers.writeBashBin "tts" '' 16 + set -efu 17 + set -x 18 + 19 + offset=0 20 + OUTPUT=$(mktemp -d) 21 + trap 'rm -rf "$OUTPUT"' EXIT 22 + SPEAKER=$[ $RANDOM % 900 ] 23 + while read line; do 24 + echo "$line" | 25 + ${pkgs.piper-tts}/bin/piper \ 26 + --model ${model}/model.onnx \ 27 + -s "$SPEAKER" \ 28 + -f "$OUTPUT"/"$offset".wav >/dev/null 29 + 30 + ((offset+=1)) 31 + done 32 + 33 + ${pkgs.sox}/bin/sox "$OUTPUT"/*.wav "$OUTPUT"/all.wav 34 + cat "$OUTPUT"/all.wav 35 + ''; 36 + in 37 + { 38 + environment.systemPackages = [ 39 + tts 40 + ]; 41 + }