aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/extra/qwentts.cpp/examples/all.sh
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/extra/qwentts.cpp/examples/all.sh')
-rwxr-xr-xvendor/extra/qwentts.cpp/examples/all.sh99
1 files changed, 99 insertions, 0 deletions
diff --git a/vendor/extra/qwentts.cpp/examples/all.sh b/vendor/extra/qwentts.cpp/examples/all.sh
new file mode 100755
index 0000000..f0b701c
--- /dev/null
+++ b/vendor/extra/qwentts.cpp/examples/all.sh
@@ -0,0 +1,99 @@
+#!/bin/bash
+# Matriz completa de pruebas de qwentts.cpp con los modelos disponibles.
+# Genera un WAV por cada posibilidad en examples/out/ y un resumen al final.
+# Uso: ./all.sh
+set -u
+cd "$(dirname "$0")"
+
+TTS=../build/qwen-tts
+CODEC=../build/qwen-codec
+COD=../models/qwen-tokenizer-12hz-Q8_0.gguf
+T06B=../models/qwen-talker-0.6b-base-Q4_K_M.gguf
+T06C=../models/qwen-talker-0.6b-customvoice-Q4_K_M.gguf
+T17B=../models/qwen-talker-1.7b-base-Q8_0.gguf
+T17C=../models/qwen-talker-1.7b-customvoice-Q8_0.gguf
+T17V=../models/qwen-talker-1.7b-voicedesign-Q8_0.gguf
+OUT=out
+mkdir -p "$OUT"
+
+EN="qwentts runs entirely offline on your own machine."
+ES="Hola, esto es una prueba de sintesis de voz totalmente local."
+ZH="这是一个完全本地运行的语音合成测试。"
+
+n=0; ok=0
+# run <desc> <outfile> <texto> [args extra de qwen-tts...]
+run() {
+ local desc="$1" out="$2" text="$3"; shift 3
+ n=$((n+1))
+ printf '%2d) %-46s ' "$n" "$desc"
+ local t0 t1
+ t0=$(date +%s.%N)
+ if printf '%s' "$text" | "$TTS" --codec "$COD" --seed 42 "$@" \
+ -o "$OUT/$out" >"$OUT/$out.log" 2>&1; then
+ t1=$(date +%s.%N)
+ printf 'OK %5s %4.0fs %s\n' "$(du -h "$OUT/$out" | cut -f1)" \
+ "$(echo "$t1 - $t0" | bc)" "$out"
+ ok=$((ok+1))
+ else
+ printf 'FALLO (ver %s)\n' "$OUT/$out.log"
+ fi
+}
+
+echo "########## A. BASE (voz por defecto) ##########"
+run "Base 0.6B english" base_0.6b_en.wav "$EN" --model "$T06B" --lang english
+run "Base 1.7B english" base_1.7b_en.wav "$EN" --model "$T17B" --lang english
+run "Base 1.7B auto (autodetec)" base_1.7b_auto.wav "$EN" --model "$T17B"
+run "Base 1.7B spanish" base_1.7b_es.wav "$ES" --model "$T17B" --lang spanish
+run "Base 1.7B chinese" base_1.7b_zh.wav "$ZH" --model "$T17B" --lang chinese
+
+echo "########## B. CLONACION (referencia freeman, Base) ##########"
+run "Clone ref-wav (encode interno)" clone_refwav_1.7b.wav "$EN" --model "$T17B" --lang english \
+ --ref-wav freeman.wav --ref-text freeman.txt
+run "Clone x-vector only (solo .spk)" clone_xvec_1.7b.wav "$EN" --model "$T17B" --lang english \
+ --ref-spk freeman.spk
+run "Clone ICL (.spk+.rvq+.txt)" clone_icl_1.7b.wav "$EN" --model "$T17B" --lang english \
+ --ref-spk freeman.spk --ref-rvq freeman.rvq --ref-text freeman.txt
+run "Clone ICL 0.6B" clone_icl_0.6b.wav "$EN" --model "$T06B" --lang english \
+ --ref-spk freeman.spk --ref-rvq freeman.rvq --ref-text freeman.txt
+
+echo "########## C. CUSTOMVOICE (speakers con nombre) ##########"
+for spk in serena vivian uncle_fu ryan aiden ono_anna sohee; do
+ run "CustomVoice 1.7B $spk" "cv_1.7b_${spk}.wav" "$EN" --model "$T17C" --lang english --speaker "$spk"
+done
+run "CustomVoice 1.7B eric (sichuan, ZH)" cv_1.7b_eric_zh.wav "$ZH" --model "$T17C" --lang chinese --speaker eric
+run "CustomVoice 1.7B dylan (beijing, ZH)" cv_1.7b_dylan_zh.wav "$ZH" --model "$T17C" --lang chinese --speaker dylan
+run "CustomVoice 0.6B vivian" cv_0.6b_vivian.wav "$EN" --model "$T06C" --lang english --speaker vivian
+run "CustomVoice 1.7B vivian + instruct" cv_1.7b_vivian_instr.wav "$EN" --model "$T17C" --lang english \
+ --speaker vivian --instruct "happy, energetic"
+
+echo "########## D. VOICEDESIGN (instruccion de atributos, 1.7B) ##########"
+run "VoiceDesign male young" vd_male_young.wav "$EN" --model "$T17V" --lang english \
+ --instruct "male, young adult, moderate pitch"
+run "VoiceDesign female elderly" vd_female_elderly.wav "$EN" --model "$T17V" --lang english \
+ --instruct "female, elderly, low pitch, calm"
+run "VoiceDesign teen excited" vd_teen_excited.wav "$EN" --model "$T17V" --lang english \
+ --instruct "female, teenager, high pitch, excited and fast"
+
+echo "########## E. MUESTREO / FORMATO (Base 1.7B) ##########"
+run "Greedy (determinista)" fmt_greedy.wav "$EN" --model "$T17B" --lang english --greedy
+run "Sampled temp=1.2 top-p=0.9" fmt_temp.wav "$EN" --model "$T17B" --lang english --temp 1.2 --top-p 0.9
+run "Formato wav24" fmt_wav24.wav "$EN" --model "$T17B" --lang english --format wav24
+run "Formato wav32" fmt_wav32.wav "$EN" --model "$T17B" --lang english --format wav32
+
+echo "########## F. QWEN-CODEC (encode/decode round-trip) ##########"
+cp -f freeman.wav "$OUT/rt.wav"
+echo -n "F1) codec encode (wav -> .rvq + .spk) "
+if "$CODEC" --model "$COD" --talker "$T17B" -i "$OUT/rt.wav" >"$OUT/codec_encode.log" 2>&1; then
+ echo "OK ($(du -h "$OUT/rt.rvq" 2>/dev/null | cut -f1) rvq, $(du -h "$OUT/rt.spk" 2>/dev/null | cut -f1) spk)"
+else echo "FALLO (ver $OUT/codec_encode.log)"; fi
+cp -f "$OUT/rt.rvq" "$OUT/roundtrip.rvq"
+echo -n "F2) codec decode (.rvq -> wav round-trip) "
+if "$CODEC" --model "$COD" -i "$OUT/roundtrip.rvq" >"$OUT/codec_decode.log" 2>&1; then
+ echo "OK ($(du -h "$OUT/roundtrip.wav" 2>/dev/null | cut -f1))"
+else echo "FALLO (ver $OUT/codec_decode.log)"; fi
+
+echo
+echo "########## RESUMEN ##########"
+echo "Sintesis OK: $ok / $n"
+echo "WAVs en $(pwd)/$OUT/:"
+/bin/ls -1 "$OUT"/*.wav 2>/dev/null | sed 's|^| |'