loadVadModel method

void loadVadModel(
  1. String? modelPath, {
  2. Map<String, dynamic>? config,
})

Load a VAD model.

Implementation

void loadVadModel(String? modelPath, {Map<String, dynamic>? config}) {
  _ensureBackendType('onnx');

  // Try to load native VAD if model path provided
  if (modelPath != null && modelPath.isNotEmpty) {
    try {
      final pathPtr = modelPath.toNativeUtf8();
      final handlePtr = calloc<RacHandle>();
      final configPtr = calloc<RacVadOnnxConfigStruct>();

      // Set config defaults
      configPtr.ref.numThreads = 0; // Auto
      configPtr.ref.sampleRate = 16000;
      configPtr.ref.windowSizeMs = 30;
      configPtr.ref.threshold = 0.5;

      try {
        final create =
            _lib.lookupFunction<RacVadOnnxCreateNative, RacVadOnnxCreateDart>(
                'rac_vad_onnx_create');

        final result = create(pathPtr, configPtr.cast(), handlePtr);

        if (result == RAC_SUCCESS) {
          _vadHandle = handlePtr.value;
          _vadUseNative = true;
        }
      } finally {
        calloc.free(pathPtr);
        calloc.free(handlePtr);
        calloc.free(configPtr);
      }
    } catch (_) {
      // Fall back to energy-based detection
      _vadUseNative = false;
    }
  }

  _isInitialized = true;
}