From 9d0ebd193fce4579802c2efaf5f64b50007815f9 Mon Sep 17 00:00:00 2001 From: bobqianic <129547291+bobqianic@users.noreply.github.com> Date: Mon, 15 Jan 2024 20:13:58 +0000 Subject: [PATCH 1/2] Add files via upload --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index d2caabab439..41225e2acb9 100644 --- a/Makefile +++ b/Makefile @@ -364,19 +364,19 @@ server: examples/server/server.cpp $(SRC_COMMON) $(WHISPER_OBJ) $(CXX) $(CXXFLAGS) examples/server/server.cpp $(SRC_COMMON) $(WHISPER_OBJ) -o server $(LDFLAGS) stream: examples/stream/stream.cpp $(SRC_COMMON) $(SRC_COMMON_SDL) $(WHISPER_OBJ) - $(CXX) $(CXXFLAGS) examples/stream/stream.cpp $(SRC_COMMON) $(SRC_COMMON_SDL) $(WHISPER_OBJ) -o stream $(CC_SDL) $(LDFLAGS) + $(CXX) $(CXXFLAGS) examples/stream/stream.cpp $(SRC_COMMON) $(SRC_CONSOLE) $(SRC_COMMON_SDL) $(WHISPER_OBJ) -o stream $(CC_SDL) $(LDFLAGS) -command: examples/command/command.cpp examples/grammar-parser.cpp $(SRC_COMMON) $(SRC_COMMON_SDL) $(WHISPER_OBJ) +command: examples/command/command.cpp examples/grammar-parser.cpp $(SRC_COMMON) $(SRC_CONSOLE) $(SRC_COMMON_SDL) $(WHISPER_OBJ) $(CXX) $(CXXFLAGS) examples/command/command.cpp examples/grammar-parser.cpp $(SRC_COMMON) $(SRC_COMMON_SDL) $(WHISPER_OBJ) -o command $(CC_SDL) $(LDFLAGS) lsp: examples/lsp/lsp.cpp $(SRC_COMMON) $(SRC_COMMON_SDL) $(WHISPER_OBJ) $(CXX) $(CXXFLAGS) examples/lsp/lsp.cpp $(SRC_COMMON) $(SRC_COMMON_SDL) $(WHISPER_OBJ) -o lsp $(CC_SDL) $(LDFLAGS) talk: examples/talk/talk.cpp examples/talk/gpt-2.cpp $(SRC_COMMON) $(SRC_COMMON_SDL) $(WHISPER_OBJ) - $(CXX) $(CXXFLAGS) examples/talk/talk.cpp examples/talk/gpt-2.cpp $(SRC_COMMON) $(SRC_COMMON_SDL) $(WHISPER_OBJ) -o talk $(CC_SDL) $(LDFLAGS) + $(CXX) $(CXXFLAGS) examples/talk/talk.cpp examples/talk/gpt-2.cpp $(SRC_COMMON) $(SRC_CONSOLE) $(SRC_COMMON_SDL) $(WHISPER_OBJ) -o talk $(CC_SDL) $(LDFLAGS) talk-llama: examples/talk-llama/talk-llama.cpp examples/talk-llama/llama.cpp $(SRC_COMMON) $(SRC_COMMON_SDL) $(WHISPER_OBJ) - $(CXX) $(CXXFLAGS) examples/talk-llama/talk-llama.cpp examples/talk-llama/llama.cpp $(SRC_COMMON) $(SRC_COMMON_SDL) $(WHISPER_OBJ) -o talk-llama $(CC_SDL) $(LDFLAGS) + $(CXX) $(CXXFLAGS) examples/talk-llama/talk-llama.cpp examples/talk-llama/llama.cpp $(SRC_COMMON) $(SRC_CONSOLE) $(SRC_COMMON_SDL) $(WHISPER_OBJ) -o talk-llama $(CC_SDL) $(LDFLAGS) # # Audio samples From c8528a7c102aa6b5ea424abe3bd887c651f2569d Mon Sep 17 00:00:00 2001 From: bobqianic <129547291+bobqianic@users.noreply.github.com> Date: Mon, 15 Jan 2024 20:14:52 +0000 Subject: [PATCH 2/2] Add files via upload --- examples/command/command.cpp | 31 +++++++++++++++++++++------ examples/lsp/lsp.cpp | 2 -- examples/stream/stream.cpp | 34 +++++++++++++++++++++++++----- examples/talk-llama/talk-llama.cpp | 30 +++++++++++++++++++++----- examples/talk/talk.cpp | 30 +++++++++++++++++++++----- 5 files changed, 104 insertions(+), 23 deletions(-) diff --git a/examples/command/command.cpp b/examples/command/command.cpp index 51d800a2f2e..1e7d209cbd2 100644 --- a/examples/command/command.cpp +++ b/examples/command/command.cpp @@ -8,6 +8,7 @@ #include "common-sdl.h" #include "common.h" +#include "console.h" #include "whisper.h" #include "grammar-parser.h" @@ -59,9 +60,9 @@ struct whisper_params { std::string grammar; }; -void whisper_print_usage(int argc, char ** argv, const whisper_params & params); +void whisper_print_usage(int argc, const char ** argv, const whisper_params & params); -bool whisper_params_parse(int argc, char ** argv, whisper_params & params) { +bool whisper_params_parse(int argc, const char ** argv, whisper_params & params) { for (int i = 1; i < argc; i++) { std::string arg = argv[i]; @@ -100,7 +101,7 @@ bool whisper_params_parse(int argc, char ** argv, whisper_params & params) { return true; } -void whisper_print_usage(int /*argc*/, char ** argv, const whisper_params & params) { +void whisper_print_usage(int /*argc*/, const char ** argv, const whisper_params & params) { fprintf(stderr, "\n"); fprintf(stderr, "usage: %s [options]\n", argv[0]); fprintf(stderr, "\n"); @@ -151,7 +152,6 @@ std::string transcribe( wparams.print_progress = false; wparams.print_special = params.print_special; - wparams.print_realtime = false; wparams.print_timestamps = !params.no_timestamps; wparams.translate = params.translate; wparams.no_context = true; @@ -356,7 +356,6 @@ int process_command_list(struct whisper_context * ctx, audio_async &audio, const wparams.print_progress = false; wparams.print_special = params.print_special; - wparams.print_realtime = false; wparams.print_timestamps = !params.no_timestamps; wparams.translate = params.translate; wparams.no_context = true; @@ -678,7 +677,7 @@ int process_general_transcription(struct whisper_context * ctx, audio_async & au return 0; } -int main(int argc, char ** argv) { +int run(int argc, const char ** argv) { whisper_params params; if (whisper_params_parse(argc, argv, params) == false) { @@ -773,3 +772,23 @@ int main(int argc, char ** argv) { return ret_val; } + +#if _WIN32 +int wmain(int argc, const wchar_t ** argv_UTF16LE) { + console::init(true, true); + atexit([]() { console::cleanup(); }); + std::vector buffer(argc); + std::vector argv_UTF8(argc); + for (int i = 0; i < argc; ++i) { + buffer[i] = console::UTF16toUTF8(argv_UTF16LE[i]); + argv_UTF8[i] = buffer[i].c_str(); + } + return run(argc, argv_UTF8.data()); +} +#else +int main(int argc, const char ** argv_UTF8) { + console::init(true, true); + atexit([]() { console::cleanup(); }); + return run(argc, argv_UTF8); +} +#endif diff --git a/examples/lsp/lsp.cpp b/examples/lsp/lsp.cpp index 8d8b6ffa238..c3f69134f32 100644 --- a/examples/lsp/lsp.cpp +++ b/examples/lsp/lsp.cpp @@ -171,7 +171,6 @@ json unguided_transcription(struct whisper_context * ctx, audio_async &audio, js } wparams.print_progress = false; wparams.print_special = params.print_special; - wparams.print_realtime = false; wparams.print_timestamps = false; wparams.translate = params.translate; wparams.no_context = jparams.value("no_context", true); @@ -210,7 +209,6 @@ json guided_transcription(struct whisper_context * ctx, audio_async &audio, cons wparams.print_progress = false; wparams.print_special = params.print_special; - wparams.print_realtime = false; wparams.print_timestamps = false; wparams.translate = params.translate; wparams.no_context = true; diff --git a/examples/stream/stream.cpp b/examples/stream/stream.cpp index 47f1780b4ea..77b563b429f 100644 --- a/examples/stream/stream.cpp +++ b/examples/stream/stream.cpp @@ -4,6 +4,7 @@ // #include "common-sdl.h" #include "common.h" +#include "console.h" #include "whisper.h" #include @@ -56,9 +57,9 @@ struct whisper_params { std::string fname_out; }; -void whisper_print_usage(int argc, char ** argv, const whisper_params & params); +void whisper_print_usage(int argc, const char ** argv, const whisper_params & params); -bool whisper_params_parse(int argc, char ** argv, whisper_params & params) { +bool whisper_params_parse(int argc, const char ** argv, whisper_params & params) { for (int i = 1; i < argc; i++) { std::string arg = argv[i]; @@ -97,7 +98,7 @@ bool whisper_params_parse(int argc, char ** argv, whisper_params & params) { return true; } -void whisper_print_usage(int /*argc*/, char ** argv, const whisper_params & params) { +void whisper_print_usage(int /*argc*/, const char ** argv, const whisper_params & params) { fprintf(stderr, "\n"); fprintf(stderr, "usage: %s [options]\n", argv[0]); fprintf(stderr, "\n"); @@ -126,7 +127,7 @@ void whisper_print_usage(int /*argc*/, char ** argv, const whisper_params & para fprintf(stderr, "\n"); } -int main(int argc, char ** argv) { +int run(int argc, const char ** argv) { whisper_params params; if (whisper_params_parse(argc, argv, params) == false) { @@ -213,7 +214,11 @@ int main(int argc, char ** argv) { std::ofstream fout; if (params.fname_out.length() > 0) { + #if _WIN32 + fout.open(console::UTF8toUTF16(params.fname_out)); + #else fout.open(params.fname_out); + #endif if (!fout.is_open()) { fprintf(stderr, "%s: failed to open output file '%s'!\n", __func__, params.fname_out.c_str()); return 1; @@ -314,7 +319,6 @@ int main(int argc, char ** argv) { wparams.print_progress = false; wparams.print_special = params.print_special; - wparams.print_realtime = false; wparams.print_timestamps = !params.no_timestamps; wparams.translate = params.translate; wparams.single_segment = !use_vad; @@ -431,3 +435,23 @@ int main(int argc, char ** argv) { return 0; } + +#if _WIN32 +int wmain(int argc, const wchar_t ** argv_UTF16LE) { + console::init(true, true); + atexit([]() { console::cleanup(); }); + std::vector buffer(argc); + std::vector argv_UTF8(argc); + for (int i = 0; i < argc; ++i) { + buffer[i] = console::UTF16toUTF8(argv_UTF16LE[i]); + argv_UTF8[i] = buffer[i].c_str(); + } + return run(argc, argv_UTF8.data()); +} +#else +int main(int argc, const char ** argv_UTF8) { + console::init(true, true); + atexit([]() { console::cleanup(); }); + return run(argc, argv_UTF8); +} +#endif diff --git a/examples/talk-llama/talk-llama.cpp b/examples/talk-llama/talk-llama.cpp index 5eef1f4e619..cae231b9ff9 100644 --- a/examples/talk-llama/talk-llama.cpp +++ b/examples/talk-llama/talk-llama.cpp @@ -3,6 +3,7 @@ #include "common-sdl.h" #include "common.h" +#include "console.h" #include "whisper.h" #include "llama.h" @@ -77,9 +78,9 @@ struct whisper_params { std::string path_session = ""; // path to file for saving/loading model eval state }; -void whisper_print_usage(int argc, char ** argv, const whisper_params & params); +void whisper_print_usage(int argc, const char ** argv, const whisper_params & params); -bool whisper_params_parse(int argc, char ** argv, whisper_params & params) { +bool whisper_params_parse(int argc, const char ** argv, whisper_params & params) { for (int i = 1; i < argc; i++) { std::string arg = argv[i]; @@ -127,7 +128,7 @@ bool whisper_params_parse(int argc, char ** argv, whisper_params & params) { return true; } -void whisper_print_usage(int /*argc*/, char ** argv, const whisper_params & params) { +void whisper_print_usage(int /*argc*/, const char ** argv, const whisper_params & params) { fprintf(stderr, "\n"); fprintf(stderr, "usage: %s [options]\n", argv[0]); fprintf(stderr, "\n"); @@ -180,7 +181,6 @@ std::string transcribe( wparams.print_progress = false; wparams.print_special = params.print_special; - wparams.print_realtime = false; wparams.print_timestamps = !params.no_timestamps; wparams.translate = params.translate; wparams.no_context = true; @@ -247,7 +247,7 @@ The transcript only includes text, it does not include markup like HTML and Mark {1}{4} Blue {0}{4})"; -int main(int argc, char ** argv) { +int run(int argc, const char ** argv) { whisper_params params; if (whisper_params_parse(argc, argv, params) == false) { @@ -708,3 +708,23 @@ int main(int argc, char ** argv) { return 0; } + +#if _WIN32 +int wmain(int argc, const wchar_t ** argv_UTF16LE) { + console::init(true, true); + atexit([]() { console::cleanup(); }); + std::vector buffer(argc); + std::vector argv_UTF8(argc); + for (int i = 0; i < argc; ++i) { + buffer[i] = console::UTF16toUTF8(argv_UTF16LE[i]); + argv_UTF8[i] = buffer[i].c_str(); + } + return run(argc, argv_UTF8.data()); +} +#else +int main(int argc, const char ** argv_UTF8) { + console::init(true, true); + atexit([]() { console::cleanup(); }); + return run(argc, argv_UTF8); +} +#endif diff --git a/examples/talk/talk.cpp b/examples/talk/talk.cpp index cdb1a230b7d..35a62f479a7 100644 --- a/examples/talk/talk.cpp +++ b/examples/talk/talk.cpp @@ -3,6 +3,7 @@ #include "common-sdl.h" #include "common.h" +#include "console.h" #include "whisper.h" #include "gpt-2.h" @@ -41,9 +42,9 @@ struct whisper_params { std::string fname_out; }; -void whisper_print_usage(int argc, char ** argv, const whisper_params & params); +void whisper_print_usage(int argc, const char ** argv, const whisper_params & params); -bool whisper_params_parse(int argc, char ** argv, whisper_params & params) { +bool whisper_params_parse(int argc, const char ** argv, whisper_params & params) { for (int i = 1; i < argc; i++) { std::string arg = argv[i]; @@ -79,7 +80,7 @@ bool whisper_params_parse(int argc, char ** argv, whisper_params & params) { return true; } -void whisper_print_usage(int /*argc*/, char ** argv, const whisper_params & params) { +void whisper_print_usage(int /*argc*/, const char ** argv, const whisper_params & params) { fprintf(stderr, "\n"); fprintf(stderr, "usage: %s [options]\n", argv[0]); fprintf(stderr, "\n"); @@ -116,7 +117,6 @@ std::string transcribe(whisper_context * ctx, const whisper_params & params, con wparams.print_progress = false; wparams.print_special = params.print_special; - wparams.print_realtime = false; wparams.print_timestamps = !params.no_timestamps; wparams.translate = params.translate; wparams.no_context = true; @@ -170,7 +170,7 @@ Here is how {0} (A) continues the dialogue: A:)"; -int main(int argc, char ** argv) { +int run(int argc, const char ** argv) { whisper_params params; if (whisper_params_parse(argc, argv, params) == false) { @@ -373,3 +373,23 @@ int main(int argc, char ** argv) { return 0; } + +#if _WIN32 +int wmain(int argc, const wchar_t ** argv_UTF16LE) { + console::init(true, true); + atexit([]() { console::cleanup(); }); + std::vector buffer(argc); + std::vector argv_UTF8(argc); + for (int i = 0; i < argc; ++i) { + buffer[i] = console::UTF16toUTF8(argv_UTF16LE[i]); + argv_UTF8[i] = buffer[i].c_str(); + } + return run(argc, argv_UTF8.data()); +} +#else +int main(int argc, const char ** argv_UTF8) { + console::init(true, true); + atexit([]() { console::cleanup(); }); + return run(argc, argv_UTF8); +} +#endif