#include "diarizen_segmenter.h" #include #include int main(int argc, char* argv[]) { if (argc < 4) { std::fprintf(stderr, "Usage: %s \n", argv[0]); std::fprintf(stderr, " audio.raw: 64000 float32 samples, 16kHz mono\n"); return 1; } // Load raw audio std::vector 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; }