Fix locale-dependent float printing in GGUF metadata (#17331)

* Set C locale for consistent float formatting across all binaries.

* Add C locale setting to all tools binaries

Add std::setlocale(LC_NUMERIC, "C") to all 16 binaries in the tools/
directory to ensure consistent floating-point formatting.

* Apply suggestion from @JohannesGaessler

---------

Co-authored-by: Johannes Gäßler <johannesg@5d6.de>
This commit is contained in:
SamareshSingh 2026-03-04 02:30:40 -06:00 committed by GitHub
parent 54910bd4f3
commit cb8f4fa3f8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
39 changed files with 140 additions and 19 deletions

View file

@ -5,6 +5,7 @@
#include "sampling.h" #include "sampling.h"
#include <algorithm> #include <algorithm>
#include <clocale>
#include <cstdio> #include <cstdio>
#include <string> #include <string>
#include <vector> #include <vector>
@ -16,6 +17,8 @@ static void print_usage(int, char ** argv) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
params.prompt = "Hello my name is"; params.prompt = "Hello my name is";

View file

@ -5,14 +5,16 @@
#include "common.h" #include "common.h"
#include "log.h" #include "log.h"
#include <algorithm>
#include <cassert>
#include <cinttypes>
#include <climits>
#include <clocale>
#include <cstdarg>
#include <cstring>
#include <ctime>
#include <unordered_map> #include <unordered_map>
#include <vector> #include <vector>
#include <cassert>
#include <climits>
#include <cstring>
#include <cstdarg>
#include <cinttypes>
#include <ctime>
#include <random> #include <random>
#include <stdexcept> #include <stdexcept>
#include <sstream> #include <sstream>
@ -874,6 +876,8 @@ static std::string basename(const std::string &path) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_init(); common_init();
struct train_params params = get_default_train_params(); struct train_params params = get_default_train_params();

View file

@ -1,11 +1,14 @@
// Warns users that this filename was deprecated, and provides a link for more information. // Warns users that this filename was deprecated, and provides a link for more information.
#include <clocale>
#include <cstdio> #include <cstdio>
#include <string> #include <string>
#include <unordered_map> #include <unordered_map>
// Main // Main
int main(int argc, char** argv) { int main(int argc, char** argv) {
std::setlocale(LC_NUMERIC, "C");
std::string filename = "main"; std::string filename = "main";
if (argc >= 1) { if (argc >= 1) {
filename = argv[0]; filename = argv[0];

View file

@ -7,6 +7,7 @@
#include <limits.h> #include <limits.h>
#include <algorithm> #include <algorithm>
#include <clocale>
#include <cmath> #include <cmath>
#include <cstring> #include <cstring>
#include <limits> #include <limits>
@ -538,6 +539,8 @@ static std::string format_input_text(const std::string & prompt, const std::stri
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
ggml_time_init(); ggml_time_init();
common_params params; common_params params;

View file

@ -3,6 +3,7 @@
#include "log.h" #include "log.h"
#include "llama.h" #include "llama.h"
#include <clocale>
#include <ctime> #include <ctime>
#include <algorithm> #include <algorithm>
@ -94,6 +95,8 @@ static void print_raw_embeddings(const float * emb,
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_EMBEDDING)) { if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_EMBEDDING)) {

View file

@ -4,6 +4,8 @@
#include "log.h" #include "log.h"
#include "llama.h" #include "llama.h"
#include "llama-cpp.h" #include "llama-cpp.h"
#include <clocale>
#include <string> #include <string>
#include <vector> #include <vector>
@ -29,6 +31,8 @@ static bool run(llama_context * ctx, const common_params & params) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
base_callback_data cb_data; base_callback_data cb_data;
common_params params; common_params params;

View file

@ -1,6 +1,7 @@
#include "arg.h" #include "arg.h"
#include "common.h" #include "common.h"
#include <clocale>
#include <fstream> #include <fstream>
#include <sstream> #include <sstream>
#include <string> #include <string>
@ -100,6 +101,8 @@ static void write_help(std::ostringstream & ss, const md_file & md) {
} }
int main(int, char **) { int main(int, char **) {
std::setlocale(LC_NUMERIC, "C");
for (const auto & md : md_files) { for (const auto & md : md_files) {
std::ifstream infile(md.fname); std::ifstream infile(md.fname);
if (!infile.is_open()) { if (!infile.is_open()) {

View file

@ -1,13 +1,14 @@
#include "ggml.h" #include "ggml.h"
#include "gguf.h" #include "gguf.h"
#include <cstdlib> /* abort() */ #include <algorithm>
#include <clocale>
#include <cstddef> #include <cstddef>
#include <cstdio> #include <cstdio>
#include <string> #include <cstdlib> /* abort() */
#include <stdexcept>
#include <algorithm>
#include <cstring> #include <cstring>
#include <stdexcept>
#include <string>
#include <sstream> #include <sstream>
#include <fstream> #include <fstream>
@ -626,6 +627,8 @@ static hash_exit_code_t gguf_hash(const hash_params & hash_params) {
} }
int main(int argc, const char ** argv) { int main(int argc, const char ** argv) {
std::setlocale(LC_NUMERIC, "C");
hash_params params; hash_params params;
manifest_check_params manifest_check; manifest_check_params manifest_check;
hash_params_parse(argc, argv, params); hash_params_parse(argc, argv, params);

View file

@ -1,6 +1,7 @@
#include "ggml.h" #include "ggml.h"
#include "gguf.h" #include "gguf.h"
#include <clocale>
#include <cstdio> #include <cstdio>
#include <string> #include <string>
#include <sstream> #include <sstream>
@ -240,6 +241,8 @@ static bool gguf_ex_read_1(const std::string & fname, bool check_data) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
if (argc < 3) { if (argc < 3) {
printf("usage: %s data.gguf r|w [n]\n", argv[0]); printf("usage: %s data.gguf r|w [n]\n", argv[0]);
printf("r: read data.gguf file\n"); printf("r: read data.gguf file\n");

View file

@ -4,10 +4,11 @@
#include "log.h" #include "log.h"
#include "llama.h" #include "llama.h"
#include <algorithm>
#include <clocale>
#include <cstdio> #include <cstdio>
#include <string> #include <string>
#include <vector> #include <vector>
#include <algorithm>
struct ngram_data { struct ngram_data {
bool active = false; bool active = false;
@ -38,6 +39,8 @@ struct ngram_container {
}; };
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_COMMON)) { if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_COMMON)) {

View file

@ -3,10 +3,13 @@
#include "ngram-cache.h" #include "ngram-cache.h"
#include "llama.h" #include "llama.h"
#include <clocale>
#include <string> #include <string>
#include <vector> #include <vector>
int main(int argc, char ** argv){ int main(int argc, char ** argv){
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_LOOKUP)) { if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_LOOKUP)) {

View file

@ -3,6 +3,7 @@
#include "common.h" #include "common.h"
#include "ngram-cache.h" #include "ngram-cache.h"
#include <clocale>
#include <cstdint> #include <cstdint>
#include <cstdio> #include <cstdio>
#include <fstream> #include <fstream>
@ -17,6 +18,8 @@ static void print_usage(char* argv0) {
} }
int main(int argc, char ** argv){ int main(int argc, char ** argv){
std::setlocale(LC_NUMERIC, "C");
if (argc < 3) { if (argc < 3) {
print_usage(argv[0]); print_usage(argv[0]);
exit(1); exit(1);

View file

@ -5,14 +5,17 @@
#include "llama.h" #include "llama.h"
#include "ggml.h" #include "ggml.h"
#include <cinttypes>
#include <clocale>
#include <cstdint> #include <cstdint>
#include <cstdio> #include <cstdio>
#include <cinttypes>
#include <fstream> #include <fstream>
#include <string> #include <string>
#include <vector> #include <vector>
int main(int argc, char ** argv){ int main(int argc, char ** argv){
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_LOOKUP)) { if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_LOOKUP)) {

View file

@ -6,6 +6,7 @@
#include "log.h" #include "log.h"
#include "llama.h" #include "llama.h"
#include <clocale>
#include <cstdint> #include <cstdint>
#include <cstdio> #include <cstdio>
#include <fstream> #include <fstream>
@ -13,6 +14,8 @@
#include <vector> #include <vector>
int main(int argc, char ** argv){ int main(int argc, char ** argv){
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_LOOKUP)) { if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_LOOKUP)) {

View file

@ -7,12 +7,13 @@
#include "log.h" #include "log.h"
#include "llama.h" #include "llama.h"
#include <algorithm>
#include <clocale>
#include <cmath> #include <cmath>
#include <cstdio> #include <cstdio>
#include <string> #include <string>
#include <vector> #include <vector>
#include <ctime> #include <ctime>
#include <algorithm>
// trim whitespace from the beginning and end of a string // trim whitespace from the beginning and end of a string
static std::string trim(const std::string & str) { static std::string trim(const std::string & str) {
@ -153,6 +154,8 @@ static std::vector<std::string> split_string(const std::string& input, char deli
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
srand(1234); srand(1234);
common_params params; common_params params;

View file

@ -3,6 +3,7 @@
#include "log.h" #include "log.h"
#include "llama.h" #include "llama.h"
#include <clocale>
#include <cmath> #include <cmath>
#include <cstdio> #include <cstdio>
#include <string> #include <string>
@ -16,6 +17,8 @@ static void print_usage(int, char ** argv) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
params.n_junk = 250; params.n_junk = 250;

View file

@ -4,6 +4,7 @@
#include "llama.h" #include "llama.h"
#include <algorithm> #include <algorithm>
#include <clocale>
#include <fstream> #include <fstream>
#include <iostream> // TODO: remove me #include <iostream> // TODO: remove me
@ -112,6 +113,8 @@ static void batch_process(llama_context * ctx, llama_batch & batch, float * outp
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_RETRIEVAL, print_usage)) { if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_RETRIEVAL, print_usage)) {

View file

@ -2,11 +2,14 @@
#include "common.h" #include "common.h"
#include "llama.h" #include "llama.h"
#include <clocale>
#include <vector> #include <vector>
#include <cstdio> #include <cstdio>
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
params.prompt = "The quick brown fox"; params.prompt = "The quick brown fox";

View file

@ -1,4 +1,5 @@
#include "llama.h" #include "llama.h"
#include <clocale>
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
#include <iostream> #include <iostream>
@ -12,6 +13,8 @@ static void print_usage(int, char ** argv) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
std::string model_path; std::string model_path;
int ngl = 99; int ngl = 99;
int n_ctx = 2048; int n_ctx = 2048;

View file

@ -1,4 +1,5 @@
#include "llama.h" #include "llama.h"
#include <clocale>
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
#include <string> #include <string>
@ -11,6 +12,8 @@ static void print_usage(int, char ** argv) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
// path to the model gguf file // path to the model gguf file
std::string model_path; std::string model_path;
// prompt to generate text from // prompt to generate text from

View file

@ -5,12 +5,15 @@
#include "log.h" #include "log.h"
#include "llama.h" #include "llama.h"
#include <clocale>
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
#include <string> #include <string>
#include <vector> #include <vector>
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_SPECULATIVE)) { if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_SPECULATIVE)) {

View file

@ -5,6 +5,7 @@
#include "llama.h" #include "llama.h"
#include <algorithm> #include <algorithm>
#include <clocale>
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
#include <random> #include <random>
@ -30,6 +31,8 @@ struct seq_draft {
}; };
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
// needed to get candidate probs even for temp <= 0.0 // needed to get candidate probs even for temp <= 0.0

View file

@ -6,8 +6,10 @@
#include "ggml-sycl.h" #include "ggml-sycl.h"
#include <clocale>
int main() { int main() {
std::setlocale(LC_NUMERIC, "C");
ggml_backend_sycl_print_sycl_devices(); ggml_backend_sycl_print_sycl_devices();
return 0; return 0;
} }

View file

@ -3,6 +3,7 @@
#include "log.h" #include "log.h"
#include "llama.h" #include "llama.h"
#include <clocale>
#include <cmath> #include <cmath>
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
@ -14,6 +15,8 @@
#endif #endif
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
params.escape = false; params.escape = false;

View file

@ -4,6 +4,7 @@
#include "llama.h" #include "llama.h"
#include <algorithm> #include <algorithm>
#include <clocale>
#include <cstdio> #include <cstdio>
#include <string> #include <string>
#include <vector> #include <vector>
@ -15,6 +16,8 @@ static void print_usage(int, char ** argv) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_BENCH, print_usage)) { if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_BENCH, print_usage)) {

View file

@ -6,6 +6,7 @@
#include "llama.h" #include "llama.h"
#include "chat.h" #include "chat.h"
#include <clocale>
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
#include <ctime> #include <ctime>
@ -84,6 +85,8 @@ static void sigint_handler(int signo) {
#endif #endif
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
g_params = &params; g_params = &params;

View file

@ -7,6 +7,8 @@
#include "pca.hpp" #include "pca.hpp"
#include "mean.hpp" #include "mean.hpp"
#include <clocale>
#ifdef GGML_USE_CUDA #ifdef GGML_USE_CUDA
#include "ggml-cuda.h" #include "ggml-cuda.h"
#endif #endif
@ -392,6 +394,8 @@ static int prepare_entries(common_params & params, train_context & ctx_train) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
params.out_file = "control_vector.gguf"; params.out_file = "control_vector.gguf";

View file

@ -5,6 +5,7 @@
#include "arg.h" #include "arg.h"
#include "common.h" #include "common.h"
#include <clocale>
#include <map> #include <map>
#include <vector> #include <vector>
#include <string> #include <string>
@ -411,6 +412,8 @@ static void print_usage(int, char ** argv) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
params.out_file = "ggml-lora-merged-f16.gguf"; params.out_file = "ggml-lora-merged-f16.gguf";

View file

@ -6,6 +6,7 @@
#include <algorithm> #include <algorithm>
#include <cinttypes> #include <cinttypes>
#include <climits> #include <climits>
#include <clocale>
#include <cstdio> #include <cstdio>
#include <cstdlib> #include <cstdlib>
#include <stdexcept> #include <stdexcept>
@ -567,6 +568,8 @@ static void gguf_merge(const split_params & split_params) {
} }
int main(int argc, const char ** argv) { int main(int argc, const char ** argv) {
std::setlocale(LC_NUMERIC, "C");
split_params params; split_params params;
split_params_parse(argc, argv, params); split_params_parse(argc, argv, params);

View file

@ -6,6 +6,7 @@
#include <algorithm> #include <algorithm>
#include <chrono> #include <chrono>
#include <clocale>
#include <cmath> #include <cmath>
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
@ -1191,6 +1192,8 @@ static bool show_statistics(const common_params & params) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
params.out_file = "imatrix.gguf"; params.out_file = "imatrix.gguf";

View file

@ -2034,8 +2034,9 @@ static std::unique_ptr<printer> create_printer(output_formats format) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
// try to set locale for unicode characters in markdown // try to set locale for unicode characters in markdown
setlocale(LC_CTYPE, ".UTF-8"); std::setlocale(LC_CTYPE, ".UTF-8");
#if !defined(NDEBUG) #if !defined(NDEBUG)
fprintf(stderr, "warning: asserts enabled, performance may be affected\n"); fprintf(stderr, "warning: asserts enabled, performance may be affected\n");

View file

@ -1,7 +1,10 @@
#include <clocale>
#include <cstdio> #include <cstdio>
#include <string> #include <string>
int main(int argc, char** argv) { int main(int argc, char** argv) {
std::setlocale(LC_NUMERIC, "C");
std::string filename = "main"; std::string filename = "main";
if (argc >= 1) { if (argc >= 1) {
filename = argv[0]; filename = argv[0];

View file

@ -274,6 +274,8 @@ static int eval_message(mtmd_cli_context & ctx, common_chat_msg & msg) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
ggml_time_init(); ggml_time_init();
common_params params; common_params params;

View file

@ -3,10 +3,11 @@
#include "log.h" #include "log.h"
#include "llama.h" #include "llama.h"
#include <chrono>
#include <algorithm> #include <algorithm>
#include <array> #include <array>
#include <atomic> #include <atomic>
#include <chrono>
#include <clocale>
#include <cmath> #include <cmath>
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
@ -2004,6 +2005,8 @@ static void kl_divergence(llama_context * ctx, const common_params & params) {
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
params.n_ctx = 512; params.n_ctx = 512;

View file

@ -2,6 +2,10 @@
#include "llama.h" #include "llama.h"
#include "gguf.h" #include "gguf.h"
#include <algorithm>
#include <cctype>
#include <clocale>
#include <cmath>
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
#include <vector> #include <vector>
@ -485,6 +489,8 @@ static bool parse_layer_prune(const char * data, std::vector<int> & prune_layers
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
if (argc < 3) { if (argc < 3) {
usage(argv[0]); usage(argv[0]);
} }

View file

@ -10,12 +10,15 @@
# include <unistd.h> # include <unistd.h>
# include <sys/stat.h> # include <sys/stat.h>
#endif #endif
#include <string>
#include <stdio.h>
#include <vector>
#include <algorithm> #include <algorithm>
#include <thread> #include <clocale>
#include <codecvt>
#include <filesystem>
#include <regex> #include <regex>
#include <stdio.h>
#include <string>
#include <thread>
#include <vector>
#if defined(__linux__) #if defined(__linux__)
#include <sys/types.h> #include <sys/types.h>
@ -285,6 +288,8 @@ static std::vector<ggml_backend_dev_t> get_devices(const rpc_server_params & par
} }
int main(int argc, char * argv[]) { int main(int argc, char * argv[]) {
std::setlocale(LC_NUMERIC, "C");
ggml_backend_load_all(); ggml_backend_load_all();
rpc_server_params params; rpc_server_params params;

View file

@ -8,6 +8,7 @@
#include "log.h" #include "log.h"
#include <atomic> #include <atomic>
#include <clocale>
#include <exception> #include <exception>
#include <signal.h> #include <signal.h>
#include <thread> // for std::thread::hardware_concurrency #include <thread> // for std::thread::hardware_concurrency
@ -67,6 +68,8 @@ static server_http_context::handler_t ex_wrapper(server_http_context::handler_t
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
// own arguments required by this example // own arguments required by this example
common_params params; common_params params;

View file

@ -2,6 +2,7 @@
//#include "log.h" // TODO: start using log.h //#include "log.h" // TODO: start using log.h
#include "llama.h" #include "llama.h"
#include <clocale>
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
#include <fstream> #include <fstream>
@ -184,6 +185,8 @@ static void write_utf8_cstr_to_stdout(const char * str, bool & invalid_utf8) {
} }
int main(int raw_argc, char ** raw_argv) { int main(int raw_argc, char ** raw_argv) {
std::setlocale(LC_NUMERIC, "C");
const std::vector<std::string> argv = ingest_args(raw_argc, raw_argv); const std::vector<std::string> argv = ingest_args(raw_argc, raw_argv);
const int argc = argv.size(); const int argc = argv.size();

View file

@ -10,6 +10,7 @@
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
#include <algorithm> #include <algorithm>
#include <clocale>
#include <cmath> #include <cmath>
#include <cstdio> #include <cstdio>
#include <fstream> #include <fstream>
@ -536,6 +537,8 @@ static std::string audio_data_from_speaker(json speaker, const outetts_version t
} }
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
std::setlocale(LC_NUMERIC, "C");
common_params params; common_params params;
params.out_file = "output.wav"; params.out_file = "output.wav";