diff --git a/dnn/dred_rdovae.c b/dnn/dred_rdovae.c
index 3f6e738c38df1f0ca24fa5f0b3003b784d30df9d..c7d2d18204d0ae3ebc4379e9d469e70ebde91888 100644
--- a/dnn/dred_rdovae.c
+++ b/dnn/dred_rdovae.c
@@ -42,6 +42,16 @@ RDOVAEDec * DRED_rdovae_create_decoder()
     return dec;
 }
 
+void DRED_rdovae_destroy_decoder(RDOVAEDec* dec)
+{
+    free(dec);
+}
+
+void DRED_rdovae_destroy_encoder(RDOVAEEnc* enc)
+{
+    free(enc);
+}
+
 void DRED_rdovae_encode_dframe(RDOVAEEnc *enc_state, float *latents, float *initial_state, const float *input)
 {
     dred_rdovae_encode_dframe(enc_state, latents, initial_state, input);
diff --git a/dnn/include/dred_rdovae.h b/dnn/include/dred_rdovae.h
index a5b5cc0c7af4d60f7dc3489e6f6277e3b77b14cb..f9e7403dc8431f87688e206e764c30baaf8e1c55 100644
--- a/dnn/include/dred_rdovae.h
+++ b/dnn/include/dred_rdovae.h
@@ -10,8 +10,10 @@ size_t DRED_rdovae_get_enc_size(void);
 size_t DRED_rdovae_get_dec_size(void);
 
 RDOVAEDec * DRED_rdovae_create_decoder(void);
-
 RDOVAEEnc * DRED_rdovae_create_encoder(void);
+void DRED_rdovae_destroy_decoder(RDOVAEDec* h);
+void DRED_rdovae_destroy_encoder(RDOVAEEnc* h);
+
 
 void DRED_rdovae_init_encoder(RDOVAEEnc *enc_state);