Dart API for speaker diarization (#1418)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user