summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlassulus <git@lassul.us>2023-05-25 11:19:37 +0200
committerlassulus <git@lassul.us>2023-05-25 11:19:37 +0200
commit6ebc5693d6a57233115d968723dd20961857920d (patch)
tree6d626a7c78c74b69cfbe97ab4a32a965b04845cc
parent63573a5fa0807a334d35e900d9df8db7c1539acf (diff)
l radio: fix tts for long texts
-rw-r--r--lass/2configs/services/radio/news.nix35
1 files changed, 28 insertions, 7 deletions
diff --git a/lass/2configs/services/radio/news.nix b/lass/2configs/services/radio/news.nix
index d726692d..62f7f548 100644
--- a/lass/2configs/services/radio/news.nix
+++ b/lass/2configs/services/radio/news.nix
@@ -1,6 +1,31 @@
{ config, lib, pkgs, ... }:
let
+ tts = pkgs.writers.writeBashBin "tts" ''
+ set -efu
+
+ offset=0
+ OUTPUT=$(mktemp -d)
+ trap 'rm -rf "$OUTPUT"' EXIT
+ SPEAKER=$[ $RANDOM % 900 ]
+ while read line; do
+ echo "$line" |
+ ${pkgs.larynx}/bin/larynx \
+ --model ${pkgs.fetchzip {
+ url = "https://github.com/rhasspy/piper/releases/download/v0.0.2/voice-en-us-libritts-high.tar.gz";
+ hash = "sha256-jCoK4p0O7BuF0nr6Sfj40tpivCvU5M3GHKQRg1tfIO8=";
+ stripRoot = false;
+ }}/en-us-libritts-high.onnx \
+ -s "$SPEAKER" \
+ -f "$OUTPUT"/"$offset".wav
+
+ ((offset+=1))
+ done
+
+ ${pkgs.sox}/bin/sox "$OUTPUT"/*.wav "$OUTPUT"/all.wav
+ cat "$OUTPUT"/all.wav
+ '';
+
send_to_radio = pkgs.writers.writeDashBin "send_to_radio" ''
${pkgs.vorbis-tools}/bin/oggenc - |
${pkgs.cyberlocker-tools}/bin/cput news.ogg
@@ -41,20 +66,16 @@ in
systemd.services.newsshow = {
path = [
newsshow
+ tts
send_to_radio
gc_news
get_current_news
pkgs.retry
- pkgs.larynx
];
script = ''
set -efu
- retry -t 5 -d 10 -- newsshow | tr '\n' ' ' |
- retry -t 5 -d 10 -- larynx --model ${pkgs.fetchzip {
- url = "https://github.com/rhasspy/piper/releases/download/v0.0.2/voice-en-us-libritts-high.tar.gz";
- hash = "sha256-jCoK4p0O7BuF0nr6Sfj40tpivCvU5M3GHKQRg1tfIO8=";
- stripRoot = false;
- }}/en-us-libritts-high.onnx -s $[ $RANDOM % 900 ] -f - |
+ retry -t 5 -d 10 -- newsshow |
+ retry -t 5 -d 10 -- tts |
retry -t 5 -d 10 -- send_to_radio
'';
startAt = "*:00:00";