abstract sclass WitAILastRecording > 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.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); swing { S info = "wit.ai english"; if (empty(text)) katze_userSaid(info, "?"); else { temp dm_generalMap_tempPut('topInputInfo, info); dm_setAIBarTextAndFire(text); } } }); } void cleanMeUp { dispose uploader; } }