diff --git a/src/main.zig b/src/main.zig index 99886cf..484592b 100644 --- a/src/main.zig +++ b/src/main.zig @@ -323,9 +323,26 @@ pub fn main() !void { var model_path: ?[]const u8 = null; var exec_program: ?[]const u8 = null; - // Parse --model and --exec arguments + // Parse arguments for (args[1..]) |arg| { - if (std.mem.startsWith(u8, arg, "--model=")) { + if (std.mem.eql(u8, arg, "--help") or std.mem.eql(u8, arg, "-h")) { + _ = try stdout.writeAll("Real-time Speech Recognition\n\n"); + _ = try stdout.writeAll("USAGE:\n"); + _ = try stdout.writeAll(" stt [OPTIONS]\n\n"); + _ = try stdout.writeAll("OPTIONS:\n"); + _ = try stdout.writeAll(" --model= Path to Vosk model directory\n"); + _ = try stdout.writeAll(" --exec= Program to execute with recognized text\n"); + _ = try stdout.writeAll(" --help, -h Show this help message\n\n"); + _ = try stdout.writeAll("EXAMPLES:\n"); + _ = try stdout.writeAll(" stt\n"); + _ = try stdout.writeAll(" stt --model=vosk-model-small-en-us-0.15\n"); + _ = try stdout.writeAll(" stt --exec=echo\n\n"); + _ = try stdout.writeAll("The application will search for models in these locations:\n"); + _ = try stdout.writeAll(" vosk-model-small-en-us-0.15\n"); + _ = try stdout.writeAll(" zig-out/bin/vosk-model-small-en-us-0.15\n"); + _ = try stdout.writeAll(" /usr/share/vosk/models/vosk-model-small-en-us-0.15\n"); + return; + } else if (std.mem.startsWith(u8, arg, "--model=")) { model_path = arg[8..]; // Skip "--model=" } else if (std.mem.startsWith(u8, arg, "--exec=")) { exec_program = arg[7..]; // Skip "--exec="