File size: 2,774 Bytes
71e354e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | #!/usr/bin/env bash
set -euo pipefail
ip="${1:-127.0.0.1}"
port="${2:-8080}"
out_dir="${3:-/tmp/tts_smoke}"
mkdir -p "$out_dir"
post_json() {
local name="$1"
local json="$2"
local out="$3"
local code="000"
if command -v curl >/dev/null 2>&1; then
code=$(curl -s -o "$out" -w '%{http_code}' \
-H 'Content-Type: application/json' \
-d "$json" \
"http://${ip}:${port}/v1/audio/speech")
elif command -v wget >/dev/null 2>&1; then
wget -q -O "$out" --server-response \
--header='Content-Type: application/json' \
--post-data="$json" \
"http://${ip}:${port}/v1/audio/speech" 2>&1 | awk '/^ HTTP/{code=$2} END{print code}' > /tmp/.tts_http_code
if [[ -s /tmp/.tts_http_code ]]; then
code=$(cat /tmp/.tts_http_code)
fi
else
echo "No curl or wget found"
return 1
fi
echo "$name http:$code size:$(stat -c%s "$out" 2>/dev/null || echo 0)"
if [[ "$code" == "200" ]]; then
[[ -s "$out" ]] || { echo "$name output empty"; return 1; }
fi
}
echo "== TTS smoke test =="
echo "target: ${ip}:${port}"
echo "out: ${out_dir}"
# English
post_json "en_ok" \
'{"model":"kokoro","input":"Hello world","voice":"af_heart","response_format":"wav","speed":1.0,"instructions":"en"}' \
"${out_dir}/en.wav"
# Chinese (requires server started with --jieba_dict_path)
post_json "zh_ok" \
'{"model":"kokoro","input":"ๆฉไธๅฅฝ๏ผไปๅคฉๅคฉๆฐไธ้ใ","voice":"zf_xiaobei","response_format":"wav","speed":1.0,"instructions":"zh"}' \
"${out_dir}/zh.wav"
# Japanese kana (hiragana/katakana only)
post_json "ja_kana_ok" \
'{"model":"kokoro","input":"ใใฏใใใใใใพใใใใใใฏใใใฆใใใงใใญใ","voice":"jf_gongitsune","response_format":"wav","speed":1.0,"instructions":"ja"}' \
"${out_dir}/ja_kana.wav"
# Japanese kana (katakana)
post_json "ja_katakana_ok" \
'{"model":"kokoro","input":"ใณใณใใใใใจใญใทใฏใชใใฌใคใทใในใ","voice":"jf_gongitsune","response_format":"wav","speed":1.0,"instructions":"ja"}' \
"${out_dir}/ja_katakana.wav"
# Long Japanese kana (chunking)
post_json "ja_kana_long_ok" \
'{"model":"kokoro","input":"ใใฏใใใใใใพใใใใใใฏใใใฆใใใงใใญใใใใใฎใใใใฏใใใใใ
ใใใใใฏใใพใใพใใใใใใใฎใฒใใใคใใใใซใใใฆใใพใใ","voice":"jf_gongitsune","response_format":"wav","speed":1.0,"instructions":"ja"}' \
"${out_dir}/ja_kana_long.wav"
# Japanese with kanji should be rejected (400)
post_json "ja_kanji_reject" \
'{"model":"kokoro","input":"ใใฏใใใใใใพใใไปๆฅใฏ่ฏใๅคฉๆฐใงใใญใ","voice":"jf_gongitsune","response_format":"wav","speed":1.0,"instructions":"ja"}' \
"${out_dir}/ja_kanji.err"
echo "done"
|