// Copyright (c) 2024 Xiaomi Corporation import 'dart:ffi'; import 'package:ffi/ffi.dart'; final class SherpaOnnxWave extends Struct { external Pointer samples; @Int32() external int sampleRate; @Int32() external int numSamples; } final class SherpaOnnxSpeakerEmbeddingExtractorConfig extends Struct { external Pointer model; @Int32() external int numThreads; @Int32() external int debug; external Pointer provider; } final class SherpaOnnxOnlineStream extends Opaque {} final class SherpaOnnxSpeakerEmbeddingExtractor extends Opaque {} final class SherpaOnnxSpeakerEmbeddingManager extends Opaque {} typedef SherpaOnnxCreateSpeakerEmbeddingManagerNative = Pointer Function(Int32 dim); typedef SherpaOnnxCreateSpeakerEmbeddingManager = Pointer Function(int dim); typedef SherpaOnnxDestroySpeakerEmbeddingManagerNative = Void Function( Pointer); typedef SherpaOnnxDestroySpeakerEmbeddingManager = void Function( Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerAddNative = Int32 Function( Pointer, Pointer, Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerAdd = int Function( Pointer, Pointer, Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerAddListFlattenedNative = Int32 Function(Pointer, Pointer, Pointer, Int32); typedef SherpaOnnxSpeakerEmbeddingManagerAddListFlattened = int Function( Pointer, Pointer, Pointer, int); typedef SherpaOnnxSpeakerEmbeddingManagerRemoveNative = Int32 Function( Pointer, Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerRemove = int Function( Pointer, Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerContainsNative = Int32 Function( Pointer, Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerContains = int Function( Pointer, Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerSearchNative = Pointer Function( Pointer, Pointer, Float); typedef SherpaOnnxSpeakerEmbeddingManagerSearch = Pointer Function( Pointer, Pointer, double); typedef SherpaOnnxSpeakerEmbeddingManagerFreeSearchNative = Void Function( Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerFreeSearch = void Function( Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerNumSpeakersNative = Int32 Function( Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerNumSpeakers = int Function( Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerVerifyNative = Int32 Function( Pointer, Pointer, Pointer, Float); typedef SherpaOnnxSpeakerEmbeddingManagerVerify = int Function( Pointer, Pointer, Pointer, double); typedef SherpaOnnxSpeakerEmbeddingManagerGetAllSpeakersNative = Pointer> Function( Pointer); typedef SherpaOnnxSpeakerEmbeddingManagerGetAllSpeakers = SherpaOnnxSpeakerEmbeddingManagerGetAllSpeakersNative; typedef SherpaOnnxSpeakerEmbeddingManagerFreeAllSpeakersNative = Void Function( Pointer>); typedef SherpaOnnxSpeakerEmbeddingManagerFreeAllSpeakers = void Function( Pointer>); typedef SherpaOnnxCreateSpeakerEmbeddingExtractorNative = Pointer Function( Pointer); typedef SherpaOnnxCreateSpeakerEmbeddingExtractor = SherpaOnnxCreateSpeakerEmbeddingExtractorNative; typedef SherpaOnnxDestroySpeakerEmbeddingExtractorNative = Void Function( Pointer); typedef SherpaOnnxDestroySpeakerEmbeddingExtractor = void Function( Pointer); typedef SherpaOnnxSpeakerEmbeddingExtractorDimNative = Int32 Function( Pointer); typedef SherpaOnnxSpeakerEmbeddingExtractorDim = int Function( Pointer); typedef SherpaOnnxSpeakerEmbeddingExtractorCreateStreamNative = Pointer Function( Pointer); typedef SherpaOnnxSpeakerEmbeddingExtractorCreateStream = SherpaOnnxSpeakerEmbeddingExtractorCreateStreamNative; typedef DestroyOnlineStreamNative = Void Function( Pointer); typedef DestroyOnlineStream = void Function(Pointer); typedef OnlineStreamAcceptWaveformNative = Void Function( Pointer, Int32 sample_rate, Pointer, Int32 n); typedef OnlineStreamAcceptWaveform = void Function( Pointer, int sample_rate, Pointer, int n); typedef OnlineStreamInputFinishedNative = Void Function( Pointer); typedef OnlineStreamInputFinished = void Function( Pointer); typedef SherpaOnnxSpeakerEmbeddingExtractorIsReadyNative = Int32 Function( Pointer, Pointer); typedef SherpaOnnxSpeakerEmbeddingExtractorIsReady = int Function( Pointer, Pointer); typedef SherpaOnnxSpeakerEmbeddingExtractorComputeEmbeddingNative = Pointer Function(Pointer, Pointer); typedef SherpaOnnxSpeakerEmbeddingExtractorComputeEmbedding = SherpaOnnxSpeakerEmbeddingExtractorComputeEmbeddingNative; typedef SherpaOnnxSpeakerEmbeddingExtractorDestroyEmbeddingNative = Void Function(Pointer); typedef SherpaOnnxSpeakerEmbeddingExtractorDestroyEmbedding = void Function( Pointer); typedef SherpaOnnxReadWaveNative = Pointer Function( Pointer); typedef SherpaOnnxReadWave = SherpaOnnxReadWaveNative; typedef SherpaOnnxFreeWaveNative = Void Function(Pointer); typedef SherpaOnnxFreeWave = void Function(Pointer); class SherpaOnnxBindings { static SherpaOnnxCreateSpeakerEmbeddingExtractor? createSpeakerEmbeddingExtractor; static SherpaOnnxDestroySpeakerEmbeddingExtractor? destroySpeakerEmbeddingExtractor; static SherpaOnnxSpeakerEmbeddingExtractorDim? speakerEmbeddingExtractorDim; static SherpaOnnxSpeakerEmbeddingExtractorCreateStream? speakerEmbeddingExtractorCreateStream; static SherpaOnnxSpeakerEmbeddingExtractorComputeEmbedding? speakerEmbeddingExtractorComputeEmbedding; static SherpaOnnxSpeakerEmbeddingExtractorDestroyEmbedding? speakerEmbeddingExtractorDestroyEmbedding; static DestroyOnlineStream? destroyOnlineStream; static OnlineStreamAcceptWaveform? onlineStreamAcceptWaveform; static OnlineStreamInputFinished? onlineStreamInputFinished; static SherpaOnnxSpeakerEmbeddingExtractorIsReady? speakerEmbeddingExtractorIsReady; static SherpaOnnxCreateSpeakerEmbeddingManager? createSpeakerEmbeddingManager; static SherpaOnnxDestroySpeakerEmbeddingManager? destroySpeakerEmbeddingManager; static SherpaOnnxSpeakerEmbeddingManagerAdd? speakerEmbeddingManagerAdd; static SherpaOnnxSpeakerEmbeddingManagerAddListFlattened? speakerEmbeddingManagerAddListFlattened; static SherpaOnnxSpeakerEmbeddingManagerRemove? speakerEmbeddingManagerRemove; static SherpaOnnxSpeakerEmbeddingManagerContains? speakerEmbeddingManagerContains; static SherpaOnnxSpeakerEmbeddingManagerSearch? speakerEmbeddingManagerSearch; static SherpaOnnxSpeakerEmbeddingManagerFreeSearch? speakerEmbeddingManagerFreeSearch; static SherpaOnnxSpeakerEmbeddingManagerNumSpeakers? speakerEmbeddingManagerNumSpeakers; static SherpaOnnxSpeakerEmbeddingManagerVerify? speakerEmbeddingManagerVerify; static SherpaOnnxSpeakerEmbeddingManagerGetAllSpeakers? speakerEmbeddingManagerGetAllSpeakers; static SherpaOnnxSpeakerEmbeddingManagerFreeAllSpeakers? speakerEmbeddingManagerFreeAllSpeakers; static SherpaOnnxReadWave? readWave; static SherpaOnnxFreeWave? freeWave; static void init(DynamicLibrary dynamicLibrary) { createSpeakerEmbeddingExtractor ??= dynamicLibrary .lookup>( 'SherpaOnnxCreateSpeakerEmbeddingExtractor') .asFunction(); destroySpeakerEmbeddingExtractor ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxDestroySpeakerEmbeddingExtractorNative>>( 'SherpaOnnxDestroySpeakerEmbeddingExtractor') .asFunction(); speakerEmbeddingExtractorDim ??= dynamicLibrary .lookup>( 'SherpaOnnxSpeakerEmbeddingExtractorDim') .asFunction(); speakerEmbeddingExtractorCreateStream ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxSpeakerEmbeddingExtractorCreateStreamNative>>( 'SherpaOnnxSpeakerEmbeddingExtractorCreateStream') .asFunction(); speakerEmbeddingExtractorComputeEmbedding ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxSpeakerEmbeddingExtractorComputeEmbeddingNative>>( 'SherpaOnnxSpeakerEmbeddingExtractorComputeEmbedding') .asFunction(); speakerEmbeddingExtractorDestroyEmbedding ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxSpeakerEmbeddingExtractorDestroyEmbeddingNative>>( 'SherpaOnnxSpeakerEmbeddingExtractorDestroyEmbedding') .asFunction(); destroyOnlineStream ??= dynamicLibrary .lookup>( 'DestroyOnlineStream') .asFunction(); onlineStreamAcceptWaveform ??= dynamicLibrary .lookup>( 'AcceptWaveform') .asFunction(); onlineStreamInputFinished ??= dynamicLibrary .lookup>( 'InputFinished') .asFunction(); speakerEmbeddingExtractorIsReady ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxSpeakerEmbeddingExtractorIsReadyNative>>( 'SherpaOnnxSpeakerEmbeddingExtractorIsReady') .asFunction(); createSpeakerEmbeddingManager ??= dynamicLibrary .lookup>( 'SherpaOnnxCreateSpeakerEmbeddingManager') .asFunction(); destroySpeakerEmbeddingManager ??= dynamicLibrary .lookup>( 'SherpaOnnxDestroySpeakerEmbeddingManager') .asFunction(); speakerEmbeddingManagerAdd ??= dynamicLibrary .lookup>( 'SherpaOnnxSpeakerEmbeddingManagerAdd') .asFunction(); speakerEmbeddingManagerAddListFlattened ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxSpeakerEmbeddingManagerAddListFlattenedNative>>( 'SherpaOnnxSpeakerEmbeddingManagerAddListFlattened') .asFunction(); speakerEmbeddingManagerRemove ??= dynamicLibrary .lookup>( 'SherpaOnnxSpeakerEmbeddingManagerRemove') .asFunction(); speakerEmbeddingManagerContains ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxSpeakerEmbeddingManagerContainsNative>>( 'SherpaOnnxSpeakerEmbeddingManagerContains') .asFunction(); speakerEmbeddingManagerSearch ??= dynamicLibrary .lookup>( 'SherpaOnnxSpeakerEmbeddingManagerSearch') .asFunction(); speakerEmbeddingManagerFreeSearch ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxSpeakerEmbeddingManagerFreeSearchNative>>( 'SherpaOnnxSpeakerEmbeddingManagerFreeSearch') .asFunction(); speakerEmbeddingManagerNumSpeakers ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxSpeakerEmbeddingManagerNumSpeakersNative>>( 'SherpaOnnxSpeakerEmbeddingManagerNumSpeakers') .asFunction(); speakerEmbeddingManagerVerify ??= dynamicLibrary .lookup>( 'SherpaOnnxSpeakerEmbeddingManagerVerify') .asFunction(); speakerEmbeddingManagerGetAllSpeakers ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxSpeakerEmbeddingManagerGetAllSpeakersNative>>( 'SherpaOnnxSpeakerEmbeddingManagerGetAllSpeakers') .asFunction(); speakerEmbeddingManagerFreeAllSpeakers ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxSpeakerEmbeddingManagerFreeAllSpeakersNative>>( 'SherpaOnnxSpeakerEmbeddingManagerFreeAllSpeakers') .asFunction(); readWave ??= dynamicLibrary .lookup>('SherpaOnnxReadWave') .asFunction(); freeWave ??= dynamicLibrary .lookup>('SherpaOnnxFreeWave') .asFunction(); } }