@echo off
setlocal

rem ============================================================
rem Qwen3-TTS launcher
rem Usage:
rem   run_qwen_tts.bat [mode] [device] [server] [port]
rem
rem mode   : CustomVoice | VoiceClone | VoiceDesign
rem device : cuda:0 | cpu
rem server : bind address
rem port   : Gradio port
rem
rem Defaults:
rem   mode=CustomVoice, device=cuda:0, server=127.0.0.1, port=8000
rem ============================================================

set "MODE=%~1"
set "DEVICE=%~2"
set "SERVER=%~3"
set "PORT=%~4"

if not defined MODE   set "MODE=CustomVoice"
if not defined DEVICE set "DEVICE=cuda:0"
if not defined SERVER set "SERVER=127.0.0.1"
if not defined PORT   set "PORT=8000"

rem Choose dtype according to device.
if /I "%DEVICE%"=="cpu" (
    set "DTYPE=float32"
) else (
    set "DTYPE=bfloat16"
)

d:
cd \qwen3-tts
call .\Scripts\activate

if /I "%MODE%"=="CustomVoice" goto CUSTOMVOICE
if /I "%MODE%"=="VoiceClone"  goto VOICECLONE
if /I "%MODE%"=="VoiceDesign" goto VOICEDESIGN

echo ERROR: Unknown mode "%MODE%"
echo.
echo Available modes: CustomVoice, VoiceClone, VoiceDesign
echo Usage: %~nx0 [mode] [device] [server] [port]
exit /b 1

:CUSTOMVOICE
set "MODEL=Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice"
goto RUN

:VOICECLONE
set "MODEL=Qwen/Qwen3-TTS-12Hz-0.6B-Base"
goto RUN

:VOICEDESIGN
set "MODEL=Qwen/Qwen3-TTS-12Hz-0.6B-VoiceDesign"
goto RUN

:RUN
echo ============================================================
echo Qwen3-TTS
echo Mode   : %MODE%
echo Model  : %MODEL%
echo Device : %DEVICE%
echo Dtype  : %DTYPE%
echo Server : %SERVER%
echo Port   : %PORT%
echo URL    : http://%SERVER%:%PORT%
echo ============================================================

qwen-tts-demo %MODEL% ^
  --device %DEVICE% ^
  --dtype %DTYPE% ^
  --no-flash-attn ^
  --ip %SERVER% ^
  --port %PORT%

:END
endlocal
