Dart API for speaker diarization (#1418)

This commit is contained in:
Fangjun Kuang
2024-10-11 21:17:41 +08:00
committed by GitHub
parent 1851ff6337
commit 1ed803adc1
21 changed files with 733 additions and 17 deletions

View File

@@ -1828,4 +1828,20 @@ SherpaOnnxOfflineSpeakerDiarizationProcessWithCallback(
return ans;
}
const SherpaOnnxOfflineSpeakerDiarizationResult *
SherpaOnnxOfflineSpeakerDiarizationProcessWithCallbackNoArg(
const SherpaOnnxOfflineSpeakerDiarization *sd, const float *samples,
int32_t n,
SherpaOnnxOfflineSpeakerDiarizationProgressCallbackNoArg callback) {
auto wrapper = [callback](int32_t num_processed_chunks,
int32_t num_total_chunks, void *) {
return callback(num_processed_chunks, num_total_chunks);
};
auto ans = new SherpaOnnxOfflineSpeakerDiarizationResult;
ans->impl = sd->impl->Process(samples, n, wrapper);
return ans;
}
#endif

View File

@@ -1485,6 +1485,9 @@ SHERPA_ONNX_API void SherpaOnnxOfflineSpeakerDiarizationDestroySegment(
typedef int32_t (*SherpaOnnxOfflineSpeakerDiarizationProgressCallback)(
int32_t num_processed_chunk, int32_t num_total_chunks, void *arg);
typedef int32_t (*SherpaOnnxOfflineSpeakerDiarizationProgressCallbackNoArg)(
int32_t num_processed_chunk, int32_t num_total_chunks);
// The user has to invoke SherpaOnnxOfflineSpeakerDiarizationDestroyResult()
// to free the returned pointer to avoid memory leak.
SHERPA_ONNX_API const SherpaOnnxOfflineSpeakerDiarizationResult *
@@ -1500,6 +1503,12 @@ SherpaOnnxOfflineSpeakerDiarizationProcessWithCallback(
int32_t n, SherpaOnnxOfflineSpeakerDiarizationProgressCallback callback,
void *arg);
SHERPA_ONNX_API const SherpaOnnxOfflineSpeakerDiarizationResult *
SherpaOnnxOfflineSpeakerDiarizationProcessWithCallbackNoArg(
const SherpaOnnxOfflineSpeakerDiarization *sd, const float *samples,
int32_t n,
SherpaOnnxOfflineSpeakerDiarizationProgressCallbackNoArg callback);
SHERPA_ONNX_API void SherpaOnnxOfflineSpeakerDiarizationDestroyResult(
const SherpaOnnxOfflineSpeakerDiarizationResult *r);

View File

@@ -5,6 +5,7 @@
#define SHERPA_ONNX_CSRC_OFFLINE_SPEAKER_DIARIZATION_PYANNOTE_IMPL_H_
#include <algorithm>
#include <memory>
#include <unordered_map>
#include <utility>
#include <vector>

View File

@@ -204,7 +204,8 @@ Java_com_k2fsa_sherpa_onnx_OfflineSpeakerDiarization_processWithCallback(
jfloat *p = env->GetFloatArrayElements(samples, nullptr);
jsize n = env->GetArrayLength(samples);
auto segments =
sd->Process(p, n, callback_wrapper, (void *)arg).SortByStartTime();
sd->Process(p, n, callback_wrapper, reinterpret_cast<void *>(arg))
.SortByStartTime();
env->ReleaseFloatArrayElements(samples, p, JNI_ABORT);
return ProcessImpl(env, segments);