| 31 | #include <utility> |
| 32 | #include <vector> |
| 33 | |
| 34 | #ifdef _WIN32 |
| 35 | #ifndef NOMINMAX |
| 36 | #define NOMINMAX |
| 37 | #endif |
| 38 | #include <io.h> |
| 39 | #include <windows.h> |
| 40 | #else |
| 41 | #include <unistd.h> |
| 42 | #endif |
| 43 | |
| 44 | #ifdef _OPENMP |
| 45 | #include <omp.h> |
| 46 | #endif |
| 47 | |
| 48 | namespace { |
| 49 | |
| 50 | void print_task_list_help() { |
| 51 | std::cout |
| 52 | << "audiocpp_cli --task <task> --family <family> --model <path> --backend <backend> [options]\n" |
| 53 | << " Global:\n" |
| 54 | << " --task vad|asr|diar|sep|gen|tts|clon|vc|s2s|align|vdes|spk|svc\n" |
| 55 | << " --family <name>\n" |
| 56 | << " --model <path>\n" |
| 57 | << " --backend cpu|cuda|hip|rocm|vulkan|metal|best (rocm is an alias for hip)\n" |
| 58 | << " --mode offline|streaming default offline\n" |
| 59 | << " --device <n>\n" |
| 60 | << " --list-devices List available backend devices and exit\n" |
| 61 | << " --threads <n> Backend and OpenMP worker threads, default 4\n" |
| 62 | << " --registry-config <path>\n" |
| 63 | << " --model-spec-override <json-or-directory> Override package-spec resolution\n" |
| 64 | << " --config <id>\n" |
| 65 | << " --weight <id>\n" |
| 66 | << " --log Stream framework progress and timing logs to stdout\n" |
| 67 | << " --log-file <path> Stream framework progress and timing logs to a file\n" |
| 68 | << " --metrics Print compact wall time, audio duration, and RTF summary after offline generation\n" |
| 69 | << " --load-option key=value\n" |
| 70 | << " --session-option key=value\n" |
| 71 | << " --request-option key=value\n" |
| 72 | << " Batch:\n" |
| 73 | << " --request-sequence <json> Run JSON requests in one offline session\n" |
| 74 | << " --batch-text-file <txt> Run one offline request per non-empty line\n" |
| 75 | << " --batch-text-dir <dir> Run one offline request per .txt, .md, or .json file\n" |
| 76 | << " --batch-audio-dir <dir> Run one offline request per .wav file\n" |
| 77 | << " --batch-audio-role audio|voice_ref|source_audio|target_voice|prosody_ref|style_ref\n" |
| 78 | << " --batch-merge-audio none|concat\n" |
| 79 | << " --batch-manifest-out <json>\n" |
| 80 | << " Shared CLI inputs and options are defaults for --batch-text-file, --batch-text-dir, and --batch-audio-dir\n" |
| 81 | << " Pipelines:\n" |
| 82 | << " --pipeline <json> Run a JSON app workflow instead of a raw task\n" |
| 83 | << " --list-pipelines\n" |
| 84 | << " --workflow-input key=value Override a top-level workflow input\n" |
| 85 | << " --audio-converter <cmd> Converter executable for workflow media import, default ffmpeg\n" |
| 86 | << " Task routing and media roles:\n" |
| 87 | << " --task-route <name> User-facing route, e.g. text2music, zero_shot_tts, style_preserved_vc\n" |
| 88 | << " --source-audio <wav> Source audio path for models that take path-based source refs\n" |
| 89 | << " --target-voice <wav> Target/timbre voice path for path-based voice conversion\n" |
| 90 | << " --prosody-ref <wav>\n" |