DiariZen / cpp /examples /main.cpp
inoryQwQ's picture
Upload folder using huggingface_hub
37c4768 verified
Raw
History Blame Contribute Delete
1.31 kB
#include "diarizen_segmenter.h"
#include <cstdio>
#include <vector>
int main(int argc, char* argv[]) {
if (argc < 4) {
std::fprintf(stderr, "Usage: %s <cnn.axmodel> <backend.onnx> <audio.raw>\n", argv[0]);
std::fprintf(stderr, " audio.raw: 64000 float32 samples, 16kHz mono\n");
return 1;
}
// Load raw audio
std::vector<float> audio(64000);
FILE* f = std::fopen(argv[3], "rb");
if (!f) {
std::fprintf(stderr, "Cannot open %s\n", argv[3]);
return 1;
}
std::fread(audio.data(), sizeof(float), 64000, f);
std::fclose(f);
diarizen::DiarizenSegmenter segmenter(argv[1], argv[2]);
auto result = segmenter.run(audio.data(), 64000);
std::printf("Segmentation: %d frames x %d classes\n",
result.num_frames, result.num_classes);
// Show top class for a few frames
for (int f : {0, 50, 100, 150, 198}) {
int best_class = 0;
float best_val = result.log_probs[f * result.num_classes];
for (int c = 1; c < result.num_classes; ++c) {
float v = result.log_probs[f * result.num_classes + c];
if (v > best_val) { best_val = v; best_class = c; }
}
std::printf(" Frame %3d: top class %2d (%.4f)\n", f, best_class, best_val);
}
return 0;
}