STT/native_client/java/jni/stt.i
2021-05-18 13:45:52 +02:00

75 lines
1.7 KiB
OpenEdge ABL

%module impl
%{
#define SWIG_FILE_WITH_INIT
#include "../../coqui-stt.h"
%}
%include "typemaps.i"
%include "enums.swg"
%javaconst(1);
%include "arrays_java.i"
// apply to STT_FeedAudioContent and STT_SpeechToText
%apply short[] { short* };
%include "cpointer.i"
%pointer_functions(ModelState*, modelstatep);
%pointer_functions(StreamingState*, streamingstatep);
%extend struct CandidateTranscript {
/**
* Retrieve one TokenMetadata element
*
* @param i Array index of the TokenMetadata to get
*
* @return The TokenMetadata requested or null
*/
const TokenMetadata& getToken(int i) {
return self->tokens[i];
}
}
%extend struct Metadata {
/**
* Retrieve one CandidateTranscript element
*
* @param i Array index of the CandidateTranscript to get
*
* @return The CandidateTranscript requested or null
*/
const CandidateTranscript& getTranscript(int i) {
return self->transcripts[i];
}
~Metadata() {
STT_FreeMetadata(self);
}
}
%nodefaultctor Metadata;
%nodefaultdtor Metadata;
%nodefaultctor CandidateTranscript;
%nodefaultdtor CandidateTranscript;
%nodefaultctor TokenMetadata;
%nodefaultdtor TokenMetadata;
%typemap(newfree) char* "STT_FreeString($1);";
%newobject STT_SpeechToText;
%newobject STT_IntermediateDecode;
%newobject STT_FinishStream;
%newobject STT_ErrorCodeToErrorMessage;
%rename ("%(strip:[STT_])s") "";
// make struct members camel case to suit Java conventions
%rename ("%(camelcase)s", %$ismember) "";
// ignore automatically generated getTokens and getTranscripts since they don't
// do anything useful and we have already provided getToken(int i) and
// getTranscript(int i) above.
%ignore "Metadata::transcripts";
%ignore "CandidateTranscript::tokens";
%include "../coqui-stt.h"