// Copyright (c) 2024 Xiaomi Corporation import 'dart:ffi'; import 'package:ffi/ffi.dart'; final class SherpaOnnxSileroVadModelConfig extends Struct { external Pointer model; @Float() external double threshold; @Float() external double minSilenceDuration; @Float() external double minSpeechDuration; @Int32() external int windowSize; } final class SherpaOnnxVadModelConfig extends Struct { external SherpaOnnxSileroVadModelConfig sileroVad; @Int32() external int sampleRate; @Int32() external int numThreads; external Pointer provider; @Int32() external int debug; } final class SherpaOnnxSpeechSegment extends Struct { @Int32() external int start; external Pointer samples; @Int32() external int n; } 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 SherpaOnnxCircularBuffer extends Opaque {} final class SherpaOnnxVoiceActivityDetector extends Opaque {} final class SherpaOnnxOnlineStream extends Opaque {} final class SherpaOnnxSpeakerEmbeddingExtractor extends Opaque {} final class SherpaOnnxSpeakerEmbeddingManager extends Opaque {} typedef SherpaOnnxCreateVoiceActivityDetectorNative = Pointer Function( Pointer, Float); typedef SherpaOnnxCreateVoiceActivityDetector = Pointer Function( Pointer, double); typedef SherpaOnnxDestroyVoiceActivityDetectorNative = Void Function( Pointer); typedef SherpaOnnxDestroyVoiceActivityDetector = void Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorAcceptWaveformNative = Void Function( Pointer, Pointer, Int32); typedef SherpaOnnxVoiceActivityDetectorAcceptWaveform = void Function( Pointer, Pointer, int); typedef SherpaOnnxVoiceActivityDetectorEmptyNative = Int32 Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorEmpty = int Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorDetectedNative = Int32 Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorDetected = int Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorPopNative = Void Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorPop = void Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorClearNative = Void Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorClear = void Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorResetNative = Void Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorReset = void Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorFrontNative = Pointer Function( Pointer); typedef SherpaOnnxVoiceActivityDetectorFront = SherpaOnnxVoiceActivityDetectorFrontNative; typedef SherpaOnnxDestroySpeechSegmentNative = Void Function( Pointer); typedef SherpaOnnxDestroySpeechSegment = void Function( Pointer); typedef SherpaOnnxCreateCircularBufferNative = Pointer Function(Int32); typedef SherpaOnnxCreateCircularBuffer = Pointer Function(int); typedef SherpaOnnxDestroyCircularBufferNative = Void Function( Pointer); typedef SherpaOnnxDestroyCircularBuffer = void Function( Pointer); typedef SherpaOnnxCircularBufferPushNative = Void Function( Pointer, Pointer, Int32); typedef SherpaOnnxCircularBufferPush = void Function( Pointer, Pointer, int); typedef SherpaOnnxCircularBufferGetNative = Pointer Function( Pointer, Int32, Int32); typedef SherpaOnnxCircularBufferGet = Pointer Function( Pointer, int, int); typedef SherpaOnnxCircularBufferFreeNative = Void Function(Pointer); typedef SherpaOnnxCircularBufferFree = void Function(Pointer); typedef SherpaOnnxCircularBufferPopNative = Void Function( Pointer, Int32); typedef SherpaOnnxCircularBufferPop = void Function( Pointer, int); typedef SherpaOnnxCircularBufferSizeNative = Int32 Function( Pointer); typedef SherpaOnnxCircularBufferSize = int Function( Pointer); typedef SherpaOnnxCircularBufferHeadNative = Int32 Function( Pointer); typedef SherpaOnnxCircularBufferHead = int Function( Pointer); typedef SherpaOnnxCircularBufferResetNative = Void Function( Pointer); typedef SherpaOnnxCircularBufferReset = void Function( Pointer); typedef SherpaOnnxCreateSpeakerEmbeddingManagerNative = Pointer Function(Int32); typedef SherpaOnnxCreateSpeakerEmbeddingManager = Pointer Function(int); 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 SherpaOnnxCreateVoiceActivityDetector? createVoiceActivityDetector; static SherpaOnnxDestroyVoiceActivityDetector? destroyVoiceActivityDetector; static SherpaOnnxVoiceActivityDetectorAcceptWaveform? voiceActivityDetectorAcceptWaveform; static SherpaOnnxVoiceActivityDetectorEmpty? voiceActivityDetectorEmpty; static SherpaOnnxVoiceActivityDetectorDetected? voiceActivityDetectorDetected; static SherpaOnnxVoiceActivityDetectorPop? voiceActivityDetectorPop; static SherpaOnnxVoiceActivityDetectorClear? voiceActivityDetectorClear; static SherpaOnnxVoiceActivityDetectorFront? voiceActivityDetectorFront; static SherpaOnnxDestroySpeechSegment? destroySpeechSegment; static SherpaOnnxVoiceActivityDetectorReset? voiceActivityDetectorReset; static SherpaOnnxCreateCircularBuffer? createCircularBuffer; static SherpaOnnxDestroyCircularBuffer? destroyCircularBuffer; static SherpaOnnxCircularBufferPush? circularBufferPush; static SherpaOnnxCircularBufferGet? circularBufferGet; static SherpaOnnxCircularBufferFree? circularBufferFree; static SherpaOnnxCircularBufferPop? circularBufferPop; static SherpaOnnxCircularBufferSize? circularBufferSize; static SherpaOnnxCircularBufferHead? circularBufferHead; static SherpaOnnxCircularBufferReset? circularBufferReset; 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) { createVoiceActivityDetector ??= dynamicLibrary .lookup>( 'SherpaOnnxCreateVoiceActivityDetector') .asFunction(); destroyVoiceActivityDetector ??= dynamicLibrary .lookup>( 'SherpaOnnxDestroyVoiceActivityDetector') .asFunction(); voiceActivityDetectorAcceptWaveform ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxVoiceActivityDetectorAcceptWaveformNative>>( 'SherpaOnnxVoiceActivityDetectorAcceptWaveform') .asFunction(); voiceActivityDetectorEmpty ??= dynamicLibrary .lookup>( 'SherpaOnnxVoiceActivityDetectorEmpty') .asFunction(); voiceActivityDetectorDetected ??= dynamicLibrary .lookup>( 'SherpaOnnxVoiceActivityDetectorDetected') .asFunction(); voiceActivityDetectorPop ??= dynamicLibrary .lookup>( 'SherpaOnnxVoiceActivityDetectorPop') .asFunction(); voiceActivityDetectorClear ??= dynamicLibrary .lookup>( 'SherpaOnnxVoiceActivityDetectorClear') .asFunction(); voiceActivityDetectorFront ??= dynamicLibrary .lookup>( 'SherpaOnnxVoiceActivityDetectorFront') .asFunction(); destroySpeechSegment ??= dynamicLibrary .lookup>( 'SherpaOnnxDestroySpeechSegment') .asFunction(); voiceActivityDetectorReset ??= dynamicLibrary .lookup>( 'SherpaOnnxVoiceActivityDetectorReset') .asFunction(); createCircularBuffer ??= dynamicLibrary .lookup>( 'SherpaOnnxCreateCircularBuffer') .asFunction(); destroyCircularBuffer ??= dynamicLibrary .lookup>( 'SherpaOnnxDestroyCircularBuffer') .asFunction(); circularBufferPush ??= dynamicLibrary .lookup>( 'SherpaOnnxCircularBufferPush') .asFunction(); circularBufferGet ??= dynamicLibrary .lookup>( 'SherpaOnnxCircularBufferGet') .asFunction(); circularBufferFree ??= dynamicLibrary .lookup>( 'SherpaOnnxCircularBufferFree') .asFunction(); circularBufferPop ??= dynamicLibrary .lookup>( 'SherpaOnnxCircularBufferPop') .asFunction(); circularBufferSize ??= dynamicLibrary .lookup>( 'SherpaOnnxCircularBufferSize') .asFunction(); circularBufferHead ??= dynamicLibrary .lookup>( 'SherpaOnnxCircularBufferHead') .asFunction(); circularBufferReset ??= dynamicLibrary .lookup>( 'SherpaOnnxCircularBufferReset') .asFunction(); createSpeakerEmbeddingExtractor ??= dynamicLibrary .lookup< NativeFunction< SherpaOnnxCreateSpeakerEmbeddingExtractorNative>>( '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(); } }