openModel method

void openModel(
  1. String encoder,
  2. String decoder1,
  3. String decoder2,
  4. String wave,
  5. String? ssl,
  6. int modelType,
  7. int cleanerType,
  8. int envId
)

Implementation

void openModel(
  String encoder,
  String decoder1,
  String decoder2,
  String wave,
  String? ssl,
  int modelType,
  int cleanerType,
  int envId,
) {
  close();

  ailiaVoice = ailia_voice_dart.ailiaVoiceFFI(
    _ailiaCommonGetLibrary(_ailiaCommonGetVoicePath()),
  );
  ailia = _ailiaCommonGetLibrary(_ailiaCommonGetPath());
  ailiaAudio = _ailiaCommonGetLibrary(_ailiaCommonGetAudioPath());

  ppAilia = malloc<ffi.Pointer<ailia_voice_dart.AILIAVoice>>();

  ffi.Pointer<ailia_voice_dart.AILIAVoiceApiCallback> callback =
      getCallback();

  int memoryMode = ailia_voice_dart.AILIA_MEMORY_REDUCE_CONSTANT |
      ailia_voice_dart.AILIA_MEMORY_REDUCE_CONSTANT_WITH_INPUT_INITIALIZER |
      ailia_voice_dart.AILIA_MEMORY_REUSE_INTERSTAGE;
  int flag = ailia_voice_dart.AILIA_VOICE_FLAG_NONE;

  int status = ailiaVoice.ailiaVoiceCreate(
    ppAilia,
    envId,
    ailia_voice_dart.AILIA_MULTITHREAD_AUTO,
    memoryMode,
    flag,
    callback.ref,
    ailia_voice_dart.AILIA_VOICE_API_CALLBACK_VERSION,
  );
  throwError("ailiaVoiceCreate", status);

  if (Platform.isWindows){
    status = ailiaVoice.ailiaVoiceOpenModelFileW(
      ppAilia!.value,
      encoder.toNativeUtf16().cast<ffi.WChar>(),
      decoder1.toNativeUtf16().cast<ffi.WChar>(),
      decoder2.toNativeUtf16().cast<ffi.WChar>(),
      wave.toNativeUtf16().cast<ffi.WChar>(),
      (ssl != null) ? ssl.toNativeUtf16().cast<ffi.WChar>():ffi.nullptr,
      modelType,
      cleanerType,
    );
  }else{
    status = ailiaVoice.ailiaVoiceOpenModelFileA(
      ppAilia!.value,
      encoder.toNativeUtf8().cast<ffi.Char>(),
      decoder1.toNativeUtf8().cast<ffi.Char>(),
      decoder2.toNativeUtf8().cast<ffi.Char>(),
      wave.toNativeUtf8().cast<ffi.Char>(),
      (ssl != null) ? ssl.toNativeUtf8().cast<ffi.Char>():ffi.nullptr,
      modelType,
      ailia_voice_dart.AILIA_VOICE_CLEANER_TYPE_BASIC,
    );
  }
  throwError("ailiaVoiceOpenModelFile", status);

  malloc.free(callback);

  if (debug){
    print("ailia Voice initialize success");
  }

  available = true;
}