Alan commited on
Commit
d83eddb
·
1 Parent(s): 403105e

Adds support for stdin wav input

Browse files
Files changed (1) hide show
  1. examples/main/main.cpp +24 -3
examples/main/main.cpp CHANGED
@@ -454,9 +454,30 @@ int main(int argc, char ** argv) {
454
  std::vector<float> pcmf32;
455
  {
456
  drwav wav;
457
- if (!drwav_init_file(&wav, fname_inp.c_str(), NULL)) {
458
- fprintf(stderr, "%s: failed to open WAV file '%s' - check your input\n", argv[0], fname_inp.c_str());
459
- whisper_print_usage(argc, argv, {});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
460
  return 4;
461
  }
462
 
 
454
  std::vector<float> pcmf32;
455
  {
456
  drwav wav;
457
+
458
+ if (fname_inp == "-") {
459
+ std::vector<uint8_t> wav_data;
460
+ {
461
+ uint8_t buf[1024];
462
+ while (true)
463
+ {
464
+ const size_t n = fread(buf, 1, sizeof(buf), stdin);
465
+ if (n == 0)
466
+ {
467
+ break;
468
+ }
469
+ wav_data.insert(wav_data.end(), buf, buf + n);
470
+ }
471
+ }
472
+
473
+ if (drwav_init_memory(&wav, wav_data.data(), wav_data.size(), NULL) == false)
474
+ {
475
+ fprintf(stderr, "error: failed to open WAV file from stdin\n");
476
+ return 4;
477
+ }
478
+ }
479
+ else if (drwav_init_file(&wav, fname_inp.c_str(), NULL) == false) {
480
+ fprintf(stderr, "error: failed to open '%s' as WAV file\n", fname_inp.c_str());
481
  return 4;
482
  }
483