[](common_params & params, const std::string & value) {
params.out_file = value;
}
- ).set_examples({LLAMA_EXAMPLE_IMATRIX, LLAMA_EXAMPLE_CVECTOR_GENERATOR, LLAMA_EXAMPLE_EXPORT_LORA}));
+ ).set_examples({LLAMA_EXAMPLE_IMATRIX, LLAMA_EXAMPLE_CVECTOR_GENERATOR, LLAMA_EXAMPLE_EXPORT_LORA, LLAMA_EXAMPLE_TTS}));
add_opt(common_arg(
{"-ofreq", "--output-frequency"}, "N",
string_format("output the imatrix every N iterations (default: %d)", params.n_out_freq),
uint32_t data_size;
};
-static void save_wav16(const std::string & fname, const std::vector<float> & data, int sample_rate) {
+static bool save_wav16(const std::string & fname, const std::vector<float> & data, int sample_rate) {
std::ofstream file(fname, std::ios::binary);
if (!file) {
- LOG_ERR("%s: Failed to open file '%s' for writing", __func__, fname.c_str());
- return;
+ LOG_ERR("%s: Failed to open file '%s' for writing.\n", __func__, fname.c_str());
+ return false;
}
wav_header header;
file.write(reinterpret_cast<const char*>(&pcm_sample), sizeof(pcm_sample));
}
- file.close();
+ return file.good();
}
static void fill_hann_window(int length, bool periodic, float * output) {
int main(int argc, char ** argv) {
common_params params;
+ params.out_file = "output.wav";
params.prompt = "";
params.n_predict = 4096;
}
#endif
- const std::string fname = "output.wav";
-
const int n_sr = 24000; // sampling rate
// zero out first 0.25 seconds
LOG_INF("%s: time for spectral ops: %.3f ms\n", __func__, (ggml_time_us() - t_spec_start) / 1000.0f);
LOG_INF("%s: total time: %.3f ms\n", __func__, (ggml_time_us() - t_main_start) / 1000.0f);
- save_wav16(fname, audio, n_sr);
+ int retval = 0;
- LOG_INF("%s: audio written to file '%s'\n", __func__, fname.c_str());
+ if (save_wav16(params.out_file, audio, n_sr)) {
+ LOG_INF("%s: audio written to file '%s'\n", __func__, params.out_file.c_str());
+ } else {
+ retval = ENOENT;
+ }
llama_backend_free();
- return 0;
+ return retval;
}