chore(scripts): smoke.sh exercises /api/generate/dialog as well
Browse files- scripts/smoke.sh +30 -0
scripts/smoke.sh
CHANGED
|
@@ -30,3 +30,33 @@ if [ "$HEAD" != "52494646" ]; then
|
|
| 30 |
exit 1
|
| 31 |
fi
|
| 32 |
echo "OK — wrote $TMP ($(wc -c <"$TMP") bytes)"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
exit 1
|
| 31 |
fi
|
| 32 |
echo "OK — wrote $TMP ($(wc -c <"$TMP") bytes)"
|
| 33 |
+
|
| 34 |
+
echo
|
| 35 |
+
echo "== generate dialog (2 speakers, en)"
|
| 36 |
+
# Make a tiny silent reference clip (1s mono 24k WAV) for both speakers.
|
| 37 |
+
REF_A=$(mktemp -t smoke_a.XXXXXX.wav)
|
| 38 |
+
REF_B=$(mktemp -t smoke_b.XXXXXX.wav)
|
| 39 |
+
python - <<'PY' "$REF_A"
|
| 40 |
+
import sys, numpy as np, soundfile as sf
|
| 41 |
+
sf.write(sys.argv[1], np.zeros(24000, dtype="float32"), 24000, format="WAV", subtype="PCM_16")
|
| 42 |
+
PY
|
| 43 |
+
python - <<'PY' "$REF_B"
|
| 44 |
+
import sys, numpy as np, soundfile as sf
|
| 45 |
+
sf.write(sys.argv[1], np.zeros(24000, dtype="float32"), 24000, format="WAV", subtype="PCM_16")
|
| 46 |
+
PY
|
| 47 |
+
|
| 48 |
+
OUT=$(mktemp -t smoke_dialog.XXXXXX.wav)
|
| 49 |
+
curl -fsS -X POST "$BASE/api/generate/dialog" \
|
| 50 |
+
-F text='SPEAKER A: hi.
|
| 51 |
+
SPEAKER B: hello.' \
|
| 52 |
+
-F engine_id=chatterbox-en \
|
| 53 |
+
-F params='{}' \
|
| 54 |
+
-F reference_wav_a=@"$REF_A" \
|
| 55 |
+
-F reference_wav_b=@"$REF_B" \
|
| 56 |
+
-o "$OUT"
|
| 57 |
+
HEAD=$(head -c 4 "$OUT" | xxd -p)
|
| 58 |
+
if [ "$HEAD" != "52494646" ]; then
|
| 59 |
+
echo "FAIL: dialog output is not a RIFF wav (head=$HEAD)"
|
| 60 |
+
exit 1
|
| 61 |
+
fi
|
| 62 |
+
echo "OK — wrote $OUT ($(wc -c <"$OUT") bytes)"
|