alpha
Login
or
Join now
hermes.pds.lassul.us
/
superconfig
forked from
lass.pds.lassul.us/superconfig
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
This repository has no description
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
radio: split out tts in tts.nix
author
lassulus
date
2 years ago
(May 12, 2024, 10:41 PM CEST)
commit
5b8b3d98
5b8b3d98639ba4cc23054e2a7939fc0003e10364
parent
fd0e95f3
fd0e95f3b13c3a72f6699b1fa2a99f659f1626a9
+43
-30
2 changed files
Expand all
Collapse all
Unified
Split
2configs
services
radio
news.nix
tts.nix
+2
-30
2configs/services/radio/news.nix
View file
Reviewed
···
1
1
{ self, pkgs, ... }:
2
2
let
3
3
-
4
4
-
tts = pkgs.writers.writeBashBin "tts" ''
5
5
-
set -efu
6
6
-
set -x
7
7
-
8
8
-
offset=0
9
9
-
OUTPUT=$(mktemp -d)
10
10
-
trap 'rm -rf "$OUTPUT"' EXIT
11
11
-
SPEAKER=$[ $RANDOM % 900 ]
12
12
-
while read line; do
13
13
-
echo "$line" |
14
14
-
${pkgs.piper-tts}/bin/piper \
15
15
-
--model ${pkgs.fetchzip {
16
16
-
url = "https://github.com/rhasspy/piper/releases/download/v0.0.2/voice-en-us-libritts-high.tar.gz";
17
17
-
hash = "sha256-jCoK4p0O7BuF0nr6Sfj40tpivCvU5M3GHKQRg1tfIO8=";
18
18
-
stripRoot = false;
19
19
-
}}/en-us-libritts-high.onnx \
20
20
-
-s "$SPEAKER" \
21
21
-
-f "$OUTPUT"/"$offset".wav >/dev/null
22
22
-
23
23
-
((offset+=1))
24
24
-
done
25
25
-
26
26
-
${pkgs.sox}/bin/sox "$OUTPUT"/*.wav "$OUTPUT"/all.wav
27
27
-
cat "$OUTPUT"/all.wav
28
28
-
'';
29
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
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
79
-
retry -t 5 -d 10 -- tts |
51
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
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
133
-
tts
134
106
];
135
107
}
+41
2configs/services/radio/tts.nix
View file
Reviewed
···
1
1
+
{ pkgs, ... }:
2
2
+
let
3
3
+
model = pkgs.runCommand "model" {} ''
4
4
+
mkdir -p $out
5
5
+
ln -s ${pkgs.fetchurl {
6
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
7
+
hash = "sha256-kSelWeEWA/ELNm0aIKx0JoJggdvFId5MJCDFdyjXPw8=";
8
8
+
}} $out/model.onnx
9
9
+
ln -s ${pkgs.fetchurl {
10
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
11
+
hash = "sha256-Lv3G1/lUWIuBgBMsvZuAAZM/3QCTLJK8kv0NICip6z0=";
12
12
+
}} $out/model.onnx.json
13
13
+
'';
14
14
+
15
15
+
tts = pkgs.writers.writeBashBin "tts" ''
16
16
+
set -efu
17
17
+
set -x
18
18
+
19
19
+
offset=0
20
20
+
OUTPUT=$(mktemp -d)
21
21
+
trap 'rm -rf "$OUTPUT"' EXIT
22
22
+
SPEAKER=$[ $RANDOM % 900 ]
23
23
+
while read line; do
24
24
+
echo "$line" |
25
25
+
${pkgs.piper-tts}/bin/piper \
26
26
+
--model ${model}/model.onnx \
27
27
+
-s "$SPEAKER" \
28
28
+
-f "$OUTPUT"/"$offset".wav >/dev/null
29
29
+
30
30
+
((offset+=1))
31
31
+
done
32
32
+
33
33
+
${pkgs.sox}/bin/sox "$OUTPUT"/*.wav "$OUTPUT"/all.wav
34
34
+
cat "$OUTPUT"/all.wav
35
35
+
'';
36
36
+
in
37
37
+
{
38
38
+
environment.systemPackages = [
39
39
+
tts
40
40
+
];
41
41
+
}