abstract sclass DynWitAILastRecording > DynPrintLogAndEnabled { transient StreamingWitAIUploader uploader; S language = "english"; start { dm_requireQuickAudioRecord(); dm_require("#1026970/ConcurrentMP3"); dm_vmBus_onMessage startedRecordingMP3(voidfunc(File f) enter { if (!enabled) ret; dm_q(r { uploader = new StreamingWitAIUploader; uploader.language = language; uploader.start(); }); }); dm_vmBus_onMessage wroteMP3Chunk(voidfunc(File f, byte[] array, int i, int j) enter { if (!enabled) ret; byte[] data = cloneSubByteArray(array, i, j); dm_q(r { uploader?.sendData(data); }); }); dm_vmBus_onMessage_q newMP3Recording(voidfunc(File f) enter { if (!enabled || uploader == null) ret; S text = uploader!; dispose uploader; flatInfoBox(text); S info = "wit.ai english"; dm_rawSpeechRecognized(module(), text, info, f); }); } void cleanMeUp { dispose uploader; } }