@@ -192,6 +192,10 @@ class OfflineSpeakerDiarization {
192192 /// The user is responsible to call the OfflineSpeakerDiarization.free()
193193 /// method of the returned instance to avoid memory leak.
194194 factory OfflineSpeakerDiarization (OfflineSpeakerDiarizationConfig config) {
195+ if (SherpaOnnxBindings .sherpaOnnxCreateOfflineSpeakerDiarization == null ) {
196+ throw Exception ("Please initialize sherpa-onnx first" );
197+ }
198+
195199 final c = calloc <SherpaOnnxOfflineSpeakerDiarizationConfig >();
196200
197201 c.ref.segmentation.pyannote.model =
@@ -211,31 +215,25 @@ class OfflineSpeakerDiarization {
211215 c.ref.minDurationOn = config.minDurationOn;
212216 c.ref.minDurationOff = config.minDurationOff;
213217
214- if (SherpaOnnxBindings .sherpaOnnxCreateOfflineSpeakerDiarization == null ) {
215- throw Exception ("Please initialize sherpa-onnx first" );
216- }
217-
218218 final ptr =
219219 SherpaOnnxBindings .sherpaOnnxCreateOfflineSpeakerDiarization? .call (c) ??
220220 nullptr;
221221
222- if (ptr == nullptr) {
223- throw Exception (
224- "Failed to create offline speaker diarization. Please check your config" );
225- }
226-
227222 calloc.free (c.ref.embedding.provider);
228223 calloc.free (c.ref.embedding.model);
229224 calloc.free (c.ref.segmentation.provider);
230225 calloc.free (c.ref.segmentation.pyannote.model);
226+ calloc.free (c);
231227
232- int sampleRate = 0 ;
233- if (ptr != nullptr) {
234- sampleRate = SherpaOnnxBindings
235- .sherpaOnnxOfflineSpeakerDiarizationGetSampleRate
236- ? .call (ptr) ??
237- 0 ;
228+ if (ptr == nullptr) {
229+ throw Exception (
230+ "Failed to create offline speaker diarization. Please check your config" );
238231 }
232+
233+ int sampleRate = SherpaOnnxBindings
234+ .sherpaOnnxOfflineSpeakerDiarizationGetSampleRate
235+ ? .call (ptr) ?? 0 ;
236+
239237 return OfflineSpeakerDiarization ._(
240238 ptr: ptr, config: config, sampleRate: sampleRate);
241239 }
0 commit comments