Files
searchi/tools/speech-runtime/windows-model-path.patch
T

42 lines
1.8 KiB
Diff
Raw Permalink Normal View History

--- a/src/whisper.cpp
+++ b/src/whisper.cpp
@@ -30,6 +30,7 @@
#include <cstdio>
#include <cstring>
#include <fstream>
+#include <filesystem>
#include <functional>
#include <map>
#include <random>
@@ -3730,13 +3731,7 @@
struct whisper_context * whisper_init_from_file_with_params_no_state(const char * path_model, struct whisper_context_params params) {
WHISPER_LOG_INFO("%s: loading model from '%s'\n", __func__, path_model);
-#ifdef _MSC_VER
- // Convert UTF-8 path to wide string (UTF-16) for Windows, resolving character encoding issues.
- std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
- std::wstring path_model_wide = converter.from_bytes(path_model);
- auto fin = std::ifstream(path_model_wide, std::ios::binary);
-#else
- auto fin = std::ifstream(path_model, std::ios::binary);
-#endif
+ // C++17 u8path preserves supplementary Unicode on Windows and UTF-8 elsewhere.
+ auto fin = std::ifstream(std::filesystem::u8path(path_model), std::ios::binary);
if (!fin) {
WHISPER_LOG_ERROR("%s: failed to open '%s'\n", __func__, path_model);
return nullptr;
@@ -4877,13 +4871,8 @@
const char * path_model,
struct whisper_vad_context_params params) {
WHISPER_LOG_INFO("%s: loading VAD model from '%s'\n", __func__, path_model);
-#ifdef _MSC_VER
- std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
- std::wstring path_model_wide = converter.from_bytes(path_model);
- auto fin = std::ifstream(path_model_wide, std::ios::binary);
-#else
- auto fin = std::ifstream(path_model, std::ios::binary);
-#endif
+ // Same strict UTF-8 path contract as the base recognizer.
+ auto fin = std::ifstream(std::filesystem::u8path(path_model), std::ios::binary);
if (!fin) {
WHISPER_LOG_ERROR("%s: failed to open VAD model '%s'\n", __func__, path_model);
return nullptr;