Skip to content

Commit d26dc56

Browse files
committed
vad : add whisper_vad function to public API
1 parent 705db0f commit d26dc56

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

include/whisper.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,14 @@ extern "C" {
707707
const float * samples,
708708
int n_samples);
709709

710+
WHISPER_API bool whisper_vad(
711+
struct whisper_context * ctx,
712+
struct whisper_full_params params,
713+
const float * samples,
714+
int n_samples,
715+
float ** vad_samples,
716+
int * n_vad_samples);
717+
710718
WHISPER_API int whisper_vad_segments_n_segments(struct whisper_vad_segments * segments);
711719

712720
WHISPER_API float whisper_vad_segments_get_segment_t0(struct whisper_vad_segments * segments, int i_segment);

src/whisper.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6792,6 +6792,38 @@ static bool whisper_vad(
67926792
return true;
67936793
}
67946794

6795+
bool whisper_vad(
6796+
struct whisper_context * ctx,
6797+
struct whisper_full_params params,
6798+
const float * samples,
6799+
int n_samples,
6800+
float ** vad_samples,
6801+
int * n_vad_samples) {
6802+
6803+
std::vector<float> filtered_samples;
6804+
6805+
if (!whisper_vad(ctx, ctx->state, params, samples, n_samples, filtered_samples)) {
6806+
WHISPER_LOG_ERROR("%s: VAD processing failed\n", __func__);
6807+
return false;
6808+
}
6809+
6810+
*n_vad_samples = filtered_samples.size();
6811+
6812+
if (filtered_samples.size() == 0) {
6813+
*vad_samples = nullptr; // No speech detected
6814+
return true;
6815+
}
6816+
6817+
*vad_samples = (float*)malloc(filtered_samples.size() * sizeof(float));
6818+
if (!*vad_samples) {
6819+
WHISPER_LOG_ERROR("%s: VAD processing failed to allocate filtered_samples\n", __func__);
6820+
return false;
6821+
}
6822+
6823+
std::memcpy(*vad_samples, filtered_samples.data(), filtered_samples.size() * sizeof(float));
6824+
return true;
6825+
}
6826+
67956827
int whisper_full_with_state(
67966828
struct whisper_context * ctx,
67976829
struct whisper_state * state,

0 commit comments

Comments
 (0)