From 932c37b03e2db8409f646030b63e54ba8acf7f5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20M=C3=BChlinghaus?= Date: Mon, 20 Jul 2026 23:32:21 +0200 Subject: [PATCH] speak.sh gefixt --- speak.sh | 63 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/speak.sh b/speak.sh index bc9d0cb..d98e0b3 100755 --- a/speak.sh +++ b/speak.sh @@ -1,26 +1,51 @@ #!/bin/sh -KEY="cpk_fb48056a2f384b7e8d553c050ff347ad.5a86acf7400b53d090db223353db7dd1.0d6YfPPGZaBFXJoo2B1I7x397OTzau2E" - cd "$(dirname "$0")" -FILE="$1" -if test ! -f "$FILE"; then - echo "Missing or wrong file: $FILE" - exit 1 +# Lade .env (alle Variablen automatisch exportieren) +if test -f .env; then + set -a + . ./.env + set +a fi +# Ausgabedatei (optionaler Parameter, Default: output.wav) +OUT="${1:-output.wav}" -curl -X POST "https://vonkaiser-audiodojo.chutes.ai/tts/qwen3clone" \ - -H "Authorization: Bearer $KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "text": "Dies ist ein Test. Zum testen und so Sachen.", - "language": "German", - "ref_text": "Das Café Laube roch nach einer Mischung aus frisch gerösteten Bohnen, süßlichen Lilien und dem metallischen Unterton von Regen", - "trim_sample": true, - "auto_denoise": false, - "high_fidelity": false, - "ref_audio_b64": "$(base64 -w 0 elena-referenz.wav)" -}' \ - --output output.wav +# Text von STDIN in temporäre Datei lesen +TMP_TEXT=$(mktemp) +trap 'rm -f "$TMP_TEXT"' EXIT + +cat > "$TMP_TEXT" + +# Referenz-Audio als base64 kodieren (Linux: -w 0) +REF_AUDIO_B64=$(base64 -w 0 elena-referenz.wav) + +# JSON-Body via Pipe an curl übergeben, damit der Text +# nie von der Shell expandiert wird (keine $-Probleme). +{ + printf '{\n' + printf ' "text": "' + # JSON-Escaping für Text: \, ", Tab, Zeilenumbruch + awk '{ + gsub(/\\/, "\\\\"); + gsub(/"/, "\\\""); + gsub(/\t/, "\\t"); + if (NR > 1) printf "\\n"; + printf "%s", $0 + }' "$TMP_TEXT" + printf '",\n' + printf ' "language": "German",\n' + printf ' "ref_text": "Das Café Laube roch nach einer Mischung aus frisch gerösteten Bohnen, süßlichen Lilien und dem metallischen Unterton von Regen",\n' + printf ' "trim_sample": true,\n' + printf ' "auto_denoise": false,\n' + printf ' "high_fidelity": false,\n' + printf ' "ref_audio_b64": "' + printf '%s' "$REF_AUDIO_B64" + printf '"\n' + printf '}\n' +} | curl -X POST "https://vonkaiser-audiodojo.chutes.ai/tts/qwen3clone" \ + -H "Authorization: Bearer $CHUTES_API_KEY" \ + -H "Content-Type: application/json" \ + --data-binary @- \ + --output "$OUT"