speak.sh gefixt
This commit is contained in:
61
speak.sh
61
speak.sh
@@ -1,26 +1,51 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
KEY="cpk_fb48056a2f384b7e8d553c050ff347ad.5a86acf7400b53d090db223353db7dd1.0d6YfPPGZaBFXJoo2B1I7x397OTzau2E"
|
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
FILE="$1"
|
# Lade .env (alle Variablen automatisch exportieren)
|
||||||
if test ! -f "$FILE"; then
|
if test -f .env; then
|
||||||
echo "Missing or wrong file: $FILE"
|
set -a
|
||||||
exit 1
|
. ./.env
|
||||||
|
set +a
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Ausgabedatei (optionaler Parameter, Default: output.wav)
|
||||||
|
OUT="${1:-output.wav}"
|
||||||
|
|
||||||
curl -X POST "https://vonkaiser-audiodojo.chutes.ai/tts/qwen3clone" \
|
# Text von STDIN in temporäre Datei lesen
|
||||||
-H "Authorization: Bearer $KEY" \
|
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" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{
|
--data-binary @- \
|
||||||
"text": "Dies ist ein Test. Zum testen und so Sachen.",
|
--output "$OUT"
|
||||||
"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
|
|
||||||
|
|||||||
Reference in New Issue
Block a user