diff --git a/native_client/README.md b/native_client/README.md index 52f65bbf..c3d15919 100644 --- a/native_client/README.md +++ b/native_client/README.md @@ -100,7 +100,7 @@ After following the above build and installation instructions, the Node.JS bindi ``` cd native_client/javascript -make package +make build make npm-pack ``` diff --git a/native_client/javascript/client.js b/native_client/javascript/client.js index 94473ce3..c831f058 100644 --- a/native_client/javascript/client.js +++ b/native_client/javascript/client.js @@ -1,5 +1,4 @@ #!/usr/bin/env node - 'use strict'; const Fs = require('fs'); @@ -69,6 +68,7 @@ function metadataToString(metadata) { for (var i = 0; i < metadata.num_items; ++i) { retval += metadata.items[i].character; } + Ds.FreeMetadata(metadata); return retval; } @@ -135,5 +135,6 @@ audioStream.on('finish', () => { } const inference_stop = process.hrtime(inference_start); console.error('Inference took %ds for %ds audio file.', totalTime(inference_stop), audioLength.toPrecision(4)); + Ds.DestroyModel(model); process.exit(0); }); diff --git a/native_client/javascript/deepspeech.i b/native_client/javascript/deepspeech.i index 130573f2..b22b863e 100644 --- a/native_client/javascript/deepspeech.i +++ b/native_client/javascript/deepspeech.i @@ -28,7 +28,6 @@ using namespace node; // make sure the string returned by SpeechToText is freed %typemap(newfree) char* "DS_FreeString($1);"; -%typemap(newfree) Metadata* "DS_FreeMetadata($1);"; %newobject DS_SpeechToText; %newobject DS_IntermediateDecode; @@ -61,19 +60,8 @@ using namespace node; %append_output(SWIG_NewPointerObj(%as_voidptr(*$1), $*1_descriptor, 0)); } -// extend ModelState with a destructor so that DestroyModel will be called -// when the JavaScript object gets finalized. %nodefaultctor ModelState; %nodefaultdtor ModelState; - -struct ModelState {}; - -%extend ModelState { - ~ModelState() { - DS_DestroyModel($self); - } -} - %nodefaultdtor Metadata; %nodefaultctor Metadata; %nodefaultctor MetadataItem; @@ -94,9 +82,6 @@ struct ModelState {}; v8::Handle result = SWIGV8_ARRAY_NEW(); return result; } - ~Metadata() { - DS_FreeMetadata($self); - } } %rename ("%(strip:[DS_])s") ""; diff --git a/native_client/javascript/index.js b/native_client/javascript/index.js index bf996385..4eb693f0 100644 --- a/native_client/javascript/index.js +++ b/native_client/javascript/index.js @@ -75,7 +75,13 @@ Model.prototype.finishStreamWithMetadata = function() { return binding.FinishStreamWithMetadata.apply(null, arguments); } +function DestroyModel(model) { + return binding.DestroyModel(model._impl); +} + module.exports = { Model: Model, - printVersions: binding.PrintVersions + printVersions: binding.PrintVersions, + DestroyModel: DestroyModel, + FreeMetadata: binding.FreeMetadata };