testaugnitorecorder4 1.1.3 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -963,17 +963,11 @@ var Streamer = /*#__PURE__*/function () {
963
963
  }
964
964
  // this.log("Detected invalid audio track after device change");
965
965
  _this.micNeedsRecovery = true;
966
- // Always attempt recovery on device change when a prior unplug set
967
- // micNeedsRecovery — this covers the paused/stopped case so that
968
- // onMicReady fires as soon as a working mic is plugged back in.
969
966
  _context.next = 6;
970
967
  return _this.recoverAudioGraph();
971
968
  case 6:
972
969
  return _context.abrupt("return");
973
970
  case 7:
974
- // Track is still alive — check whether the current device actually
975
- // produces real audio. Virtual/loopback devices (e.g. Splashtop) are
976
- // connected but produce only silence.
977
971
  currentDeviceId = (_track$getSettings$de = (_track$getSettings = track.getSettings) === null || _track$getSettings === void 0 || (_track$getSettings = _track$getSettings.call(track)) === null || _track$getSettings === void 0 ? void 0 : _track$getSettings.deviceId) !== null && _track$getSettings$de !== void 0 ? _track$getSettings$de : track.label; // this.log(
978
972
  // `Device change detected. Probing current device: "${track.label}"`,
979
973
  // );
@@ -994,8 +988,6 @@ var Streamer = /*#__PURE__*/function () {
994
988
  case 15:
995
989
  realDeviceId = _context.sent;
996
990
  if (realDeviceId) {
997
- // this.log(`Switching to real device id: ${realDeviceId}`);
998
- // Store the preferred device so createMediaStreamSourceNode picks it up
999
991
  _this._preferredDeviceId = realDeviceId;
1000
992
  } else {
1001
993
  // this.log("No active audio input device found after device change");
@@ -1032,6 +1024,7 @@ var Streamer = /*#__PURE__*/function () {
1032
1024
  key: "StartStream",
1033
1025
  value: function () {
1034
1026
  var _StartStream = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(duration, wsUrl) {
1027
+ var _this$audioStream2, _this$audioStream2$ge;
1035
1028
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
1036
1029
  while (1) switch (_context3.prev = _context3.next) {
1037
1030
  case 0:
@@ -1055,7 +1048,7 @@ var Streamer = /*#__PURE__*/function () {
1055
1048
  }
1056
1049
  case 7:
1057
1050
  if (!this.IsMicrophoneMuted) {
1058
- _context3.next = 14;
1051
+ _context3.next = 15;
1059
1052
  break;
1060
1053
  }
1061
1054
  if (!(this.audioContext && this.audioContext.state == "running")) {
@@ -1065,6 +1058,13 @@ var Streamer = /*#__PURE__*/function () {
1065
1058
  _context3.next = 11;
1066
1059
  return this.audioContext.suspend();
1067
1060
  case 11:
1061
+ // Stop all media tracks so the browser releases the mic and removes
1062
+ // the red recording indicator when the mic is muted at start.
1063
+ (_this$audioStream2 = this.audioStream) === null || _this$audioStream2 === void 0 || (_this$audioStream2$ge = _this$audioStream2.getTracks) === null || _this$audioStream2$ge === void 0 || (_this$audioStream2$ge = _this$audioStream2$ge.call(_this$audioStream2)) === null || _this$audioStream2$ge === void 0 || _this$audioStream2$ge.forEach(function (t) {
1064
+ try {
1065
+ t.stop();
1066
+ } catch (_unused) {}
1067
+ });
1068
1068
  // Close the WebSocket that was just opened inside InitialiseMediaStream
1069
1069
  // so we don't leave a dangling connection when the mic is muted at start.
1070
1070
  this.executor.Send(CLOSE_MSG);
@@ -1073,11 +1073,11 @@ var Streamer = /*#__PURE__*/function () {
1073
1073
  Data: "Microphone is muted."
1074
1074
  }));
1075
1075
  return _context3.abrupt("return", false);
1076
- case 14:
1076
+ case 15:
1077
1077
  this.onStateChanged(true);
1078
1078
  this.isStreaming = true;
1079
1079
  return _context3.abrupt("return", true);
1080
- case 17:
1080
+ case 18:
1081
1081
  case "end":
1082
1082
  return _context3.stop();
1083
1083
  }
@@ -1182,8 +1182,6 @@ var Streamer = /*#__PURE__*/function () {
1182
1182
  Type: "ERROR",
1183
1183
  Data: "Audio track ended. Possibly the mic was unplugged."
1184
1184
  }));
1185
-
1186
- // Only recover if the stream is actively running (not stopped/paused)
1187
1185
  if (!(_this2.isStreaming && !_this2.isPaused)) {
1188
1186
  _context5.next = 5;
1189
1187
  break;
@@ -1382,12 +1380,12 @@ var Streamer = /*#__PURE__*/function () {
1382
1380
  key: "ResumeStream",
1383
1381
  value: function () {
1384
1382
  var _ResumeStream = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {
1385
- var _this$audioStream2, _this$audioStream2$ge;
1383
+ var _this$audioStream3, _this$audioStream3$ge;
1386
1384
  var track, trackEnded;
1387
1385
  return _regeneratorRuntime().wrap(function _callee10$(_context10) {
1388
1386
  while (1) switch (_context10.prev = _context10.next) {
1389
1387
  case 0:
1390
- track = (_this$audioStream2 = this.audioStream) === null || _this$audioStream2 === void 0 || (_this$audioStream2$ge = _this$audioStream2.getAudioTracks) === null || _this$audioStream2$ge === void 0 ? void 0 : _this$audioStream2$ge.call(_this$audioStream2)[0];
1388
+ track = (_this$audioStream3 = this.audioStream) === null || _this$audioStream3 === void 0 || (_this$audioStream3$ge = _this$audioStream3.getAudioTracks) === null || _this$audioStream3$ge === void 0 ? void 0 : _this$audioStream3$ge.call(_this$audioStream3)[0];
1391
1389
  trackEnded = !track || track.readyState === "ended";
1392
1390
  if (!(trackEnded || this.micNeedsRecovery)) {
1393
1391
  _context10.next = 5;
@@ -1458,8 +1456,8 @@ var Streamer = /*#__PURE__*/function () {
1458
1456
  }, {
1459
1457
  key: "IsMicrophoneMuted",
1460
1458
  get: function get() {
1461
- var _this$audioStream3, _this$audioStream3$ge;
1462
- var track = (_this$audioStream3 = this.audioStream) === null || _this$audioStream3 === void 0 || (_this$audioStream3$ge = _this$audioStream3.getAudioTracks) === null || _this$audioStream3$ge === void 0 ? void 0 : _this$audioStream3$ge.call(_this$audioStream3)[0];
1459
+ var _this$audioStream4, _this$audioStream4$ge;
1460
+ var track = (_this$audioStream4 = this.audioStream) === null || _this$audioStream4 === void 0 || (_this$audioStream4$ge = _this$audioStream4.getAudioTracks) === null || _this$audioStream4$ge === void 0 ? void 0 : _this$audioStream4$ge.call(_this$audioStream4)[0];
1463
1461
  if (!track) {
1464
1462
  return true;
1465
1463
  }
@@ -1469,7 +1467,7 @@ var Streamer = /*#__PURE__*/function () {
1469
1467
  key: "StopStream",
1470
1468
  value: function () {
1471
1469
  var _StopStream = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(shouldSendEOS) {
1472
- var _this$audioContext, _this$audioStream4, _this$audioStream4$ge, _this$audioStream5, _this$audioStream5$ge, _this$processorNode;
1470
+ var _this$audioContext, _this$audioStream5, _this$audioStream5$ge, _this$audioStream6, _this$audioStream6$ge, _this$processorNode;
1473
1471
  var _this$audioContext2, track;
1474
1472
  return _regeneratorRuntime().wrap(function _callee11$(_context11) {
1475
1473
  while (1) switch (_context11.prev = _context11.next) {
@@ -1493,16 +1491,16 @@ var Streamer = /*#__PURE__*/function () {
1493
1491
  this.deviceChangeHandler = null;
1494
1492
  }
1495
1493
  // Remove track-ended listener using the stored reference
1496
- track = (_this$audioStream4 = this.audioStream) === null || _this$audioStream4 === void 0 || (_this$audioStream4$ge = _this$audioStream4.getAudioTracks) === null || _this$audioStream4$ge === void 0 ? void 0 : _this$audioStream4$ge.call(_this$audioStream4)[0];
1494
+ track = (_this$audioStream5 = this.audioStream) === null || _this$audioStream5 === void 0 || (_this$audioStream5$ge = _this$audioStream5.getAudioTracks) === null || _this$audioStream5$ge === void 0 ? void 0 : _this$audioStream5$ge.call(_this$audioStream5)[0];
1497
1495
  if (track && this.trackEndedHandler) {
1498
1496
  track.removeEventListener("ended", this.trackEndedHandler);
1499
1497
  }
1500
1498
  this.trackEndedHandler = null;
1501
1499
  // Stop all media tracks so the browser releases the mic (removes red icon)
1502
- (_this$audioStream5 = this.audioStream) === null || _this$audioStream5 === void 0 || (_this$audioStream5$ge = _this$audioStream5.getTracks) === null || _this$audioStream5$ge === void 0 || (_this$audioStream5$ge = _this$audioStream5$ge.call(_this$audioStream5)) === null || _this$audioStream5$ge === void 0 || _this$audioStream5$ge.forEach(function (t) {
1500
+ (_this$audioStream6 = this.audioStream) === null || _this$audioStream6 === void 0 || (_this$audioStream6$ge = _this$audioStream6.getTracks) === null || _this$audioStream6$ge === void 0 || (_this$audioStream6$ge = _this$audioStream6$ge.call(_this$audioStream6)) === null || _this$audioStream6$ge === void 0 || _this$audioStream6$ge.forEach(function (t) {
1503
1501
  try {
1504
1502
  t.stop();
1505
- } catch (_unused) {}
1503
+ } catch (_unused2) {}
1506
1504
  });
1507
1505
  // message sent to worklet-thread
1508
1506
  (_this$processorNode = this.processorNode) === null || _this$processorNode === void 0 || (_this$processorNode = _this$processorNode.port) === null || _this$processorNode === void 0 || _this$processorNode.postMessage(STOP_MSG);
@@ -1521,7 +1519,7 @@ var Streamer = /*#__PURE__*/function () {
1521
1519
  key: "recoverAudioGraph",
1522
1520
  value: function () {
1523
1521
  var _recoverAudioGraph = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {
1524
- var _this$audioStream6, _this$source, _this$processorNode2;
1522
+ var _this$audioStream7, _this$source, _this$processorNode2;
1525
1523
  return _regeneratorRuntime().wrap(function _callee12$(_context12) {
1526
1524
  while (1) switch (_context12.prev = _context12.next) {
1527
1525
  case 0:
@@ -1536,21 +1534,21 @@ var Streamer = /*#__PURE__*/function () {
1536
1534
  // this.log("Recovering audio graph...");
1537
1535
 
1538
1536
  // stop old track
1539
- (_this$audioStream6 = this.audioStream) === null || _this$audioStream6 === void 0 || (_this$audioStream6 = _this$audioStream6.getTracks()) === null || _this$audioStream6 === void 0 || _this$audioStream6.forEach(function (t) {
1537
+ (_this$audioStream7 = this.audioStream) === null || _this$audioStream7 === void 0 || (_this$audioStream7 = _this$audioStream7.getTracks()) === null || _this$audioStream7 === void 0 || _this$audioStream7.forEach(function (t) {
1540
1538
  try {
1541
1539
  t.stop();
1542
- } catch (_unused2) {}
1540
+ } catch (_unused3) {}
1543
1541
  });
1544
1542
 
1545
1543
  // disconnect source
1546
1544
  try {
1547
1545
  (_this$source = this.source) === null || _this$source === void 0 || _this$source.disconnect();
1548
- } catch (_unused3) {}
1546
+ } catch (_unused4) {}
1549
1547
 
1550
1548
  // disconnect processor
1551
1549
  try {
1552
1550
  (_this$processorNode2 = this.processorNode) === null || _this$processorNode2 === void 0 || _this$processorNode2.disconnect();
1553
- } catch (_unused4) {}
1551
+ } catch (_unused5) {}
1554
1552
 
1555
1553
  // recreate media stream ONLY
1556
1554
  _context12.next = 9;
@@ -1641,14 +1639,14 @@ var Streamer = /*#__PURE__*/function () {
1641
1639
  }, {
1642
1640
  key: "cleanup",
1643
1641
  value: function cleanup() {
1644
- var _this$audioStream7;
1642
+ var _this$audioStream8;
1645
1643
  // Uncomment to stop recorded audio
1646
1644
  // this.source.stop();
1647
1645
  // Uncomment to stop microphone audio
1648
- (_this$audioStream7 = this.audioStream) === null || _this$audioStream7 === void 0 || (_this$audioStream7 = _this$audioStream7.getTracks()) === null || _this$audioStream7 === void 0 || _this$audioStream7.forEach(function (track) {
1646
+ (_this$audioStream8 = this.audioStream) === null || _this$audioStream8 === void 0 || (_this$audioStream8 = _this$audioStream8.getTracks()) === null || _this$audioStream8 === void 0 || _this$audioStream8.forEach(function (track) {
1649
1647
  try {
1650
1648
  track.stop();
1651
- } catch (_unused5) {}
1649
+ } catch (_unused6) {}
1652
1650
  });
1653
1651
  this.source.disconnect();
1654
1652
  this.processorNode.disconnect();
@@ -1772,7 +1770,7 @@ function _isDeviceProducingAudio() {
1772
1770
  while (1) switch (_context13.prev = _context13.next) {
1773
1771
  case 0:
1774
1772
  durationMs = _args13.length > 1 && _args13[1] !== undefined ? _args13[1] : 350;
1775
- silenceThreshold = _args13.length > 2 && _args13[2] !== undefined ? _args13[2] : 0.001;
1773
+ silenceThreshold = _args13.length > 2 && _args13[2] !== undefined ? _args13[2] : 0.01;
1776
1774
  stream = null;
1777
1775
  audioCtx = null;
1778
1776
  _context13.prev = 4;
@@ -1 +1 @@
1
- {"version":3,"file":"augnitoRecorder.js","sources":["../lib/constants.js","../lib/executor.js","../lib/worklet.js","../lib/streamer.js","../lib/augnitoRecorder.js"],"sourcesContent":["export const LOOP_AUDIO = true;\nexport const WORKLET_PROCESSOR = \"worklet-processor\";\nexport const SAMPLE_RATE = 16000;\nconst FRAMES_PER_BLOCK = 128;\n// buffer_size = 1 sec audio = 125 blocks = 16000 frames = 16000 mono samples\nexport const BUFFER_SIZE = 125 * FRAMES_PER_BLOCK;\nexport const SILENCE_IN_SECS = 2;\n\nexport const EOS_MSG = \"EOS\";\nexport const DONE_MSG = \"DONE\";\nexport const PAUSE_MSG = \"PAUSE\";\nexport const PAUSE_SOCKET_MSG = \"PAUSESOCKET\";\nexport const RESUME_SOCKET_MSG = \"RESUMESOCKET\";\nexport const INTENT_START_STREAM = \"INTENT_START_STREAM\";\nexport const STOP_MSG = \"STOP\";\nexport const CLOSE_MSG = \"CLOSE\";\nexport const CHANNEL_COUNT = 1;\nexport const BITS_PER_SAMPLE = 16;\nexport const NOISE_SUPPRESS_ENABLED = false;\n\nexport const KEEP_ALIVE_TIMEOUT = 120000;\nexport const IDLE_THREAD_INTERVAL = 10000;\nexport const CONSUME_INTERVAL = 100;\nexport const CONNECT_RETRY_TIMEOUT = 10000;\nexport const HEALTHCHECK_INTERVAL = 1000;\nexport const SOCKET_TIMEOUT = 10000;\nexport const MAX_AUDIO_SAMPLES = 16000 * 60 * 30;\n","import {\n KEEP_ALIVE_TIMEOUT,\n IDLE_THREAD_INTERVAL,\n EOS_MSG,\n CONNECT_RETRY_TIMEOUT,\n SOCKET_TIMEOUT,\n HEALTHCHECK_INTERVAL,\n CONSUME_INTERVAL,\n DONE_MSG,\n CLOSE_MSG,\n PAUSE_SOCKET_MSG,\n RESUME_SOCKET_MSG,\n INTENT_START_STREAM,\n} from \"./constants.js\";\n\nexport class Executor {\n constructor(\n enableLogs,\n eosMessage,\n socketTimeoutInterval,\n shouldSendAudioDataSequence,\n onFinalResult,\n onPartialResult,\n onError,\n onSessionEvent,\n onOtherResults,\n onSpeechResponse,\n onJobStatus,\n bufferSizeInterval,\n switchToRegularSpeechProfile,\n ) {\n this.worker;\n this.onFinalResultCallback = onFinalResult;\n this.onErrorCallback = onError;\n this.onPartialResultCallback = onPartialResult;\n this.onSessionEventCallback = onSessionEvent;\n this.onOtherResultsCallback = onOtherResults;\n this.onSpeechResponseCallback = onSpeechResponse;\n this.onJobStatusCallback = onJobStatus;\n this.packetSeqId = 0;\n this.audioDuration = 0;\n this.shouldSendAudioDataSequence = shouldSendAudioDataSequence;\n this.heavyOp;\n this.idleLoop;\n this.lastSent;\n this.enableLogs = enableLogs;\n this.eosMessage = eosMessage ? eosMessage : EOS_MSG;\n this.socketTimeoutInterval = socketTimeoutInterval\n ? socketTimeoutInterval\n : SOCKET_TIMEOUT;\n this.bufferSizeInterval = bufferSizeInterval;\n this.switchToRegularSpeech = switchToRegularSpeechProfile;\n }\n\n // main-thread\n Start(duration, wsUrl, shouldPauseSocketInitially) {\n this.audioDuration = duration;\n const workerScript = `\n (() => {\n (${WorkerBlob.toString()})(${JSON.stringify(DONE_MSG)}, ${JSON.stringify(\n this.eosMessage,\n )}, ${JSON.stringify(CLOSE_MSG)}, ${JSON.stringify(\n CONNECT_RETRY_TIMEOUT,\n )}, ${JSON.stringify(this.socketTimeoutInterval)}, ${JSON.stringify(\n KEEP_ALIVE_TIMEOUT,\n )}, ${JSON.stringify(HEALTHCHECK_INTERVAL)}, ${JSON.stringify(\n CONSUME_INTERVAL,\n )}, ${JSON.stringify(IDLE_THREAD_INTERVAL)}, ${JSON.stringify(\n wsUrl,\n )}, ${JSON.stringify(this.enableLogs)}, ${JSON.stringify(\n this.shouldSendAudioDataSequence,\n )},${JSON.stringify(PAUSE_SOCKET_MSG)}, ${JSON.stringify(\n RESUME_SOCKET_MSG,\n )}, ${JSON.stringify(INTENT_START_STREAM)}, ${JSON.stringify(\n this.switchToRegularSpeech,\n )}, ${JSON.stringify(shouldPauseSocketInitially)}, ${JSON.stringify(\n this.heavyOp,\n )});\n })();\n`;\n this.worker = new Worker(\n URL.createObjectURL(\n new Blob([workerScript], {\n type: \"application/javascript\",\n }),\n ),\n );\n // message received from web-worker\n this.worker.onmessage = (event) => {\n if (this.enableLogs) {\n console.log(\"Augnito [MAIN]: \" + JSON.stringify(event.data));\n }\n var eventData = event.data;\n // const asrText = document.getElementById(\"asrText\");\n if (eventData.type == \"final\") this.onFinalResultCallback(eventData.data);\n else if (eventData.type == \"partial\")\n this.onPartialResultCallback(eventData.data);\n else if (eventData.type == \"meta\")\n this.onSessionEventCallback(eventData.data);\n else if (eventData.type == \"error\") this.onErrorCallback(eventData.data);\n else if (eventData.type == \"other\")\n this.onOtherResultsCallback(eventData.data);\n else if (eventData.type == \"jobstatus\") {\n this.onJobStatusCallback(eventData.data.status);\n } else if (eventData.type == \"speechResponse\")\n this.onSpeechResponseCallback(eventData.data);\n };\n }\n\n createAudioPacketHeader(isLastPacket) {\n if (this.audioDuration > 0) {\n this.packetSeqId =\n Math.ceil(this.audioDuration / this.bufferSizeInterval) + 2;\n this.audioDuration = 0;\n }\n this.packetSeqId++;\n const headerSize = 16;\n\n // Create a buffer of the required size\n const buffer = new ArrayBuffer(headerSize);\n\n const view = new DataView(buffer);\n\n // Write '@BSR' as string\n for (let i = 0; i < 4; i++) {\n view.setUint8(i, \"@BSR\".charCodeAt(i));\n }\n\n // Write packet ID (int64)\n view.setBigInt64(4, BigInt(this.packetSeqId), false); // false for big endian\n\n // Write boolean value\n view.setUint8(12, isLastPacket ? 1 : 0);\n return buffer;\n }\n\n appendAudioData(arrayBuffer, audioDataBytes) {\n const totalLength = arrayBuffer.byteLength + audioDataBytes.byteLength;\n const combinedBuffer = new ArrayBuffer(totalLength);\n const combinedArray = new Uint8Array(combinedBuffer);\n combinedArray.set(new Uint8Array(arrayBuffer), 0);\n combinedArray.set(new Uint8Array(audioDataBytes), arrayBuffer.byteLength);\n return combinedBuffer;\n }\n\n // main-thread\n Send(data) {\n this.lastSent = +new Date();\n if (data === CLOSE_MSG) {\n this.worker?.postMessage(CLOSE_MSG);\n } else if (data === DONE_MSG) {\n // message sent to web-worker\n if (this.shouldSendAudioDataSequence) {\n var binaryHeader = this.createAudioPacketHeader(true);\n this.worker?.postMessage(binaryHeader);\n } else {\n this.worker?.postMessage(DONE_MSG);\n }\n } else if (data == PAUSE_SOCKET_MSG) {\n this.worker?.postMessage(PAUSE_SOCKET_MSG);\n } else if (data == RESUME_SOCKET_MSG) {\n this.worker?.postMessage(RESUME_SOCKET_MSG);\n } else if (data == INTENT_START_STREAM) {\n this.worker?.postMessage(INTENT_START_STREAM);\n } else if (data === this.eosMessage) {\n if (!this.shouldSendAudioDataSequence) this.worker?.postMessage(data);\n } else {\n var audioData = [];\n if (this.shouldSendAudioDataSequence) {\n var binaryHeader = this.createAudioPacketHeader(false);\n audioData = this.appendAudioData(binaryHeader, data);\n } else {\n audioData = data;\n }\n if (audioData !== undefined) {\n // message sent to web-worker - transferrable\n this.worker?.postMessage(audioData, [audioData]);\n }\n }\n }\n\n set HeavyOp(heavyOp) {\n this.heavyOp = heavyOp;\n }\n}\n\nfunction WorkerBlob(\n doneMessage,\n eosMessage,\n closeMessage,\n connectionRetryTimeout,\n socketTimeoutInterval,\n keepAliveTimeout,\n healthcheckInterval,\n consumeInterval,\n idleThreadInterval,\n wsUrl,\n enableLogs,\n shouldSendAudioDataSequence,\n pauseSocketMessage,\n resumeSocketMessage,\n startListeningClickedMessage,\n switchToRegularSpeechProfile,\n shouldPauseSocketInitially,\n heavyOp,\n) {\n let lastConnect;\n var lastDataSent;\n var lastDataReceived;\n let lastPingReceived;\n let queue = [];\n let pauseStateAudio;\n let pendingStartStreamBuffer = [];\n let pendingStartStreamCapture = false;\n let sentPacketsQueue = [];\n let ws;\n let isDone = false;\n let consumer;\n let healthCheck;\n let idleLoop;\n let retrySentPacket = false;\n let packetId = 0;\n let shouldNotReconnect = false;\n let JobID = \"\";\n let shouldPauseSocket = shouldPauseSocketInitially;\n\n function initConnect() {\n lastConnect = +new Date();\n if (JobID != \"\") {\n ws = new WebSocket(wsUrl + \"&jobid=\" + JobID);\n } else {\n ws = new WebSocket(wsUrl);\n }\n ws.onopen = (event) => {\n if (enableLogs) {\n console.log(\n \"Augnito: WebSocket connection established - \" +\n JSON.stringify(event),\n );\n }\n if (sentPacketsQueue.length > 0) {\n retrySentPacket = true;\n }\n };\n ws.onmessage = (message) => {\n if (enableLogs) {\n console.log(\n \"Augnito: Message from server - \" + JSON.stringify(message.data),\n );\n }\n lastDataReceived = +new Date();\n operate(message);\n };\n ws.onerror = (error) => {\n console.error(\"WebSocket error: \", error);\n self.postMessage({\n type: \"error\",\n data: JSON.stringify(error),\n });\n // TODO may want to reinitialise\n };\n ws.onclose = (event) => {\n if (enableLogs) {\n console.log(\n \"Augnito: WebSocket connection closed - \" + JSON.stringify(event),\n );\n }\n cleanup();\n };\n lastDataSent = +new Date();\n lastDataReceived = lastDataSent;\n lastPingReceived = +new Date();\n }\n\n // TODO lose the interval and try reading from queue on-add and on-open.\n\n function send(data) {\n if (ws && ws.readyState === WebSocket.OPEN) {\n ws.send(data);\n // This needs to be done to keep the \"lastDataReceived\" value closer to the\n // first \"lastDataSent\" value after ASR is received from the server, so as to\n // not invoke the healthcheck loop and force close the connection.\n var currentTime = +new Date();\n if (lastDataSent <= lastDataReceived) {\n lastDataReceived = currentTime - 1;\n }\n lastDataSent = currentTime;\n return true;\n } else {\n if (data === eosMessage) {\n if (enableLogs) {\n console.warn(\n `Gulping ${eosMessage} as socket seems already closed...`,\n );\n }\n cleanup();\n return true;\n }\n if (\n +new Date() - lastConnect > connectionRetryTimeout &&\n !shouldNotReconnect\n ) {\n initConnect();\n }\n return false;\n }\n }\n\n function add(data) {\n queue.push(data);\n }\n\n function operate(message) {\n try {\n if (message.data === \"PING\") {\n lastPingReceived = +new Date();\n self.postMessage({ type: \"ping\", data: message.data });\n } else {\n const data = JSON.parse(message.data);\n if (enableLogs) {\n console.log(\"Augnito [WORKER]: \" + JSON.stringify(data));\n }\n if (data.Type == \"meta\") {\n if (data.JobID) {\n JobID = data.JobID;\n console.log(\"Augnito JobID:\", JobID);\n }\n self.postMessage({ type: \"meta\", data: message.data });\n var metaResponse = JSON.parse(message.data);\n if (\n metaResponse.Event &&\n metaResponse.Event[\"Type\"] === \"INVALID_AUTH_CREDENTIALS\"\n ) {\n shouldNotReconnect = true;\n } else {\n shouldNotReconnect = false;\n }\n } else if (data.Result && data.Result.Final) {\n // should not be called with \"this\", check worker construction for more info.\n var outputText = JSON.stringify(data.Result);\n\n if (heavyOp) {\n outputText = heavyOp(JSON.stringify(data.Result));\n console.log(outputText);\n }\n self.postMessage({ type: \"final\", data: outputText });\n\n // message sent to main-thread\n } else if (data.Result && !data.Result.Final) {\n self.postMessage({\n type: \"partial\",\n data: data.Result.Transcript,\n });\n } else if (data.Type == \"ACK\") {\n //reset queue with only those packets whose seq num is greater than ACK index\n sentPacketsQueue = sentPacketsQueue.filter(\n (x) => x.packetNumber > data.Index,\n );\n self.postMessage({ type: \"other\", data: message.data });\n } else if (data.Type == \"ERROR\") {\n if (data.Data == \"Timeout exceeded\") {\n isDone = true;\n cleanup();\n }\n self.postMessage({\n type: \"error\",\n data: message.data,\n });\n } else if (data.Type == \"STATUS\") {\n self.postMessage({\n type: \"jobstatus\",\n data: {\n status: message.data,\n },\n });\n } else {\n self.postMessage({\n type: \"speechResponse\",\n data: message.data,\n });\n }\n }\n } catch (e) {\n self.postMessage({\n type: \"error\",\n data: \"invalid response\",\n });\n }\n }\n\n function cleanup() {\n if (isDone) {\n clearInterval(consumer);\n clearInterval(healthCheck);\n clearInterval(idleLoop);\n queue = [];\n sentPacketsQueue = [];\n self.close();\n }\n }\n\n initConnect();\n consumer = setInterval(() => {\n if (retrySentPacket) {\n for (var i = 0; i < sentPacketsQueue.length; i++) {\n const retryPacket = sentPacketsQueue[i].packetData;\n const res = send(retryPacket);\n if (!res) break;\n }\n retrySentPacket = false;\n } else {\n while (queue.length > 0) {\n const data = queue.shift();\n const isSent = send(data);\n if (!isSent) {\n queue.unshift(data);\n break;\n }\n if (shouldSendAudioDataSequence) {\n if (!(data instanceof ArrayBuffer)) {\n continue;\n }\n const view = new DataView(data);\n packetId = Number(view.getBigInt64(4));\n var sentPacket = { packetNumber: packetId, packetData: data };\n sentPacketsQueue.push(sentPacket);\n }\n }\n }\n }, consumeInterval);\n\n healthCheck = setInterval(() => {\n if (ws && ws.readyState === WebSocket.OPEN) {\n const currentTime = +new Date();\n const isSocketClosingTime = switchToRegularSpeechProfile\n ? lastDataSent > lastDataReceived &&\n currentTime - lastDataReceived > socketTimeoutInterval\n : currentTime - lastPingReceived > socketTimeoutInterval;\n if (isSocketClosingTime) {\n if (enableLogs) {\n console.error(\n `No data received since more than ${\n socketTimeoutInterval / 1000\n } secs, closing time...`,\n );\n }\n ws.close();\n }\n }\n }, healthcheckInterval);\n\n idleLoop = setInterval(() => {\n if (ws && ws.readyState === WebSocket.OPEN) {\n const currentTime = +new Date();\n if (lastDataSent && currentTime - lastDataSent > keepAliveTimeout) {\n if (enableLogs) {\n console.warn(\n `No data sent since more than ${\n keepAliveTimeout / 1000\n } secs, closing time...`,\n );\n }\n ws.close();\n }\n }\n }, idleThreadInterval);\n\n self.onmessage = (event) => {\n if (event.data === closeMessage) {\n JobID = \"\";\n isDone = true;\n shouldNotReconnect = true;\n ws.close();\n } else if (event.data === doneMessage) {\n add(eosMessage);\n JobID = \"\";\n if (enableLogs) {\n console.log(\"Augnito: Worker received DONE, time to terminate...\");\n }\n isDone = true;\n } else if (event.data === pauseSocketMessage) {\n shouldPauseSocket = true;\n } else if (event.data === startListeningClickedMessage) {\n pendingStartStreamCapture = true;\n } else if (event.data === resumeSocketMessage) {\n if (pauseStateAudio instanceof ArrayBuffer) {\n add(pauseStateAudio);\n }\n if (pendingStartStreamBuffer.length > 0) {\n for (let i = 0; i < pendingStartStreamBuffer.length; i++) {\n add(pendingStartStreamBuffer[i]);\n }\n }\n pendingStartStreamBuffer = [];\n pendingStartStreamCapture = false;\n shouldPauseSocket = false;\n pauseStateAudio = [];\n } else {\n if (shouldPauseSocket && !pendingStartStreamCapture) {\n pauseStateAudio = event.data;\n } else if (shouldPauseSocket && pendingStartStreamCapture) {\n pendingStartStreamBuffer.push(event.data);\n } else add(event.data);\n }\n };\n}\n","// worklet-thread\nexport const worklet = `class MyAudioWorkletProcessor extends AudioWorkletProcessor {\n constructor() {\n super();\n this.accumulator = [];\n this.pauseSocketStreaming = false;\n this.sampleVal = 0;\n this.sampleSize = 0;\n this.intensityFrameCount = 0;\n this.reset();\n this.isProcessing = true;\n // message received from main-thread\n this.port.onmessage = (e) => {\n console.log(\"Augnito: Worklet received event - \", e.data);\n if (this.sampleSize > 0) {\n this.accumulator.push(this.sampleVal / this.sampleSize);\n }\n \n if (e.data == \"PAUSE\" || e.data == \"STOP\" || e.data == \"PAUSESOCKET\") {\n // append silence to get last word ASR.\n const silenceSize = 16000 * 2;\n for (let i = 0; i < silenceSize; i++) {\n this.accumulator.push(0);\n }\n }\n this.send();\n this.reset();\n if (e.data == \"STOP\") {\n // message sent to main-thread\n this.port.postMessage({type:\"DONE\", value:\"DONE\"});\n this.isProcessing = false;\n \n }\n if(e.data == \"PAUSESOCKET\"){\n this.pauseSocketStreaming = true;\n this.port.postMessage(\"PAUSESOCKET\");\n } else if(e.data == \"RESUMESOCKET\"){\n this.pauseSocketStreaming = false;\n } \n };\n }\n\n static get parameterDescriptors() {\n return [\n {\n name: \"sampleRate\",\n defaultValue: 16000,\n minValue: 16000,\n maxValue: 6 * 16000,\n },\n {\n name: \"bufferSizeInterval\",\n defaultValue: 1,\n minValue: 1,\n maxValue: 100,\n },\n {\n name: \"pausedBufferInterval\",\n defaultValue: 1,\n minValue: 0,\n maxValue: 100,\n },\n {\n name: \"shouldReadIntensity\",\n defaultValue: false,\n minValue: 0,\n maxValue: 1,\n },\n ];\n }\n\n // 128 frames\n process(inputList, outputList, params) {\n const input = inputList[0];\n if (input && input.length && input[0].length) {\n const channelData = input[0];\n const output = outputList[0];\n const inputSampleRate = params.sampleRate[0];\n const sampleRatio = inputSampleRate / 16000\n const bufferSizeInterval = params[\"bufferSizeInterval\"][0];\n const pausedBufferInterval = params[\"pausedBufferInterval\"][0];\n const shouldReadIntensity = params[\"shouldReadIntensity\"][0];\n\n let sumSquares = 0; // For intensity\n let sampleCount = 0;\n\n // console.log(\"BufferSizeInterval\", bufferSizeInterval);\n // Jackpot\n input[0].forEach((float32Element, index) => {\n const int16Element = Math.min(1, Math.max(-1, float32Element)) * 0x7fff;\n this.sampleVal += int16Element;\n this.sampleSize += 1;\n // Accumulate for intensity (RMS)\n sumSquares += float32Element * float32Element;\n sampleCount++;\n \n\n if (this.sampleSize >= sampleRatio) {\n const fraction = this.sampleSize - sampleRatio \n this.sampleVal -= fraction * int16Element;\n\n this.accumulator.push(this.sampleVal / sampleRatio);\n \n this.sampleVal = fraction * int16Element;\n this.sampleSize = fraction;\n }\n\n // Comment this when streaming microphone audio\n // output[0][index] = float32Element;\n });\n if(this.pauseSocketStreaming){\n if (this.accumulator.length >= 125 * 128 * pausedBufferInterval) {\n this.send();\n }\n } else{\n if (this.accumulator.length >= 125 * 128 * bufferSizeInterval) {\n this.send();\n }\n }\n if(shouldReadIntensity){\n \n // Throttled intensity post\n this.intensityFrameCount = (this.intensityFrameCount || 0) + 1;\n if (this.intensityFrameCount >= 15 && sampleCount > 0) {\n const rms = Math.sqrt(sumSquares / sampleCount);\n const normalized = Math.min(1, rms); // [0–1] scale\n this.port.postMessage({ type: 'intensity', value: normalized });\n this.intensityFrameCount = 0;\n }\n }\n }\n return this.isProcessing;\n }\n\n send() {\n if (this.accumulator.length == 0) return;\n const audioData = new Int16Array(this.accumulator);\n // message sent to main-thread - transferrable\n this.port.postMessage({ type: 'audioData', value: audioData.buffer }, [audioData.buffer]);\n this.accumulator = [];\n }\n\n reset() {\n this.sampleVal = 0;\n this.sampleSize = 0;\n }\n}\n\nregisterProcessor(\"worklet-processor\", MyAudioWorkletProcessor);`;\n","import {\n LOOP_AUDIO,\n PAUSE_MSG,\n STOP_MSG,\n DONE_MSG,\n WORKLET_PROCESSOR,\n CHANNEL_COUNT,\n BITS_PER_SAMPLE,\n NOISE_SUPPRESS_ENABLED,\n SAMPLE_RATE,\n CLOSE_MSG,\n PAUSE_SOCKET_MSG,\n RESUME_SOCKET_MSG,\n MAX_AUDIO_SAMPLES,\n} from \"./constants.js\";\nimport { Executor } from \"./executor.js\";\nimport { worklet } from \"./worklet.js\";\n\n// main-thread\nexport class Streamer {\n constructor(\n socketUrl,\n enableLogs,\n isDebug,\n bufferSizeInterval,\n pausedBufferInterval,\n eosMessage,\n socketTimeoutInterval,\n shouldSendAudioDataSequence,\n reconnectAudioDuration,\n shouldPreIntialiseRecorder,\n shouldReadIntensity,\n switchToRegularSpeechProfile,\n echoCancellation,\n noiseSuppression,\n autoGainControl,\n heavyOp,\n onFinalResult,\n onPartialResult,\n onError,\n onStateChanged,\n onSessionEvent,\n onOtherResults,\n onSpeechResponse,\n onIntensity,\n onJobStatus,\n onMicReady,\n ) {\n this.audioContext;\n this.audioStream;\n this.executor = new Executor(\n enableLogs,\n eosMessage,\n socketTimeoutInterval,\n shouldSendAudioDataSequence,\n onFinalResult,\n onPartialResult,\n onError,\n onSessionEvent,\n onOtherResults,\n onSpeechResponse,\n onJobStatus,\n bufferSizeInterval,\n switchToRegularSpeechProfile,\n );\n this.executor.HeavyOp = heavyOp;\n\n this.source;\n this.processorNode;\n this.isPaused = false;\n this.isStreaming = false;\n // Uncomment to save recording\n this.audioData = [];\n this.isDebug = isDebug;\n this.enableLogs = enableLogs;\n this.onStateChanged = onStateChanged;\n this.onIntensity = onIntensity;\n this.onError = onError;\n this.bufferSizeInterval = bufferSizeInterval;\n this.pausedBufferInterval = pausedBufferInterval ?? 1;\n this.shouldReadIntensity = shouldReadIntensity;\n this.closeSocketWithoutEOS = false;\n this.shouldPreIntialiseRecorder = shouldPreIntialiseRecorder ?? false;\n this.echoCancellation = echoCancellation;\n this.noiseSuppression = noiseSuppression;\n this.autoGainControl = autoGainControl;\n this.micNeedsRecovery = false;\n this.trackEndedHandler = null;\n this.isRecovering = false;\n this.currentWsUrl = \"\";\n this.currentDuration = 0;\n this.deviceChangeHandler = null;\n this.onMicReady = onMicReady;\n if (this.shouldPreIntialiseRecorder) {\n this.InitialiseMediaStream(reconnectAudioDuration, socketUrl);\n }\n }\n\n async InitialiseMediaStream(duration, wsUrl) {\n this.currentDuration = duration;\n this.currentWsUrl = wsUrl;\n await this.createMediaStreamSourceNode();\n if (!this.source) {\n console.error(\"Error: unable to create source node\");\n return false;\n }\n await this.createProcessorNode();\n if (!this.processorNode) {\n console.error(\"Error: unable to create processor node\");\n return false;\n }\n this.source\n .connect(this.processorNode)\n .connect(this.audioContext.destination);\n this.log(\"AudioContext Sample Rate: \" + this.audioContext.sampleRate);\n\n if (wsUrl !== \"\") {\n this.executor.Start(duration, wsUrl, this.shouldPreIntialiseRecorder);\n }\n // if (this.audioContext && this.audioContext.state == \"running\") {\n // await this.audioContext.suspend();\n // }\n if (!this.deviceChangeHandler) {\n this.deviceChangeHandler = async () => {\n const track = this.audioStream?.getAudioTracks?.()[0];\n const trackInvalid = !track || track.readyState === \"ended\";\n\n if (trackInvalid) {\n // this.log(\"Detected invalid audio track after device change\");\n this.micNeedsRecovery = true;\n // Always attempt recovery on device change when a prior unplug set\n // micNeedsRecovery — this covers the paused/stopped case so that\n // onMicReady fires as soon as a working mic is plugged back in.\n await this.recoverAudioGraph();\n return;\n }\n\n // Track is still alive — check whether the current device actually\n // produces real audio. Virtual/loopback devices (e.g. Splashtop) are\n // connected but produce only silence.\n const currentDeviceId = track.getSettings?.()?.deviceId ?? track.label;\n // this.log(\n // `Device change detected. Probing current device: \"${track.label}\"`,\n // );\n\n const currentDeviceActive =\n await isDeviceProducingAudio(currentDeviceId);\n\n if (!currentDeviceActive) {\n // this.log(\n // `Current device \"${track.label}\" appears silent/virtual. Searching for a real input device...`,\n // );\n this.micNeedsRecovery = true;\n\n const realDeviceId = await findFirstActiveAudioDevice(\n currentDeviceId,\n this.enableLogs,\n );\n\n if (realDeviceId) {\n // this.log(`Switching to real device id: ${realDeviceId}`);\n // Store the preferred device so createMediaStreamSourceNode picks it up\n this._preferredDeviceId = realDeviceId;\n } else {\n // this.log(\"No active audio input device found after device change\");\n this._preferredDeviceId = null;\n }\n\n // Recover regardless of streaming state so onMicReady fires even\n // when the recorder is paused/stopped after an unplug error.\n await this.recoverAudioGraph();\n } else {\n // this.log(\n // `Current device \"${track.label}\" is producing audio — no switch needed`,\n // );\n }\n };\n\n navigator.mediaDevices.addEventListener(\n \"devicechange\",\n this.deviceChangeHandler,\n );\n }\n }\n\n async StartStream(duration, wsUrl) {\n this.log(\"New stream started...\");\n\n // Uncomment to stream recorded audio\n // await this.createBufferedSourceNode();\n // Uncomment to stream microphone audio\n if (!this.shouldPreIntialiseRecorder || !this.source) {\n await this.InitialiseMediaStream(duration, wsUrl, false);\n } else if (this.shouldPreIntialiseRecorder) {\n this.executor.Send(RESUME_SOCKET_MSG);\n }\n\n if (this.IsMicrophoneMuted) {\n if (this.audioContext && this.audioContext.state == \"running\") {\n await this.audioContext.suspend();\n }\n // Close the WebSocket that was just opened inside InitialiseMediaStream\n // so we don't leave a dangling connection when the mic is muted at start.\n this.executor.Send(CLOSE_MSG);\n this.onError(\n JSON.stringify({\n Type: \"ERROR\",\n Data: \"Microphone is muted.\",\n }),\n );\n return false;\n }\n\n this.onStateChanged(true);\n\n this.isStreaming = true;\n return true;\n }\n\n async createBufferedSourceNode() {\n const audioBuffer = await this.loadAudio();\n if (!audioBuffer) {\n console.error(\"Error: unable to create audio buffer\");\n return;\n }\n this.source = this.audioContext.createBufferSource();\n this.source.buffer = audioBuffer;\n this.source.loop = LOOP_AUDIO;\n this.source.start();\n }\n\n async createMediaStreamSourceNode() {\n try {\n const audioConstraints = {\n channelCount: CHANNEL_COUNT,\n noiseSuppression:\n this.noiseSuppression !== undefined\n ? this.noiseSuppression\n : NOISE_SUPPRESS_ENABLED,\n // sampleRate: SAMPLE_RATE,\n // sampleSize: BITS_PER_SAMPLE,\n };\n if (this.echoCancellation !== undefined) {\n audioConstraints.echoCancellation = this.echoCancellation;\n audioConstraints.googEchoCancellation = this.echoCancellation;\n }\n if (this.noiseSuppression !== undefined) {\n audioConstraints.googNoiseSuppression = this.noiseSuppression;\n }\n if (this.autoGainControl !== undefined) {\n audioConstraints.autoGainControl = this.autoGainControl;\n audioConstraints.googAutoGainControl = this.autoGainControl;\n }\n // If a specific real device was identified (e.g. after filtering out a\n // virtual/silent device on devicechange), target it explicitly.\n if (this._preferredDeviceId) {\n audioConstraints.deviceId = { exact: this._preferredDeviceId };\n }\n this.audioStream = await navigator.mediaDevices.getUserMedia({\n audio: audioConstraints,\n });\n if (!this.audioContext || this.audioContext.state === \"closed\") {\n this.audioContext = new AudioContext();\n }\n this.source = this.audioContext.createMediaStreamSource(this.audioStream);\n const track = this.audioStream.getAudioTracks()[0];\n\n // Clear any previously registered handler before attaching a new one\n // (the old track is already gone after recovery, so just null the ref)\n if (this.trackEndedHandler) {\n this.trackEndedHandler = null;\n }\n\n this.trackEndedHandler = async () => {\n // this.log(\"Microphone disconnected\");\n\n this.micNeedsRecovery = true;\n\n this.onError(\n JSON.stringify({\n Type: \"ERROR\",\n Data: \"Audio track ended. Possibly the mic was unplugged.\",\n }),\n );\n\n // Only recover if the stream is actively running (not stopped/paused)\n if (this.isStreaming && !this.isPaused) {\n await this.recoverAudioGraph();\n }\n };\n\n track.addEventListener(\"ended\", this.trackEndedHandler);\n } catch (e) {\n var errMessage = \"\";\n if (e.name == \"NotAllowedError\") {\n errMessage = \"Mic permission denied\";\n } else if (e.name === \"NotFoundError\") {\n errMessage = \"No suitable media device found\";\n } else if (e.name === \"NotReadableError\") {\n errMessage = \"Microphone is being used by another application\";\n }\n this.onError(\n JSON.stringify({\n Type: \"ERROR\",\n Data: errMessage,\n }),\n );\n }\n }\n\n async loadAudio() {\n try {\n const response = await fetch(\"./radiology_speed_test.wav\");\n const arrayBuffer = await response.arrayBuffer();\n const audioBuffer = await this.audioContext.decodeAudioData(arrayBuffer);\n return audioBuffer;\n } catch (err) {\n console.error(`Unable to fetch the audio file. Error: ${err.message}`);\n return null;\n }\n }\n\n async createProcessorNode() {\n try {\n await this.audioContext.audioWorklet.addModule(\n `data:application/javascript,${encodeURIComponent(worklet)}`,\n );\n this.processorNode = new AudioWorkletNode(\n this.audioContext,\n WORKLET_PROCESSOR,\n );\n\n const sampleRateParam = this.processorNode.parameters.get(\"sampleRate\");\n sampleRateParam.setValueAtTime(\n this.audioContext.sampleRate,\n this.audioContext.currentTime,\n );\n const bufferSizeIntervalParam =\n this.processorNode.parameters.get(\"bufferSizeInterval\");\n bufferSizeIntervalParam.setValueAtTime(\n this.bufferSizeInterval,\n this.audioContext.currentTime,\n );\n\n const pausedBufferIntervalParam = this.processorNode.parameters.get(\n \"pausedBufferInterval\",\n );\n pausedBufferIntervalParam.setValueAtTime(\n this.pausedBufferInterval,\n this.audioContext.currentTime,\n );\n const shouldReadIntensityParam = this.processorNode.parameters.get(\n \"shouldReadIntensity\",\n );\n shouldReadIntensityParam.setValueAtTime(\n this.shouldReadIntensity ?? false,\n this.audioContext.currentTime,\n );\n // message received from worklet-thread\n this.processorNode.port.onmessage = (event) => {\n const { type, value } = event.data;\n if (type == DONE_MSG) {\n this.log(\"Worklet processing done, clearing resources...\");\n\n // Uncomment to save recording\n if (this.isDebug) this.saveAudio();\n this.cleanup();\n } else if (event.data == PAUSE_SOCKET_MSG) {\n this.executor.Send(PAUSE_SOCKET_MSG);\n }\n // Uncomment to save recording\n else {\n if (type === \"intensity\") {\n this.onIntensity?.(value);\n } else if (type === \"audioData\") {\n if (this.isDebug) {\n new Int16Array(value).forEach((element) => {\n if (this.audioData.length <= MAX_AUDIO_SAMPLES)\n this.audioData.push(element);\n });\n }\n }\n }\n if (this.executor) {\n if (this.closeSocketWithoutEOS) {\n this.executor.Send(CLOSE_MSG);\n this.closeSocketWithoutEOS = false;\n } else {\n if (type !== \"intensity\") this.executor.Send(value);\n }\n }\n };\n } catch (e) {\n console.error(\"Error: Unable to create worklet node: \", e);\n }\n }\n\n async PauseStream() {\n if (this.audioContext.state == \"running\") {\n if (!this.shouldPreIntialiseRecorder) {\n await this.audioContext.suspend();\n this.log(\"Stream paused...\");\n // message sent to worklet-thread\n this.processorNode.port.postMessage(PAUSE_MSG);\n } else {\n this.processorNode.port.postMessage(PAUSE_SOCKET_MSG);\n }\n }\n this.onStateChanged(false);\n this.isPaused = true;\n this.isStreaming = false;\n }\n\n async ResumeStream() {\n const track = this.audioStream?.getAudioTracks?.()[0];\n\n const trackEnded = !track || track.readyState === \"ended\";\n\n if (trackEnded || this.micNeedsRecovery) {\n // this.log(\"Recovering before resume\");\n\n await this.recoverAudioGraph();\n }\n if (this.IsMicrophoneMuted) {\n // Keep the recorder in paused state — do not stop or close the socket.\n // Suspend the AudioContext in case recoverAudioGraph resumed it so the\n // worklet does not start processing and trigger a cleanup/stop cycle.\n if (this.audioContext && this.audioContext.state === \"running\") {\n await this.audioContext.suspend();\n }\n this.onError(\n JSON.stringify({\n Type: \"ERROR\",\n Data: \"Microphone is muted.\",\n }),\n );\n return;\n }\n if (this.shouldPreIntialiseRecorder) {\n this.processorNode.port.postMessage(RESUME_SOCKET_MSG);\n this.executor.Send(RESUME_SOCKET_MSG);\n } else {\n if (this.audioContext.state === \"suspended\") {\n await this.audioContext.resume();\n }\n this.log(\"Stream resumed...\");\n }\n this.onStateChanged(true);\n this.isPaused = false;\n this.isStreaming = true;\n }\n\n get IsPaused() {\n return this.isPaused;\n }\n\n get IsStreaming() {\n return this.isStreaming;\n }\n\n get IsMicrophoneMuted() {\n const track = this.audioStream?.getAudioTracks?.()[0];\n\n if (!track) {\n return true;\n }\n\n return track.muted || track.readyState === \"ended\";\n }\n\n async StopStream(shouldSendEOS) {\n if (this.audioContext?.state !== \"suspended\") {\n await this.audioContext?.suspend();\n this.onStateChanged(false);\n }\n this.log(\"Stream stopped...\");\n this.isStreaming = false;\n this.isPaused = false;\n this.closeSocketWithoutEOS = !shouldSendEOS;\n // Remove device-change listener so no recovery is triggered after stop\n if (this.deviceChangeHandler) {\n navigator.mediaDevices.removeEventListener(\n \"devicechange\",\n this.deviceChangeHandler,\n );\n this.deviceChangeHandler = null;\n }\n // Remove track-ended listener using the stored reference\n const track = this.audioStream?.getAudioTracks?.()[0];\n if (track && this.trackEndedHandler) {\n track.removeEventListener(\"ended\", this.trackEndedHandler);\n }\n this.trackEndedHandler = null;\n // Stop all media tracks so the browser releases the mic (removes red icon)\n this.audioStream?.getTracks?.()?.forEach((t) => {\n try {\n t.stop();\n } catch {}\n });\n // message sent to worklet-thread\n this.processorNode?.port?.postMessage(STOP_MSG);\n }\n\n async recoverAudioGraph() {\n if (this.isRecovering) {\n return;\n }\n\n this.isRecovering = true;\n\n try {\n // this.log(\"Recovering audio graph...\");\n\n // stop old track\n this.audioStream?.getTracks()?.forEach((t) => {\n try {\n t.stop();\n } catch {}\n });\n\n // disconnect source\n try {\n this.source?.disconnect();\n } catch {}\n\n // disconnect processor\n try {\n this.processorNode?.disconnect();\n } catch {}\n\n // recreate media stream ONLY\n await this.createMediaStreamSourceNode();\n\n if (!this.source) {\n throw new Error(\"Failed to recreate source\");\n }\n\n // AudioContext may become closed/suspended\n if (!this.audioContext || this.audioContext.state === \"closed\") {\n this.audioContext = new AudioContext();\n }\n\n if (this.audioContext.state === \"suspended\") {\n await this.audioContext.resume();\n }\n\n // IMPORTANT:\n // recreate worklet node\n await this.createProcessorNode();\n\n // reconnect graph\n this.source\n .connect(this.processorNode)\n .connect(this.audioContext.destination);\n\n // If the recorder is paused or not actively streaming, suspend the\n // AudioContext immediately after rebuilding the graph so the mic does\n // not start capturing audio without an explicit start/resume call.\n if (!this.isStreaming || this.isPaused) {\n if (this.audioContext.state === \"running\") {\n await this.audioContext.suspend();\n }\n }\n\n this.micNeedsRecovery = false;\n\n // Notify the client that a replacement mic is ready — but only when the\n // recorder is in the paused state. In stopped state the client manages\n // the flow themselves; in actively-streaming state recovery is seamless\n // and no notification is needed.\n if (this.isPaused && !this.IsMicrophoneMuted) {\n if (this.onMicReady) {\n this.onMicReady();\n }\n }\n // this.log(\"Audio graph recovery completed\");\n } catch (e) {\n console.error(\"Recovery failed\", e);\n\n // this.onError(\n // JSON.stringify({\n // Type: \"ERROR\",\n // Data: \"Failed to recover microphone\",\n // }),\n // );\n } finally {\n this.isRecovering = false;\n }\n }\n\n IntentStartStream() {\n this.executor.Send(\"INTENT_START_STREAM\");\n }\n\n cleanup() {\n // Uncomment to stop recorded audio\n // this.source.stop();\n // Uncomment to stop microphone audio\n this.audioStream?.getTracks()?.forEach((track) => {\n try {\n track.stop();\n } catch {}\n });\n this.source.disconnect();\n this.processorNode.disconnect();\n this.processorNode.port.close();\n this.audioContext.close();\n this.audioData = [];\n }\n\n saveAudio() {\n const wavView = this.encodeWAV();\n const url = URL.createObjectURL(new Blob([wavView], { type: \"audio/wav\" }));\n this.log(`Download Recording: ${url}`);\n }\n\n /**\n * Returns a Blob object containing the audio data in WAV format.\n * @returns {Blob} - Blob object containing the audio data in WAV format.\n */\n getBlob() {\n const wavView = this.encodeWAV();\n // console.log(wavView);\n const audioBlob = new Blob([wavView], { type: \"audio/wav\" });\n // console.log(audioBlob);\n return audioBlob;\n }\n\n // 16-bit PCM mono audio @ 16kHz\n encodeWAV() {\n // DataView to hold audio data, 2 bytes per int16\n const view = new DataView(new ArrayBuffer(this.audioData.length * 2));\n this.audioData.forEach((value, index) => {\n view.setInt16(index * 2, value, true);\n });\n\n const dataLength = view.buffer.byteLength;\n const fileSize = 44 + dataLength;\n const wavView = new DataView(new ArrayBuffer(fileSize));\n\n // WAV header\n wavView.setUint32(0, 0x52494646, false); // \"RIFF\" in ASCII\n wavView.setUint32(4, fileSize - 8, true);\n wavView.setUint32(8, 0x57415645, false); // \"WAVE\" in ASCII\n wavView.setUint32(12, 0x666d7420, false); // \"fmt \" in ASCII\n wavView.setUint32(16, 16, true); // Size of the \"fmt\" chunk\n wavView.setUint16(20, 1, true); // Audio format (PCM)\n wavView.setUint16(22, CHANNEL_COUNT, true);\n wavView.setUint32(24, SAMPLE_RATE, true);\n wavView.setUint32(\n 28,\n SAMPLE_RATE * CHANNEL_COUNT * (BITS_PER_SAMPLE / 8),\n true,\n ); // Byte rate\n wavView.setUint16(32, CHANNEL_COUNT * (BITS_PER_SAMPLE / 8), true);\n wavView.setUint16(34, BITS_PER_SAMPLE, true);\n wavView.setUint32(36, 0x64617461, false); // \"data\" in ASCII\n wavView.setUint32(40, dataLength, true);\n\n // Write the audio data to the WAV file\n for (let i = 0; i < dataLength; i++) {\n wavView.setInt8(44 + i, view.getInt8(i));\n }\n\n return wavView;\n }\n\n log(event) {\n if (this.enableLogs) {\n const data = `${new Date().toLocaleTimeString()} Augnito: ${event}`;\n console.log(data + \"\\n\");\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helpers — module-level, not part of the Streamer class\n// ---------------------------------------------------------------------------\n\n/**\n * Opens a temporary getUserMedia stream for the given deviceId, runs it\n * through an AnalyserNode for `durationMs` milliseconds, and resolves with\n * `true` if the measured RMS energy exceeds `silenceThreshold`.\n *\n * Virtual / loopback devices (e.g. Splashtop Remote Sound) are connected but\n * produce only silence, so their RMS stays at or near 0.\n *\n * @param {string} deviceId\n * @param {number} [durationMs=350] How long to sample (ms)\n * @param {number} [silenceThreshold=0.001] RMS below this is considered silent\n * @returns {Promise<boolean>}\n */\nasync function isDeviceProducingAudio(\n deviceId,\n durationMs = 350,\n silenceThreshold = 0.001,\n) {\n let stream = null;\n let audioCtx = null;\n try {\n stream = await navigator.mediaDevices.getUserMedia({\n audio: { deviceId: { exact: deviceId }, channelCount: 1 },\n });\n audioCtx = new AudioContext();\n const source = audioCtx.createMediaStreamSource(stream);\n const analyser = audioCtx.createAnalyser();\n analyser.fftSize = 256;\n source.connect(analyser);\n\n const bufferLength = analyser.frequencyBinCount;\n const dataArray = new Float32Array(bufferLength);\n\n return await new Promise((resolve) => {\n let maxRms = 0;\n const startTime = performance.now();\n\n function sample() {\n analyser.getFloatTimeDomainData(dataArray);\n let sumSq = 0;\n for (let i = 0; i < bufferLength; i++) {\n sumSq += dataArray[i] * dataArray[i];\n }\n const rms = Math.sqrt(sumSq / bufferLength);\n if (rms > maxRms) maxRms = rms;\n\n if (performance.now() - startTime < durationMs) {\n requestAnimationFrame(sample);\n } else {\n resolve(maxRms > silenceThreshold);\n }\n }\n\n requestAnimationFrame(sample);\n });\n } catch {\n // If we cannot open the device at all, treat it as inactive\n return false;\n } finally {\n stream?.getTracks().forEach((t) => t.stop());\n if (audioCtx && audioCtx.state !== \"closed\") {\n audioCtx.close().catch(() => {});\n }\n }\n}\n\n/**\n * Enumerates all audioinput devices, skips `excludeDeviceId`, and returns the\n * deviceId of the first one that passes the `isDeviceProducingAudio` probe.\n * Returns `null` if none are found.\n *\n * @param {string} excludeDeviceId The silent/virtual device to skip\n * @param {boolean} [enableLogs=false]\n * @returns {Promise<string|null>}\n */\nasync function findFirstActiveAudioDevice(excludeDeviceId, enableLogs = false) {\n let devices;\n try {\n devices = await navigator.mediaDevices.enumerateDevices();\n } catch {\n return null;\n }\n\n const audioInputs = devices.filter(\n (d) => d.kind === \"audioinput\" && d.deviceId !== excludeDeviceId,\n );\n\n for (const device of audioInputs) {\n // if (enableLogs) {\n // console.log(\n // `Augnito: Probing candidate device \"${device.label}\" (${device.deviceId})`,\n // );\n // }\n const active = await isDeviceProducingAudio(device.deviceId);\n if (active) {\n // if (enableLogs) {\n // console.log(\n // `Augnito: Found active device \"${device.label}\" (${device.deviceId})`,\n // );\n // }\n return device.deviceId;\n }\n }\n\n return null;\n}\n","import { Streamer } from \"./streamer.js\";\n\nexport class AugnitoRecorder {\n constructor(\n config = {\n serverURL: \"\",\n enableLogs: false,\n isDebug: false,\n bufferInterval: 1,\n pausedBufferInterval: 1,\n EOS_Message: undefined,\n socketTimeoutInterval: undefined,\n shouldSendAudioDataSequence: false,\n reconnectAudioDuration: 0,\n shouldPreIntialiseRecorder: false,\n shouldReadIntensity: false,\n debounceDelay: 300,\n switchToRegularSpeechProfile: false,\n echoCancellation: undefined,\n noiseSuppression: undefined,\n autoGainControl: undefined,\n },\n heavyOp,\n ) {\n if (AugnitoRecorder.instance) {\n return AugnitoRecorder.instance;\n }\n this.WebsocketURL = config.serverURL ?? \"\";\n this.enableLogs = config.enableLogs;\n this.isDebug = config.isDebug;\n this.streamer = null;\n this.streamerNotStarted = false;\n this.isStreamerStarting = false;\n this.pendingStartStream = false;\n this.heavyOp = heavyOp;\n this.bufferInterval = config.bufferInterval;\n this.pausedBufferInterval = config.pausedBufferInterval;\n this.eosMessage = config.EOS_Message;\n this.socketTimeoutInterval = config.socketTimeoutInterval;\n this.shouldSendAudioDataSequence = config.shouldSendAudioDataSequence;\n this.reconnectAudioDuration = config.reconnectAudioDuration ?? 0;\n this.shouldPreIntialiseRecorder = config.shouldPreIntialiseRecorder;\n this.switchToRegularSpeechProfile =\n config.switchToRegularSpeechProfile ?? false;\n this._echoCancellation = config.echoCancellation;\n this._noiseSuppression = config.noiseSuppression;\n this._autoGainControl = config.autoGainControl;\n if (this.shouldPreIntialiseRecorder) {\n this.initialiseStreamer();\n this.streamerNotStarted = true;\n }\n this.shouldReadIntensity = config.shouldReadIntensity;\n this.delay = config.debounceDelay ?? 300;\n this.toggleStartStopAudioStream = debounce(\n this.toggleStartStopAudioStream.bind(this),\n this.delay,\n );\n this.togglePauseResumeAudioStream = debounce(\n this.togglePauseResumeAudioStream.bind(this),\n this.delay,\n );\n this.needsDispose = false;\n AugnitoRecorder.instance = this;\n }\n\n get echoCancellation() { return this._echoCancellation; }\n set echoCancellation(value) {\n this._echoCancellation = value;\n if (this.streamer) this.streamer.echoCancellation = value;\n }\n\n get noiseSuppression() { return this._noiseSuppression; }\n set noiseSuppression(value) {\n this._noiseSuppression = value;\n if (this.streamer) this.streamer.noiseSuppression = value;\n }\n\n get autoGainControl() { return this._autoGainControl; }\n set autoGainControl(value) {\n this._autoGainControl = value;\n if (this.streamer) this.streamer.autoGainControl = value;\n }\n\n initialiseStreamer() {\n this.streamer = new Streamer(\n this.WebsocketURL,\n this.enableLogs,\n this.isDebug,\n this.bufferInterval,\n this.pausedBufferInterval,\n this.eosMessage,\n this.socketTimeoutInterval,\n this.shouldSendAudioDataSequence,\n this.reconnectAudioDuration,\n this.shouldPreIntialiseRecorder,\n this.shouldReadIntensity,\n this.switchToRegularSpeechProfile,\n this._echoCancellation,\n this._noiseSuppression,\n this._autoGainControl,\n this.heavyOp,\n this.onFinalResultCallback.bind(this),\n this.onPartialResultCallback.bind(this),\n this.onErrorCallback.bind(this),\n this.onStateChangedCallback.bind(this),\n this.onSessionEventCallback.bind(this),\n this.onOtherResultCallback.bind(this),\n this.onSpeechResponseCallback.bind(this),\n this.onIntensityCallback.bind(this),\n this.onJobStatusCallback.bind(this),\n this.onMicReadyCallback.bind(this),\n );\n }\n\n updateIntentStartStream() {\n this.pendingStartStream = true;\n this.streamer?.IntentStartStream();\n }\n\n togglePauseResumeAudioStream(audioDuration = 0, socketUrl = undefined) {\n if (!this.streamer || this.streamerNotStarted) {\n if (socketUrl) {\n this.WebsocketURL = socketUrl;\n }\n this.startAudio(audioDuration);\n } else {\n if (this.streamer.IsPaused) {\n this.resumeAudio();\n } else {\n this.pauseAudio();\n }\n }\n }\n\n toggleStartStopAudioStream(audioDuration = 0, socketUrl = undefined) {\n if (!this.streamer || this.streamerNotStarted) {\n if (socketUrl) {\n this.WebsocketURL = socketUrl;\n }\n this.startAudio(audioDuration);\n } else {\n this.stopAudio();\n }\n }\n\n async startAudio(duration) {\n if (this.isStreamerStarting) return; // Prevent concurrent starts\n\n this.isStreamerStarting = true;\n if (!this.shouldPreIntialiseRecorder || !this.streamer) {\n this.initialiseStreamer();\n }\n try {\n var res = await this.streamer.StartStream(duration, this.WebsocketURL);\n if (!res) {\n this.streamer = null;\n } else {\n this.streamerNotStarted = false;\n\n this.log(\"Stream Started...\");\n }\n } finally {\n this.isStreamerStarting = false;\n }\n }\n\n pauseAudio() {\n this.streamer.PauseStream();\n this.log(\"Stream Paused...\");\n }\n\n resumeAudio() {\n this.streamer.ResumeStream();\n if (this.enableLogs) this.log(\"Stream Resumed...\");\n }\n\n /*\n * param forceStopForPausedState set to true for Ambient to send EOS in paused state\n */\n stopAudio(shouldSendEOS = true, forceStopForPausedState = false) {\n if (this.streamer?.IsStreaming || forceStopForPausedState) {\n this.streamer?.StopStream(shouldSendEOS);\n this.streamer = null;\n this.log(\"Stream Stopped...\");\n if (this.shouldPreIntialiseRecorder) {\n setTimeout(() => {\n if (this.needsDispose) {\n this.needsDispose = false;\n return;\n }\n this.initialiseStreamer();\n this.streamerNotStarted = true;\n }, 500);\n }\n }\n }\n\n getBlob() {\n const audioBlob = this.streamer.getBlob();\n this.log(\"Blob Sent...\");\n return audioBlob;\n }\n\n log(event) {\n if (this.enableLogs) {\n const data = `${new Date().toLocaleTimeString()} Augnito: ${event}`;\n this.showLogCallback(data + \"\\n\");\n }\n }\n\n dispose() {\n this.needsDispose = true;\n this.streamer?.StopStream(false);\n this.streamer = null;\n AugnitoRecorder.instance = null;\n }\n\n // #endregion\n // #region client callbacks\n onSessionEventCallback(data) {\n if (this.onSessionEvent) {\n this.onSessionEvent(data);\n }\n }\n onStateChangedCallback(isRecording) {\n if (this.onStateChanged) {\n this.onStateChanged(isRecording);\n }\n }\n onIntensityCallback(intensity) {\n if (this.onIntensity) {\n this.onIntensity(intensity);\n }\n }\n onErrorCallback(errorMessage) {\n if (this.onError) {\n this.onError(errorMessage);\n }\n }\n onPartialResultCallback(hype) {\n if (this.onPartialResult) {\n this.onPartialResult(hype);\n }\n }\n onFinalResultCallback(recipe) {\n if (this.onFinalResult) {\n this.onFinalResult(recipe);\n }\n }\n onOtherResultCallback(message) {\n if (this.onOtherResults) {\n this.onOtherResults(message);\n }\n }\n onSpeechResponseCallback(message) {\n if (this.onSpeechResponse) {\n this.onSpeechResponse(message);\n }\n }\n onJobStatusCallback(status) {\n if (this.onJobStatus) {\n this.onJobStatus(status);\n }\n }\n onMicReadyCallback() {\n if (this.onMicReady) {\n this.onMicReady();\n }\n }\n\n showLogCallback(event) {\n if (this.showLog) {\n this.showLog(event);\n }\n }\n}\n\nfunction debounce(fn, delay) {\n let timeoutId;\n return function (...args) {\n if (timeoutId) clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn.apply(this, args), delay);\n };\n}\n"],"names":["LOOP_AUDIO","WORKLET_PROCESSOR","SAMPLE_RATE","EOS_MSG","DONE_MSG","PAUSE_MSG","PAUSE_SOCKET_MSG","RESUME_SOCKET_MSG","INTENT_START_STREAM","STOP_MSG","CLOSE_MSG","CHANNEL_COUNT","BITS_PER_SAMPLE","NOISE_SUPPRESS_ENABLED","KEEP_ALIVE_TIMEOUT","IDLE_THREAD_INTERVAL","CONSUME_INTERVAL","CONNECT_RETRY_TIMEOUT","HEALTHCHECK_INTERVAL","SOCKET_TIMEOUT","MAX_AUDIO_SAMPLES","Executor","enableLogs","eosMessage","socketTimeoutInterval","shouldSendAudioDataSequence","onFinalResult","onPartialResult","onError","onSessionEvent","onOtherResults","onSpeechResponse","onJobStatus","bufferSizeInterval","switchToRegularSpeechProfile","_classCallCheck","worker","onFinalResultCallback","onErrorCallback","onPartialResultCallback","onSessionEventCallback","onOtherResultsCallback","onSpeechResponseCallback","onJobStatusCallback","packetSeqId","audioDuration","heavyOp","idleLoop","lastSent","switchToRegularSpeech","_createClass","key","value","Start","duration","wsUrl","shouldPauseSocketInitially","_this","workerScript","concat","WorkerBlob","toString","JSON","stringify","Worker","URL","createObjectURL","Blob","type","onmessage","event","console","log","data","eventData","status","createAudioPacketHeader","isLastPacket","Math","ceil","headerSize","buffer","ArrayBuffer","view","DataView","i","setUint8","charCodeAt","setBigInt64","BigInt","appendAudioData","arrayBuffer","audioDataBytes","totalLength","byteLength","combinedBuffer","combinedArray","Uint8Array","set","Send","Date","_this$worker","postMessage","_this$worker2","binaryHeader","_this$worker3","_this$worker4","_this$worker5","_this$worker6","_this$worker7","audioData","undefined","_this$worker8","doneMessage","closeMessage","connectionRetryTimeout","keepAliveTimeout","healthcheckInterval","consumeInterval","idleThreadInterval","pauseSocketMessage","resumeSocketMessage","startListeningClickedMessage","lastConnect","lastDataSent","lastDataReceived","lastPingReceived","queue","pauseStateAudio","pendingStartStreamBuffer","pendingStartStreamCapture","sentPacketsQueue","ws","isDone","consumer","healthCheck","retrySentPacket","packetId","shouldNotReconnect","JobID","shouldPauseSocket","initConnect","WebSocket","onopen","length","message","operate","onerror","error","self","onclose","cleanup","send","readyState","OPEN","currentTime","warn","add","push","parse","Type","metaResponse","Event","Result","Final","outputText","Transcript","filter","x","packetNumber","Index","Data","e","clearInterval","close","setInterval","retryPacket","packetData","res","shift","isSent","unshift","Number","getBigInt64","sentPacket","isSocketClosingTime","worklet","Streamer","socketUrl","isDebug","pausedBufferInterval","reconnectAudioDuration","shouldPreIntialiseRecorder","shouldReadIntensity","echoCancellation","noiseSuppression","autoGainControl","onStateChanged","onIntensity","onMicReady","audioContext","audioStream","executor","HeavyOp","source","processorNode","isPaused","isStreaming","closeSocketWithoutEOS","micNeedsRecovery","trackEndedHandler","isRecovering","currentWsUrl","currentDuration","deviceChangeHandler","InitialiseMediaStream","_InitialiseMediaStream","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","wrap","_callee2$","_context2","prev","next","createMediaStreamSourceNode","abrupt","createProcessorNode","connect","destination","sampleRate","_callee","_this$audioStream","_this$audioStream$get","_track$getSettings$de","_track$getSettings","track","trackInvalid","currentDeviceId","currentDeviceActive","realDeviceId","_callee$","_context","getAudioTracks","call","recoverAudioGraph","getSettings","deviceId","label","isDeviceProducingAudio","sent","findFirstActiveAudioDevice","_preferredDeviceId","stop","navigator","mediaDevices","addEventListener","_x","_x2","apply","arguments","_StartStream","_callee3","_callee3$","_context3","IsMicrophoneMuted","state","suspend","StartStream","_x3","_x4","_createBufferedSourceNode","_callee4","audioBuffer","_callee4$","_context4","loadAudio","createBufferSource","loop","start","createBufferedSourceNode","_createMediaStreamSourceNode","_callee6","_this2","audioConstraints","errMessage","_callee6$","_context6","channelCount","googEchoCancellation","googNoiseSuppression","googAutoGainControl","exact","getUserMedia","audio","AudioContext","createMediaStreamSource","_callee5","_callee5$","_context5","t0","name","_loadAudio","_callee7","response","_callee7$","_context7","fetch","decodeAudioData","_createProcessorNode","_callee8","_this3","_this$shouldReadInten","sampleRateParam","bufferSizeIntervalParam","pausedBufferIntervalParam","shouldReadIntensityParam","_callee8$","_context8","audioWorklet","addModule","encodeURIComponent","AudioWorkletNode","parameters","get","setValueAtTime","port","_event$data","saveAudio","_this3$onIntensity","Int16Array","forEach","element","_PauseStream","_callee9","_callee9$","_context9","PauseStream","_ResumeStream","_callee10","_this$audioStream2","_this$audioStream2$ge","trackEnded","_callee10$","_context10","resume","ResumeStream","_this$audioStream3","_this$audioStream3$ge","muted","_StopStream","_callee11","shouldSendEOS","_this$audioContext","_this$audioStream4","_this$audioStream4$ge","_this$audioStream5","_this$audioStream5$ge","_this$processorNode","_this$audioContext2","_callee11$","_context11","removeEventListener","getTracks","t","_unused","StopStream","_x5","_recoverAudioGraph","_callee12","_this$audioStream6","_this$source","_this$processorNode2","_callee12$","_context12","_unused2","disconnect","_unused3","_unused4","Error","finish","IntentStartStream","_this$audioStream7","_unused5","wavView","encodeWAV","url","getBlob","audioBlob","index","setInt16","dataLength","fileSize","setUint32","setUint16","setInt8","getInt8","toLocaleTimeString","_x6","_isDeviceProducingAudio","_callee13","durationMs","silenceThreshold","stream","audioCtx","analyser","bufferLength","dataArray","_stream","_args13","_callee13$","_context13","createAnalyser","fftSize","frequencyBinCount","Float32Array","Promise","resolve","maxRms","startTime","performance","now","sample","getFloatTimeDomainData","sumSq","rms","sqrt","requestAnimationFrame","catch","_x7","_findFirstActiveAudioDevice","_callee14","excludeDeviceId","devices","audioInputs","_iterator","_step","device","active","_callee14$","_context14","enumerateDevices","d","kind","_createForOfIteratorHelper","s","n","done","t1","f","AugnitoRecorder","_config$serverURL","_config$reconnectAudi","_config$switchToRegul","_config$debounceDelay","config","serverURL","bufferInterval","EOS_Message","debounceDelay","instance","WebsocketURL","streamer","streamerNotStarted","isStreamerStarting","pendingStartStream","_echoCancellation","_noiseSuppression","_autoGainControl","initialiseStreamer","delay","toggleStartStopAudioStream","debounce","bind","togglePauseResumeAudioStream","needsDispose","onStateChangedCallback","onOtherResultCallback","onIntensityCallback","onMicReadyCallback","updateIntentStartStream","_this$streamer","startAudio","IsPaused","resumeAudio","pauseAudio","stopAudio","_startAudio","_this$streamer2","forceStopForPausedState","IsStreaming","_this$streamer3","setTimeout","showLogCallback","dispose","_this$streamer4","isRecording","intensity","errorMessage","hype","recipe","showLog","fn","timeoutId","_len","args","Array","_key","clearTimeout"],"mappings":"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"}
1
+ {"version":3,"file":"augnitoRecorder.js","sources":["../lib/constants.js","../lib/executor.js","../lib/worklet.js","../lib/streamer.js","../lib/augnitoRecorder.js"],"sourcesContent":["export const LOOP_AUDIO = true;\nexport const WORKLET_PROCESSOR = \"worklet-processor\";\nexport const SAMPLE_RATE = 16000;\nconst FRAMES_PER_BLOCK = 128;\n// buffer_size = 1 sec audio = 125 blocks = 16000 frames = 16000 mono samples\nexport const BUFFER_SIZE = 125 * FRAMES_PER_BLOCK;\nexport const SILENCE_IN_SECS = 2;\n\nexport const EOS_MSG = \"EOS\";\nexport const DONE_MSG = \"DONE\";\nexport const PAUSE_MSG = \"PAUSE\";\nexport const PAUSE_SOCKET_MSG = \"PAUSESOCKET\";\nexport const RESUME_SOCKET_MSG = \"RESUMESOCKET\";\nexport const INTENT_START_STREAM = \"INTENT_START_STREAM\";\nexport const STOP_MSG = \"STOP\";\nexport const CLOSE_MSG = \"CLOSE\";\nexport const CHANNEL_COUNT = 1;\nexport const BITS_PER_SAMPLE = 16;\nexport const NOISE_SUPPRESS_ENABLED = false;\n\nexport const KEEP_ALIVE_TIMEOUT = 120000;\nexport const IDLE_THREAD_INTERVAL = 10000;\nexport const CONSUME_INTERVAL = 100;\nexport const CONNECT_RETRY_TIMEOUT = 10000;\nexport const HEALTHCHECK_INTERVAL = 1000;\nexport const SOCKET_TIMEOUT = 10000;\nexport const MAX_AUDIO_SAMPLES = 16000 * 60 * 30;\n","import {\n KEEP_ALIVE_TIMEOUT,\n IDLE_THREAD_INTERVAL,\n EOS_MSG,\n CONNECT_RETRY_TIMEOUT,\n SOCKET_TIMEOUT,\n HEALTHCHECK_INTERVAL,\n CONSUME_INTERVAL,\n DONE_MSG,\n CLOSE_MSG,\n PAUSE_SOCKET_MSG,\n RESUME_SOCKET_MSG,\n INTENT_START_STREAM,\n} from \"./constants.js\";\n\nexport class Executor {\n constructor(\n enableLogs,\n eosMessage,\n socketTimeoutInterval,\n shouldSendAudioDataSequence,\n onFinalResult,\n onPartialResult,\n onError,\n onSessionEvent,\n onOtherResults,\n onSpeechResponse,\n onJobStatus,\n bufferSizeInterval,\n switchToRegularSpeechProfile,\n ) {\n this.worker;\n this.onFinalResultCallback = onFinalResult;\n this.onErrorCallback = onError;\n this.onPartialResultCallback = onPartialResult;\n this.onSessionEventCallback = onSessionEvent;\n this.onOtherResultsCallback = onOtherResults;\n this.onSpeechResponseCallback = onSpeechResponse;\n this.onJobStatusCallback = onJobStatus;\n this.packetSeqId = 0;\n this.audioDuration = 0;\n this.shouldSendAudioDataSequence = shouldSendAudioDataSequence;\n this.heavyOp;\n this.idleLoop;\n this.lastSent;\n this.enableLogs = enableLogs;\n this.eosMessage = eosMessage ? eosMessage : EOS_MSG;\n this.socketTimeoutInterval = socketTimeoutInterval\n ? socketTimeoutInterval\n : SOCKET_TIMEOUT;\n this.bufferSizeInterval = bufferSizeInterval;\n this.switchToRegularSpeech = switchToRegularSpeechProfile;\n }\n\n // main-thread\n Start(duration, wsUrl, shouldPauseSocketInitially) {\n this.audioDuration = duration;\n const workerScript = `\n (() => {\n (${WorkerBlob.toString()})(${JSON.stringify(DONE_MSG)}, ${JSON.stringify(\n this.eosMessage,\n )}, ${JSON.stringify(CLOSE_MSG)}, ${JSON.stringify(\n CONNECT_RETRY_TIMEOUT,\n )}, ${JSON.stringify(this.socketTimeoutInterval)}, ${JSON.stringify(\n KEEP_ALIVE_TIMEOUT,\n )}, ${JSON.stringify(HEALTHCHECK_INTERVAL)}, ${JSON.stringify(\n CONSUME_INTERVAL,\n )}, ${JSON.stringify(IDLE_THREAD_INTERVAL)}, ${JSON.stringify(\n wsUrl,\n )}, ${JSON.stringify(this.enableLogs)}, ${JSON.stringify(\n this.shouldSendAudioDataSequence,\n )},${JSON.stringify(PAUSE_SOCKET_MSG)}, ${JSON.stringify(\n RESUME_SOCKET_MSG,\n )}, ${JSON.stringify(INTENT_START_STREAM)}, ${JSON.stringify(\n this.switchToRegularSpeech,\n )}, ${JSON.stringify(shouldPauseSocketInitially)}, ${JSON.stringify(\n this.heavyOp,\n )});\n })();\n`;\n this.worker = new Worker(\n URL.createObjectURL(\n new Blob([workerScript], {\n type: \"application/javascript\",\n }),\n ),\n );\n // message received from web-worker\n this.worker.onmessage = (event) => {\n if (this.enableLogs) {\n console.log(\"Augnito [MAIN]: \" + JSON.stringify(event.data));\n }\n var eventData = event.data;\n // const asrText = document.getElementById(\"asrText\");\n if (eventData.type == \"final\") this.onFinalResultCallback(eventData.data);\n else if (eventData.type == \"partial\")\n this.onPartialResultCallback(eventData.data);\n else if (eventData.type == \"meta\")\n this.onSessionEventCallback(eventData.data);\n else if (eventData.type == \"error\") this.onErrorCallback(eventData.data);\n else if (eventData.type == \"other\")\n this.onOtherResultsCallback(eventData.data);\n else if (eventData.type == \"jobstatus\") {\n this.onJobStatusCallback(eventData.data.status);\n } else if (eventData.type == \"speechResponse\")\n this.onSpeechResponseCallback(eventData.data);\n };\n }\n\n createAudioPacketHeader(isLastPacket) {\n if (this.audioDuration > 0) {\n this.packetSeqId =\n Math.ceil(this.audioDuration / this.bufferSizeInterval) + 2;\n this.audioDuration = 0;\n }\n this.packetSeqId++;\n const headerSize = 16;\n\n // Create a buffer of the required size\n const buffer = new ArrayBuffer(headerSize);\n\n const view = new DataView(buffer);\n\n // Write '@BSR' as string\n for (let i = 0; i < 4; i++) {\n view.setUint8(i, \"@BSR\".charCodeAt(i));\n }\n\n // Write packet ID (int64)\n view.setBigInt64(4, BigInt(this.packetSeqId), false); // false for big endian\n\n // Write boolean value\n view.setUint8(12, isLastPacket ? 1 : 0);\n return buffer;\n }\n\n appendAudioData(arrayBuffer, audioDataBytes) {\n const totalLength = arrayBuffer.byteLength + audioDataBytes.byteLength;\n const combinedBuffer = new ArrayBuffer(totalLength);\n const combinedArray = new Uint8Array(combinedBuffer);\n combinedArray.set(new Uint8Array(arrayBuffer), 0);\n combinedArray.set(new Uint8Array(audioDataBytes), arrayBuffer.byteLength);\n return combinedBuffer;\n }\n\n // main-thread\n Send(data) {\n this.lastSent = +new Date();\n if (data === CLOSE_MSG) {\n this.worker?.postMessage(CLOSE_MSG);\n } else if (data === DONE_MSG) {\n // message sent to web-worker\n if (this.shouldSendAudioDataSequence) {\n var binaryHeader = this.createAudioPacketHeader(true);\n this.worker?.postMessage(binaryHeader);\n } else {\n this.worker?.postMessage(DONE_MSG);\n }\n } else if (data == PAUSE_SOCKET_MSG) {\n this.worker?.postMessage(PAUSE_SOCKET_MSG);\n } else if (data == RESUME_SOCKET_MSG) {\n this.worker?.postMessage(RESUME_SOCKET_MSG);\n } else if (data == INTENT_START_STREAM) {\n this.worker?.postMessage(INTENT_START_STREAM);\n } else if (data === this.eosMessage) {\n if (!this.shouldSendAudioDataSequence) this.worker?.postMessage(data);\n } else {\n var audioData = [];\n if (this.shouldSendAudioDataSequence) {\n var binaryHeader = this.createAudioPacketHeader(false);\n audioData = this.appendAudioData(binaryHeader, data);\n } else {\n audioData = data;\n }\n if (audioData !== undefined) {\n // message sent to web-worker - transferrable\n this.worker?.postMessage(audioData, [audioData]);\n }\n }\n }\n\n set HeavyOp(heavyOp) {\n this.heavyOp = heavyOp;\n }\n}\n\nfunction WorkerBlob(\n doneMessage,\n eosMessage,\n closeMessage,\n connectionRetryTimeout,\n socketTimeoutInterval,\n keepAliveTimeout,\n healthcheckInterval,\n consumeInterval,\n idleThreadInterval,\n wsUrl,\n enableLogs,\n shouldSendAudioDataSequence,\n pauseSocketMessage,\n resumeSocketMessage,\n startListeningClickedMessage,\n switchToRegularSpeechProfile,\n shouldPauseSocketInitially,\n heavyOp,\n) {\n let lastConnect;\n var lastDataSent;\n var lastDataReceived;\n let lastPingReceived;\n let queue = [];\n let pauseStateAudio;\n let pendingStartStreamBuffer = [];\n let pendingStartStreamCapture = false;\n let sentPacketsQueue = [];\n let ws;\n let isDone = false;\n let consumer;\n let healthCheck;\n let idleLoop;\n let retrySentPacket = false;\n let packetId = 0;\n let shouldNotReconnect = false;\n let JobID = \"\";\n let shouldPauseSocket = shouldPauseSocketInitially;\n\n function initConnect() {\n lastConnect = +new Date();\n if (JobID != \"\") {\n ws = new WebSocket(wsUrl + \"&jobid=\" + JobID);\n } else {\n ws = new WebSocket(wsUrl);\n }\n ws.onopen = (event) => {\n if (enableLogs) {\n console.log(\n \"Augnito: WebSocket connection established - \" +\n JSON.stringify(event),\n );\n }\n if (sentPacketsQueue.length > 0) {\n retrySentPacket = true;\n }\n };\n ws.onmessage = (message) => {\n if (enableLogs) {\n console.log(\n \"Augnito: Message from server - \" + JSON.stringify(message.data),\n );\n }\n lastDataReceived = +new Date();\n operate(message);\n };\n ws.onerror = (error) => {\n console.error(\"WebSocket error: \", error);\n self.postMessage({\n type: \"error\",\n data: JSON.stringify(error),\n });\n // TODO may want to reinitialise\n };\n ws.onclose = (event) => {\n if (enableLogs) {\n console.log(\n \"Augnito: WebSocket connection closed - \" + JSON.stringify(event),\n );\n }\n cleanup();\n };\n lastDataSent = +new Date();\n lastDataReceived = lastDataSent;\n lastPingReceived = +new Date();\n }\n\n // TODO lose the interval and try reading from queue on-add and on-open.\n\n function send(data) {\n if (ws && ws.readyState === WebSocket.OPEN) {\n ws.send(data);\n // This needs to be done to keep the \"lastDataReceived\" value closer to the\n // first \"lastDataSent\" value after ASR is received from the server, so as to\n // not invoke the healthcheck loop and force close the connection.\n var currentTime = +new Date();\n if (lastDataSent <= lastDataReceived) {\n lastDataReceived = currentTime - 1;\n }\n lastDataSent = currentTime;\n return true;\n } else {\n if (data === eosMessage) {\n if (enableLogs) {\n console.warn(\n `Gulping ${eosMessage} as socket seems already closed...`,\n );\n }\n cleanup();\n return true;\n }\n if (\n +new Date() - lastConnect > connectionRetryTimeout &&\n !shouldNotReconnect\n ) {\n initConnect();\n }\n return false;\n }\n }\n\n function add(data) {\n queue.push(data);\n }\n\n function operate(message) {\n try {\n if (message.data === \"PING\") {\n lastPingReceived = +new Date();\n self.postMessage({ type: \"ping\", data: message.data });\n } else {\n const data = JSON.parse(message.data);\n if (enableLogs) {\n console.log(\"Augnito [WORKER]: \" + JSON.stringify(data));\n }\n if (data.Type == \"meta\") {\n if (data.JobID) {\n JobID = data.JobID;\n console.log(\"Augnito JobID:\", JobID);\n }\n self.postMessage({ type: \"meta\", data: message.data });\n var metaResponse = JSON.parse(message.data);\n if (\n metaResponse.Event &&\n metaResponse.Event[\"Type\"] === \"INVALID_AUTH_CREDENTIALS\"\n ) {\n shouldNotReconnect = true;\n } else {\n shouldNotReconnect = false;\n }\n } else if (data.Result && data.Result.Final) {\n // should not be called with \"this\", check worker construction for more info.\n var outputText = JSON.stringify(data.Result);\n\n if (heavyOp) {\n outputText = heavyOp(JSON.stringify(data.Result));\n console.log(outputText);\n }\n self.postMessage({ type: \"final\", data: outputText });\n\n // message sent to main-thread\n } else if (data.Result && !data.Result.Final) {\n self.postMessage({\n type: \"partial\",\n data: data.Result.Transcript,\n });\n } else if (data.Type == \"ACK\") {\n //reset queue with only those packets whose seq num is greater than ACK index\n sentPacketsQueue = sentPacketsQueue.filter(\n (x) => x.packetNumber > data.Index,\n );\n self.postMessage({ type: \"other\", data: message.data });\n } else if (data.Type == \"ERROR\") {\n if (data.Data == \"Timeout exceeded\") {\n isDone = true;\n cleanup();\n }\n self.postMessage({\n type: \"error\",\n data: message.data,\n });\n } else if (data.Type == \"STATUS\") {\n self.postMessage({\n type: \"jobstatus\",\n data: {\n status: message.data,\n },\n });\n } else {\n self.postMessage({\n type: \"speechResponse\",\n data: message.data,\n });\n }\n }\n } catch (e) {\n self.postMessage({\n type: \"error\",\n data: \"invalid response\",\n });\n }\n }\n\n function cleanup() {\n if (isDone) {\n clearInterval(consumer);\n clearInterval(healthCheck);\n clearInterval(idleLoop);\n queue = [];\n sentPacketsQueue = [];\n self.close();\n }\n }\n\n initConnect();\n consumer = setInterval(() => {\n if (retrySentPacket) {\n for (var i = 0; i < sentPacketsQueue.length; i++) {\n const retryPacket = sentPacketsQueue[i].packetData;\n const res = send(retryPacket);\n if (!res) break;\n }\n retrySentPacket = false;\n } else {\n while (queue.length > 0) {\n const data = queue.shift();\n const isSent = send(data);\n if (!isSent) {\n queue.unshift(data);\n break;\n }\n if (shouldSendAudioDataSequence) {\n if (!(data instanceof ArrayBuffer)) {\n continue;\n }\n const view = new DataView(data);\n packetId = Number(view.getBigInt64(4));\n var sentPacket = { packetNumber: packetId, packetData: data };\n sentPacketsQueue.push(sentPacket);\n }\n }\n }\n }, consumeInterval);\n\n healthCheck = setInterval(() => {\n if (ws && ws.readyState === WebSocket.OPEN) {\n const currentTime = +new Date();\n const isSocketClosingTime = switchToRegularSpeechProfile\n ? lastDataSent > lastDataReceived &&\n currentTime - lastDataReceived > socketTimeoutInterval\n : currentTime - lastPingReceived > socketTimeoutInterval;\n if (isSocketClosingTime) {\n if (enableLogs) {\n console.error(\n `No data received since more than ${\n socketTimeoutInterval / 1000\n } secs, closing time...`,\n );\n }\n ws.close();\n }\n }\n }, healthcheckInterval);\n\n idleLoop = setInterval(() => {\n if (ws && ws.readyState === WebSocket.OPEN) {\n const currentTime = +new Date();\n if (lastDataSent && currentTime - lastDataSent > keepAliveTimeout) {\n if (enableLogs) {\n console.warn(\n `No data sent since more than ${\n keepAliveTimeout / 1000\n } secs, closing time...`,\n );\n }\n ws.close();\n }\n }\n }, idleThreadInterval);\n\n self.onmessage = (event) => {\n if (event.data === closeMessage) {\n JobID = \"\";\n isDone = true;\n shouldNotReconnect = true;\n ws.close();\n } else if (event.data === doneMessage) {\n add(eosMessage);\n JobID = \"\";\n if (enableLogs) {\n console.log(\"Augnito: Worker received DONE, time to terminate...\");\n }\n isDone = true;\n } else if (event.data === pauseSocketMessage) {\n shouldPauseSocket = true;\n } else if (event.data === startListeningClickedMessage) {\n pendingStartStreamCapture = true;\n } else if (event.data === resumeSocketMessage) {\n if (pauseStateAudio instanceof ArrayBuffer) {\n add(pauseStateAudio);\n }\n if (pendingStartStreamBuffer.length > 0) {\n for (let i = 0; i < pendingStartStreamBuffer.length; i++) {\n add(pendingStartStreamBuffer[i]);\n }\n }\n pendingStartStreamBuffer = [];\n pendingStartStreamCapture = false;\n shouldPauseSocket = false;\n pauseStateAudio = [];\n } else {\n if (shouldPauseSocket && !pendingStartStreamCapture) {\n pauseStateAudio = event.data;\n } else if (shouldPauseSocket && pendingStartStreamCapture) {\n pendingStartStreamBuffer.push(event.data);\n } else add(event.data);\n }\n };\n}\n","// worklet-thread\nexport const worklet = `class MyAudioWorkletProcessor extends AudioWorkletProcessor {\n constructor() {\n super();\n this.accumulator = [];\n this.pauseSocketStreaming = false;\n this.sampleVal = 0;\n this.sampleSize = 0;\n this.intensityFrameCount = 0;\n this.reset();\n this.isProcessing = true;\n // message received from main-thread\n this.port.onmessage = (e) => {\n console.log(\"Augnito: Worklet received event - \", e.data);\n if (this.sampleSize > 0) {\n this.accumulator.push(this.sampleVal / this.sampleSize);\n }\n \n if (e.data == \"PAUSE\" || e.data == \"STOP\" || e.data == \"PAUSESOCKET\") {\n // append silence to get last word ASR.\n const silenceSize = 16000 * 2;\n for (let i = 0; i < silenceSize; i++) {\n this.accumulator.push(0);\n }\n }\n this.send();\n this.reset();\n if (e.data == \"STOP\") {\n // message sent to main-thread\n this.port.postMessage({type:\"DONE\", value:\"DONE\"});\n this.isProcessing = false;\n \n }\n if(e.data == \"PAUSESOCKET\"){\n this.pauseSocketStreaming = true;\n this.port.postMessage(\"PAUSESOCKET\");\n } else if(e.data == \"RESUMESOCKET\"){\n this.pauseSocketStreaming = false;\n } \n };\n }\n\n static get parameterDescriptors() {\n return [\n {\n name: \"sampleRate\",\n defaultValue: 16000,\n minValue: 16000,\n maxValue: 6 * 16000,\n },\n {\n name: \"bufferSizeInterval\",\n defaultValue: 1,\n minValue: 1,\n maxValue: 100,\n },\n {\n name: \"pausedBufferInterval\",\n defaultValue: 1,\n minValue: 0,\n maxValue: 100,\n },\n {\n name: \"shouldReadIntensity\",\n defaultValue: false,\n minValue: 0,\n maxValue: 1,\n },\n ];\n }\n\n // 128 frames\n process(inputList, outputList, params) {\n const input = inputList[0];\n if (input && input.length && input[0].length) {\n const channelData = input[0];\n const output = outputList[0];\n const inputSampleRate = params.sampleRate[0];\n const sampleRatio = inputSampleRate / 16000\n const bufferSizeInterval = params[\"bufferSizeInterval\"][0];\n const pausedBufferInterval = params[\"pausedBufferInterval\"][0];\n const shouldReadIntensity = params[\"shouldReadIntensity\"][0];\n\n let sumSquares = 0; // For intensity\n let sampleCount = 0;\n\n // console.log(\"BufferSizeInterval\", bufferSizeInterval);\n // Jackpot\n input[0].forEach((float32Element, index) => {\n const int16Element = Math.min(1, Math.max(-1, float32Element)) * 0x7fff;\n this.sampleVal += int16Element;\n this.sampleSize += 1;\n // Accumulate for intensity (RMS)\n sumSquares += float32Element * float32Element;\n sampleCount++;\n \n\n if (this.sampleSize >= sampleRatio) {\n const fraction = this.sampleSize - sampleRatio \n this.sampleVal -= fraction * int16Element;\n\n this.accumulator.push(this.sampleVal / sampleRatio);\n \n this.sampleVal = fraction * int16Element;\n this.sampleSize = fraction;\n }\n\n // Comment this when streaming microphone audio\n // output[0][index] = float32Element;\n });\n if(this.pauseSocketStreaming){\n if (this.accumulator.length >= 125 * 128 * pausedBufferInterval) {\n this.send();\n }\n } else{\n if (this.accumulator.length >= 125 * 128 * bufferSizeInterval) {\n this.send();\n }\n }\n if(shouldReadIntensity){\n \n // Throttled intensity post\n this.intensityFrameCount = (this.intensityFrameCount || 0) + 1;\n if (this.intensityFrameCount >= 15 && sampleCount > 0) {\n const rms = Math.sqrt(sumSquares / sampleCount);\n const normalized = Math.min(1, rms); // [0–1] scale\n this.port.postMessage({ type: 'intensity', value: normalized });\n this.intensityFrameCount = 0;\n }\n }\n }\n return this.isProcessing;\n }\n\n send() {\n if (this.accumulator.length == 0) return;\n const audioData = new Int16Array(this.accumulator);\n // message sent to main-thread - transferrable\n this.port.postMessage({ type: 'audioData', value: audioData.buffer }, [audioData.buffer]);\n this.accumulator = [];\n }\n\n reset() {\n this.sampleVal = 0;\n this.sampleSize = 0;\n }\n}\n\nregisterProcessor(\"worklet-processor\", MyAudioWorkletProcessor);`;\n","import {\n LOOP_AUDIO,\n PAUSE_MSG,\n STOP_MSG,\n DONE_MSG,\n WORKLET_PROCESSOR,\n CHANNEL_COUNT,\n BITS_PER_SAMPLE,\n NOISE_SUPPRESS_ENABLED,\n SAMPLE_RATE,\n CLOSE_MSG,\n PAUSE_SOCKET_MSG,\n RESUME_SOCKET_MSG,\n MAX_AUDIO_SAMPLES,\n} from \"./constants.js\";\nimport { Executor } from \"./executor.js\";\nimport { worklet } from \"./worklet.js\";\n\n// main-thread\nexport class Streamer {\n constructor(\n socketUrl,\n enableLogs,\n isDebug,\n bufferSizeInterval,\n pausedBufferInterval,\n eosMessage,\n socketTimeoutInterval,\n shouldSendAudioDataSequence,\n reconnectAudioDuration,\n shouldPreIntialiseRecorder,\n shouldReadIntensity,\n switchToRegularSpeechProfile,\n echoCancellation,\n noiseSuppression,\n autoGainControl,\n heavyOp,\n onFinalResult,\n onPartialResult,\n onError,\n onStateChanged,\n onSessionEvent,\n onOtherResults,\n onSpeechResponse,\n onIntensity,\n onJobStatus,\n onMicReady,\n ) {\n this.audioContext;\n this.audioStream;\n this.executor = new Executor(\n enableLogs,\n eosMessage,\n socketTimeoutInterval,\n shouldSendAudioDataSequence,\n onFinalResult,\n onPartialResult,\n onError,\n onSessionEvent,\n onOtherResults,\n onSpeechResponse,\n onJobStatus,\n bufferSizeInterval,\n switchToRegularSpeechProfile,\n );\n this.executor.HeavyOp = heavyOp;\n\n this.source;\n this.processorNode;\n this.isPaused = false;\n this.isStreaming = false;\n // Uncomment to save recording\n this.audioData = [];\n this.isDebug = isDebug;\n this.enableLogs = enableLogs;\n this.onStateChanged = onStateChanged;\n this.onIntensity = onIntensity;\n this.onError = onError;\n this.bufferSizeInterval = bufferSizeInterval;\n this.pausedBufferInterval = pausedBufferInterval ?? 1;\n this.shouldReadIntensity = shouldReadIntensity;\n this.closeSocketWithoutEOS = false;\n this.shouldPreIntialiseRecorder = shouldPreIntialiseRecorder ?? false;\n this.echoCancellation = echoCancellation;\n this.noiseSuppression = noiseSuppression;\n this.autoGainControl = autoGainControl;\n this.micNeedsRecovery = false;\n this.trackEndedHandler = null;\n this.isRecovering = false;\n this.currentWsUrl = \"\";\n this.currentDuration = 0;\n this.deviceChangeHandler = null;\n this.onMicReady = onMicReady;\n if (this.shouldPreIntialiseRecorder) {\n this.InitialiseMediaStream(reconnectAudioDuration, socketUrl);\n }\n }\n\n async InitialiseMediaStream(duration, wsUrl) {\n this.currentDuration = duration;\n this.currentWsUrl = wsUrl;\n await this.createMediaStreamSourceNode();\n if (!this.source) {\n console.error(\"Error: unable to create source node\");\n return false;\n }\n await this.createProcessorNode();\n if (!this.processorNode) {\n console.error(\"Error: unable to create processor node\");\n return false;\n }\n this.source\n .connect(this.processorNode)\n .connect(this.audioContext.destination);\n this.log(\"AudioContext Sample Rate: \" + this.audioContext.sampleRate);\n\n if (wsUrl !== \"\") {\n this.executor.Start(duration, wsUrl, this.shouldPreIntialiseRecorder);\n }\n // if (this.audioContext && this.audioContext.state == \"running\") {\n // await this.audioContext.suspend();\n // }\n if (!this.deviceChangeHandler) {\n this.deviceChangeHandler = async () => {\n const track = this.audioStream?.getAudioTracks?.()[0];\n const trackInvalid = !track || track.readyState === \"ended\";\n\n if (trackInvalid) {\n // this.log(\"Detected invalid audio track after device change\");\n this.micNeedsRecovery = true;\n\n await this.recoverAudioGraph();\n return;\n }\n\n const currentDeviceId = track.getSettings?.()?.deviceId ?? track.label;\n // this.log(\n // `Device change detected. Probing current device: \"${track.label}\"`,\n // );\n\n const currentDeviceActive =\n await isDeviceProducingAudio(currentDeviceId);\n\n if (!currentDeviceActive) {\n // this.log(\n // `Current device \"${track.label}\" appears silent/virtual. Searching for a real input device...`,\n // );\n this.micNeedsRecovery = true;\n\n const realDeviceId = await findFirstActiveAudioDevice(\n currentDeviceId,\n this.enableLogs,\n );\n\n if (realDeviceId) {\n this._preferredDeviceId = realDeviceId;\n } else {\n // this.log(\"No active audio input device found after device change\");\n this._preferredDeviceId = null;\n }\n\n // Recover regardless of streaming state so onMicReady fires even\n // when the recorder is paused/stopped after an unplug error.\n await this.recoverAudioGraph();\n } else {\n // this.log(\n // `Current device \"${track.label}\" is producing audio — no switch needed`,\n // );\n }\n };\n\n navigator.mediaDevices.addEventListener(\n \"devicechange\",\n this.deviceChangeHandler,\n );\n }\n }\n\n async StartStream(duration, wsUrl) {\n this.log(\"New stream started...\");\n\n // Uncomment to stream recorded audio\n // await this.createBufferedSourceNode();\n // Uncomment to stream microphone audio\n if (!this.shouldPreIntialiseRecorder || !this.source) {\n await this.InitialiseMediaStream(duration, wsUrl, false);\n } else if (this.shouldPreIntialiseRecorder) {\n this.executor.Send(RESUME_SOCKET_MSG);\n }\n\n if (this.IsMicrophoneMuted) {\n if (this.audioContext && this.audioContext.state == \"running\") {\n await this.audioContext.suspend();\n }\n // Stop all media tracks so the browser releases the mic and removes\n // the red recording indicator when the mic is muted at start.\n this.audioStream?.getTracks?.()?.forEach((t) => {\n try {\n t.stop();\n } catch {}\n });\n // Close the WebSocket that was just opened inside InitialiseMediaStream\n // so we don't leave a dangling connection when the mic is muted at start.\n this.executor.Send(CLOSE_MSG);\n this.onError(\n JSON.stringify({\n Type: \"ERROR\",\n Data: \"Microphone is muted.\",\n }),\n );\n return false;\n }\n\n this.onStateChanged(true);\n\n this.isStreaming = true;\n return true;\n }\n\n async createBufferedSourceNode() {\n const audioBuffer = await this.loadAudio();\n if (!audioBuffer) {\n console.error(\"Error: unable to create audio buffer\");\n return;\n }\n this.source = this.audioContext.createBufferSource();\n this.source.buffer = audioBuffer;\n this.source.loop = LOOP_AUDIO;\n this.source.start();\n }\n\n async createMediaStreamSourceNode() {\n try {\n const audioConstraints = {\n channelCount: CHANNEL_COUNT,\n noiseSuppression:\n this.noiseSuppression !== undefined\n ? this.noiseSuppression\n : NOISE_SUPPRESS_ENABLED,\n // sampleRate: SAMPLE_RATE,\n // sampleSize: BITS_PER_SAMPLE,\n };\n if (this.echoCancellation !== undefined) {\n audioConstraints.echoCancellation = this.echoCancellation;\n audioConstraints.googEchoCancellation = this.echoCancellation;\n }\n if (this.noiseSuppression !== undefined) {\n audioConstraints.googNoiseSuppression = this.noiseSuppression;\n }\n if (this.autoGainControl !== undefined) {\n audioConstraints.autoGainControl = this.autoGainControl;\n audioConstraints.googAutoGainControl = this.autoGainControl;\n }\n // If a specific real device was identified (e.g. after filtering out a\n // virtual/silent device on devicechange), target it explicitly.\n if (this._preferredDeviceId) {\n audioConstraints.deviceId = { exact: this._preferredDeviceId };\n }\n this.audioStream = await navigator.mediaDevices.getUserMedia({\n audio: audioConstraints,\n });\n if (!this.audioContext || this.audioContext.state === \"closed\") {\n this.audioContext = new AudioContext();\n }\n this.source = this.audioContext.createMediaStreamSource(this.audioStream);\n const track = this.audioStream.getAudioTracks()[0];\n\n // Clear any previously registered handler before attaching a new one\n // (the old track is already gone after recovery, so just null the ref)\n if (this.trackEndedHandler) {\n this.trackEndedHandler = null;\n }\n\n this.trackEndedHandler = async () => {\n // this.log(\"Microphone disconnected\");\n\n this.micNeedsRecovery = true;\n\n this.onError(\n JSON.stringify({\n Type: \"ERROR\",\n Data: \"Audio track ended. Possibly the mic was unplugged.\",\n }),\n );\n\n if (this.isStreaming && !this.isPaused) {\n await this.recoverAudioGraph();\n }\n };\n\n track.addEventListener(\"ended\", this.trackEndedHandler);\n } catch (e) {\n var errMessage = \"\";\n if (e.name == \"NotAllowedError\") {\n errMessage = \"Mic permission denied\";\n } else if (e.name === \"NotFoundError\") {\n errMessage = \"No suitable media device found\";\n } else if (e.name === \"NotReadableError\") {\n errMessage = \"Microphone is being used by another application\";\n }\n this.onError(\n JSON.stringify({\n Type: \"ERROR\",\n Data: errMessage,\n }),\n );\n }\n }\n\n async loadAudio() {\n try {\n const response = await fetch(\"./radiology_speed_test.wav\");\n const arrayBuffer = await response.arrayBuffer();\n const audioBuffer = await this.audioContext.decodeAudioData(arrayBuffer);\n return audioBuffer;\n } catch (err) {\n console.error(`Unable to fetch the audio file. Error: ${err.message}`);\n return null;\n }\n }\n\n async createProcessorNode() {\n try {\n await this.audioContext.audioWorklet.addModule(\n `data:application/javascript,${encodeURIComponent(worklet)}`,\n );\n this.processorNode = new AudioWorkletNode(\n this.audioContext,\n WORKLET_PROCESSOR,\n );\n\n const sampleRateParam = this.processorNode.parameters.get(\"sampleRate\");\n sampleRateParam.setValueAtTime(\n this.audioContext.sampleRate,\n this.audioContext.currentTime,\n );\n const bufferSizeIntervalParam =\n this.processorNode.parameters.get(\"bufferSizeInterval\");\n bufferSizeIntervalParam.setValueAtTime(\n this.bufferSizeInterval,\n this.audioContext.currentTime,\n );\n\n const pausedBufferIntervalParam = this.processorNode.parameters.get(\n \"pausedBufferInterval\",\n );\n pausedBufferIntervalParam.setValueAtTime(\n this.pausedBufferInterval,\n this.audioContext.currentTime,\n );\n const shouldReadIntensityParam = this.processorNode.parameters.get(\n \"shouldReadIntensity\",\n );\n shouldReadIntensityParam.setValueAtTime(\n this.shouldReadIntensity ?? false,\n this.audioContext.currentTime,\n );\n // message received from worklet-thread\n this.processorNode.port.onmessage = (event) => {\n const { type, value } = event.data;\n if (type == DONE_MSG) {\n this.log(\"Worklet processing done, clearing resources...\");\n\n // Uncomment to save recording\n if (this.isDebug) this.saveAudio();\n this.cleanup();\n } else if (event.data == PAUSE_SOCKET_MSG) {\n this.executor.Send(PAUSE_SOCKET_MSG);\n }\n // Uncomment to save recording\n else {\n if (type === \"intensity\") {\n this.onIntensity?.(value);\n } else if (type === \"audioData\") {\n if (this.isDebug) {\n new Int16Array(value).forEach((element) => {\n if (this.audioData.length <= MAX_AUDIO_SAMPLES)\n this.audioData.push(element);\n });\n }\n }\n }\n if (this.executor) {\n if (this.closeSocketWithoutEOS) {\n this.executor.Send(CLOSE_MSG);\n this.closeSocketWithoutEOS = false;\n } else {\n if (type !== \"intensity\") this.executor.Send(value);\n }\n }\n };\n } catch (e) {\n console.error(\"Error: Unable to create worklet node: \", e);\n }\n }\n\n async PauseStream() {\n if (this.audioContext.state == \"running\") {\n if (!this.shouldPreIntialiseRecorder) {\n await this.audioContext.suspend();\n this.log(\"Stream paused...\");\n // message sent to worklet-thread\n this.processorNode.port.postMessage(PAUSE_MSG);\n } else {\n this.processorNode.port.postMessage(PAUSE_SOCKET_MSG);\n }\n }\n this.onStateChanged(false);\n this.isPaused = true;\n this.isStreaming = false;\n }\n\n async ResumeStream() {\n const track = this.audioStream?.getAudioTracks?.()[0];\n\n const trackEnded = !track || track.readyState === \"ended\";\n\n if (trackEnded || this.micNeedsRecovery) {\n // this.log(\"Recovering before resume\");\n\n await this.recoverAudioGraph();\n }\n if (this.IsMicrophoneMuted) {\n // Keep the recorder in paused state — do not stop or close the socket.\n // Suspend the AudioContext in case recoverAudioGraph resumed it so the\n // worklet does not start processing and trigger a cleanup/stop cycle.\n if (this.audioContext && this.audioContext.state === \"running\") {\n await this.audioContext.suspend();\n }\n this.onError(\n JSON.stringify({\n Type: \"ERROR\",\n Data: \"Microphone is muted.\",\n }),\n );\n return;\n }\n if (this.shouldPreIntialiseRecorder) {\n this.processorNode.port.postMessage(RESUME_SOCKET_MSG);\n this.executor.Send(RESUME_SOCKET_MSG);\n } else {\n if (this.audioContext.state === \"suspended\") {\n await this.audioContext.resume();\n }\n this.log(\"Stream resumed...\");\n }\n this.onStateChanged(true);\n this.isPaused = false;\n this.isStreaming = true;\n }\n\n get IsPaused() {\n return this.isPaused;\n }\n\n get IsStreaming() {\n return this.isStreaming;\n }\n\n get IsMicrophoneMuted() {\n const track = this.audioStream?.getAudioTracks?.()[0];\n\n if (!track) {\n return true;\n }\n\n return track.muted || track.readyState === \"ended\";\n }\n\n async StopStream(shouldSendEOS) {\n if (this.audioContext?.state !== \"suspended\") {\n await this.audioContext?.suspend();\n this.onStateChanged(false);\n }\n this.log(\"Stream stopped...\");\n this.isStreaming = false;\n this.isPaused = false;\n this.closeSocketWithoutEOS = !shouldSendEOS;\n // Remove device-change listener so no recovery is triggered after stop\n if (this.deviceChangeHandler) {\n navigator.mediaDevices.removeEventListener(\n \"devicechange\",\n this.deviceChangeHandler,\n );\n this.deviceChangeHandler = null;\n }\n // Remove track-ended listener using the stored reference\n const track = this.audioStream?.getAudioTracks?.()[0];\n if (track && this.trackEndedHandler) {\n track.removeEventListener(\"ended\", this.trackEndedHandler);\n }\n this.trackEndedHandler = null;\n // Stop all media tracks so the browser releases the mic (removes red icon)\n this.audioStream?.getTracks?.()?.forEach((t) => {\n try {\n t.stop();\n } catch {}\n });\n // message sent to worklet-thread\n this.processorNode?.port?.postMessage(STOP_MSG);\n }\n\n async recoverAudioGraph() {\n if (this.isRecovering) {\n return;\n }\n\n this.isRecovering = true;\n\n try {\n // this.log(\"Recovering audio graph...\");\n\n // stop old track\n this.audioStream?.getTracks()?.forEach((t) => {\n try {\n t.stop();\n } catch {}\n });\n\n // disconnect source\n try {\n this.source?.disconnect();\n } catch {}\n\n // disconnect processor\n try {\n this.processorNode?.disconnect();\n } catch {}\n\n // recreate media stream ONLY\n await this.createMediaStreamSourceNode();\n\n if (!this.source) {\n throw new Error(\"Failed to recreate source\");\n }\n\n // AudioContext may become closed/suspended\n if (!this.audioContext || this.audioContext.state === \"closed\") {\n this.audioContext = new AudioContext();\n }\n\n if (this.audioContext.state === \"suspended\") {\n await this.audioContext.resume();\n }\n\n // IMPORTANT:\n // recreate worklet node\n await this.createProcessorNode();\n\n // reconnect graph\n this.source\n .connect(this.processorNode)\n .connect(this.audioContext.destination);\n\n // If the recorder is paused or not actively streaming, suspend the\n // AudioContext immediately after rebuilding the graph so the mic does\n // not start capturing audio without an explicit start/resume call.\n if (!this.isStreaming || this.isPaused) {\n if (this.audioContext.state === \"running\") {\n await this.audioContext.suspend();\n }\n }\n\n this.micNeedsRecovery = false;\n\n // Notify the client that a replacement mic is ready — but only when the\n // recorder is in the paused state. In stopped state the client manages\n // the flow themselves; in actively-streaming state recovery is seamless\n // and no notification is needed.\n if (this.isPaused && !this.IsMicrophoneMuted) {\n if (this.onMicReady) {\n this.onMicReady();\n }\n }\n // this.log(\"Audio graph recovery completed\");\n } catch (e) {\n console.error(\"Recovery failed\", e);\n\n // this.onError(\n // JSON.stringify({\n // Type: \"ERROR\",\n // Data: \"Failed to recover microphone\",\n // }),\n // );\n } finally {\n this.isRecovering = false;\n }\n }\n\n IntentStartStream() {\n this.executor.Send(\"INTENT_START_STREAM\");\n }\n\n cleanup() {\n // Uncomment to stop recorded audio\n // this.source.stop();\n // Uncomment to stop microphone audio\n this.audioStream?.getTracks()?.forEach((track) => {\n try {\n track.stop();\n } catch {}\n });\n this.source.disconnect();\n this.processorNode.disconnect();\n this.processorNode.port.close();\n this.audioContext.close();\n this.audioData = [];\n }\n\n saveAudio() {\n const wavView = this.encodeWAV();\n const url = URL.createObjectURL(new Blob([wavView], { type: \"audio/wav\" }));\n this.log(`Download Recording: ${url}`);\n }\n\n /**\n * Returns a Blob object containing the audio data in WAV format.\n * @returns {Blob} - Blob object containing the audio data in WAV format.\n */\n getBlob() {\n const wavView = this.encodeWAV();\n // console.log(wavView);\n const audioBlob = new Blob([wavView], { type: \"audio/wav\" });\n // console.log(audioBlob);\n return audioBlob;\n }\n\n // 16-bit PCM mono audio @ 16kHz\n encodeWAV() {\n // DataView to hold audio data, 2 bytes per int16\n const view = new DataView(new ArrayBuffer(this.audioData.length * 2));\n this.audioData.forEach((value, index) => {\n view.setInt16(index * 2, value, true);\n });\n\n const dataLength = view.buffer.byteLength;\n const fileSize = 44 + dataLength;\n const wavView = new DataView(new ArrayBuffer(fileSize));\n\n // WAV header\n wavView.setUint32(0, 0x52494646, false); // \"RIFF\" in ASCII\n wavView.setUint32(4, fileSize - 8, true);\n wavView.setUint32(8, 0x57415645, false); // \"WAVE\" in ASCII\n wavView.setUint32(12, 0x666d7420, false); // \"fmt \" in ASCII\n wavView.setUint32(16, 16, true); // Size of the \"fmt\" chunk\n wavView.setUint16(20, 1, true); // Audio format (PCM)\n wavView.setUint16(22, CHANNEL_COUNT, true);\n wavView.setUint32(24, SAMPLE_RATE, true);\n wavView.setUint32(\n 28,\n SAMPLE_RATE * CHANNEL_COUNT * (BITS_PER_SAMPLE / 8),\n true,\n ); // Byte rate\n wavView.setUint16(32, CHANNEL_COUNT * (BITS_PER_SAMPLE / 8), true);\n wavView.setUint16(34, BITS_PER_SAMPLE, true);\n wavView.setUint32(36, 0x64617461, false); // \"data\" in ASCII\n wavView.setUint32(40, dataLength, true);\n\n // Write the audio data to the WAV file\n for (let i = 0; i < dataLength; i++) {\n wavView.setInt8(44 + i, view.getInt8(i));\n }\n\n return wavView;\n }\n\n log(event) {\n if (this.enableLogs) {\n const data = `${new Date().toLocaleTimeString()} Augnito: ${event}`;\n console.log(data + \"\\n\");\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helpers — module-level, not part of the Streamer class\n// ---------------------------------------------------------------------------\n\n/**\n * Opens a temporary getUserMedia stream for the given deviceId, runs it\n * through an AnalyserNode for `durationMs` milliseconds, and resolves with\n * `true` if the measured RMS energy exceeds `silenceThreshold`.\n *\n * Virtual / loopback devices (e.g. Splashtop Remote Sound) are connected but\n * produce only silence, so their RMS stays at or near 0.\n *\n * @param {string} deviceId\n * @param {number} [durationMs=350] How long to sample (ms)\n * @param {number} [silenceThreshold=0.001] RMS below this is considered silent\n * @returns {Promise<boolean>}\n */\nasync function isDeviceProducingAudio(\n deviceId,\n durationMs = 350,\n silenceThreshold = 0.01,\n) {\n let stream = null;\n let audioCtx = null;\n try {\n stream = await navigator.mediaDevices.getUserMedia({\n audio: { deviceId: { exact: deviceId }, channelCount: 1 },\n });\n audioCtx = new AudioContext();\n const source = audioCtx.createMediaStreamSource(stream);\n const analyser = audioCtx.createAnalyser();\n analyser.fftSize = 256;\n source.connect(analyser);\n\n const bufferLength = analyser.frequencyBinCount;\n const dataArray = new Float32Array(bufferLength);\n\n return await new Promise((resolve) => {\n let maxRms = 0;\n const startTime = performance.now();\n\n function sample() {\n analyser.getFloatTimeDomainData(dataArray);\n let sumSq = 0;\n for (let i = 0; i < bufferLength; i++) {\n sumSq += dataArray[i] * dataArray[i];\n }\n const rms = Math.sqrt(sumSq / bufferLength);\n if (rms > maxRms) maxRms = rms;\n\n if (performance.now() - startTime < durationMs) {\n requestAnimationFrame(sample);\n } else {\n resolve(maxRms > silenceThreshold);\n }\n }\n\n requestAnimationFrame(sample);\n });\n } catch {\n // If we cannot open the device at all, treat it as inactive\n return false;\n } finally {\n stream?.getTracks().forEach((t) => t.stop());\n if (audioCtx && audioCtx.state !== \"closed\") {\n audioCtx.close().catch(() => {});\n }\n }\n}\n\n/**\n * Enumerates all audioinput devices, skips `excludeDeviceId`, and returns the\n * deviceId of the first one that passes the `isDeviceProducingAudio` probe.\n * Returns `null` if none are found.\n *\n * @param {string} excludeDeviceId The silent/virtual device to skip\n * @param {boolean} [enableLogs=false]\n * @returns {Promise<string|null>}\n */\nasync function findFirstActiveAudioDevice(excludeDeviceId, enableLogs = false) {\n let devices;\n try {\n devices = await navigator.mediaDevices.enumerateDevices();\n } catch {\n return null;\n }\n\n const audioInputs = devices.filter(\n (d) => d.kind === \"audioinput\" && d.deviceId !== excludeDeviceId,\n );\n\n for (const device of audioInputs) {\n // if (enableLogs) {\n // console.log(\n // `Augnito: Probing candidate device \"${device.label}\" (${device.deviceId})`,\n // );\n // }\n const active = await isDeviceProducingAudio(device.deviceId);\n if (active) {\n // if (enableLogs) {\n // console.log(\n // `Augnito: Found active device \"${device.label}\" (${device.deviceId})`,\n // );\n // }\n return device.deviceId;\n }\n }\n\n return null;\n}\n","import { Streamer } from \"./streamer.js\";\n\nexport class AugnitoRecorder {\n constructor(\n config = {\n serverURL: \"\",\n enableLogs: false,\n isDebug: false,\n bufferInterval: 1,\n pausedBufferInterval: 1,\n EOS_Message: undefined,\n socketTimeoutInterval: undefined,\n shouldSendAudioDataSequence: false,\n reconnectAudioDuration: 0,\n shouldPreIntialiseRecorder: false,\n shouldReadIntensity: false,\n debounceDelay: 300,\n switchToRegularSpeechProfile: false,\n echoCancellation: undefined,\n noiseSuppression: undefined,\n autoGainControl: undefined,\n },\n heavyOp,\n ) {\n if (AugnitoRecorder.instance) {\n return AugnitoRecorder.instance;\n }\n this.WebsocketURL = config.serverURL ?? \"\";\n this.enableLogs = config.enableLogs;\n this.isDebug = config.isDebug;\n this.streamer = null;\n this.streamerNotStarted = false;\n this.isStreamerStarting = false;\n this.pendingStartStream = false;\n this.heavyOp = heavyOp;\n this.bufferInterval = config.bufferInterval;\n this.pausedBufferInterval = config.pausedBufferInterval;\n this.eosMessage = config.EOS_Message;\n this.socketTimeoutInterval = config.socketTimeoutInterval;\n this.shouldSendAudioDataSequence = config.shouldSendAudioDataSequence;\n this.reconnectAudioDuration = config.reconnectAudioDuration ?? 0;\n this.shouldPreIntialiseRecorder = config.shouldPreIntialiseRecorder;\n this.switchToRegularSpeechProfile =\n config.switchToRegularSpeechProfile ?? false;\n this._echoCancellation = config.echoCancellation;\n this._noiseSuppression = config.noiseSuppression;\n this._autoGainControl = config.autoGainControl;\n if (this.shouldPreIntialiseRecorder) {\n this.initialiseStreamer();\n this.streamerNotStarted = true;\n }\n this.shouldReadIntensity = config.shouldReadIntensity;\n this.delay = config.debounceDelay ?? 300;\n this.toggleStartStopAudioStream = debounce(\n this.toggleStartStopAudioStream.bind(this),\n this.delay,\n );\n this.togglePauseResumeAudioStream = debounce(\n this.togglePauseResumeAudioStream.bind(this),\n this.delay,\n );\n this.needsDispose = false;\n AugnitoRecorder.instance = this;\n }\n\n get echoCancellation() { return this._echoCancellation; }\n set echoCancellation(value) {\n this._echoCancellation = value;\n if (this.streamer) this.streamer.echoCancellation = value;\n }\n\n get noiseSuppression() { return this._noiseSuppression; }\n set noiseSuppression(value) {\n this._noiseSuppression = value;\n if (this.streamer) this.streamer.noiseSuppression = value;\n }\n\n get autoGainControl() { return this._autoGainControl; }\n set autoGainControl(value) {\n this._autoGainControl = value;\n if (this.streamer) this.streamer.autoGainControl = value;\n }\n\n initialiseStreamer() {\n this.streamer = new Streamer(\n this.WebsocketURL,\n this.enableLogs,\n this.isDebug,\n this.bufferInterval,\n this.pausedBufferInterval,\n this.eosMessage,\n this.socketTimeoutInterval,\n this.shouldSendAudioDataSequence,\n this.reconnectAudioDuration,\n this.shouldPreIntialiseRecorder,\n this.shouldReadIntensity,\n this.switchToRegularSpeechProfile,\n this._echoCancellation,\n this._noiseSuppression,\n this._autoGainControl,\n this.heavyOp,\n this.onFinalResultCallback.bind(this),\n this.onPartialResultCallback.bind(this),\n this.onErrorCallback.bind(this),\n this.onStateChangedCallback.bind(this),\n this.onSessionEventCallback.bind(this),\n this.onOtherResultCallback.bind(this),\n this.onSpeechResponseCallback.bind(this),\n this.onIntensityCallback.bind(this),\n this.onJobStatusCallback.bind(this),\n this.onMicReadyCallback.bind(this),\n );\n }\n\n updateIntentStartStream() {\n this.pendingStartStream = true;\n this.streamer?.IntentStartStream();\n }\n\n togglePauseResumeAudioStream(audioDuration = 0, socketUrl = undefined) {\n if (!this.streamer || this.streamerNotStarted) {\n if (socketUrl) {\n this.WebsocketURL = socketUrl;\n }\n this.startAudio(audioDuration);\n } else {\n if (this.streamer.IsPaused) {\n this.resumeAudio();\n } else {\n this.pauseAudio();\n }\n }\n }\n\n toggleStartStopAudioStream(audioDuration = 0, socketUrl = undefined) {\n if (!this.streamer || this.streamerNotStarted) {\n if (socketUrl) {\n this.WebsocketURL = socketUrl;\n }\n this.startAudio(audioDuration);\n } else {\n this.stopAudio();\n }\n }\n\n async startAudio(duration) {\n if (this.isStreamerStarting) return; // Prevent concurrent starts\n\n this.isStreamerStarting = true;\n if (!this.shouldPreIntialiseRecorder || !this.streamer) {\n this.initialiseStreamer();\n }\n try {\n var res = await this.streamer.StartStream(duration, this.WebsocketURL);\n if (!res) {\n this.streamer = null;\n } else {\n this.streamerNotStarted = false;\n\n this.log(\"Stream Started...\");\n }\n } finally {\n this.isStreamerStarting = false;\n }\n }\n\n pauseAudio() {\n this.streamer.PauseStream();\n this.log(\"Stream Paused...\");\n }\n\n resumeAudio() {\n this.streamer.ResumeStream();\n if (this.enableLogs) this.log(\"Stream Resumed...\");\n }\n\n /*\n * param forceStopForPausedState set to true for Ambient to send EOS in paused state\n */\n stopAudio(shouldSendEOS = true, forceStopForPausedState = false) {\n if (this.streamer?.IsStreaming || forceStopForPausedState) {\n this.streamer?.StopStream(shouldSendEOS);\n this.streamer = null;\n this.log(\"Stream Stopped...\");\n if (this.shouldPreIntialiseRecorder) {\n setTimeout(() => {\n if (this.needsDispose) {\n this.needsDispose = false;\n return;\n }\n this.initialiseStreamer();\n this.streamerNotStarted = true;\n }, 500);\n }\n }\n }\n\n getBlob() {\n const audioBlob = this.streamer.getBlob();\n this.log(\"Blob Sent...\");\n return audioBlob;\n }\n\n log(event) {\n if (this.enableLogs) {\n const data = `${new Date().toLocaleTimeString()} Augnito: ${event}`;\n this.showLogCallback(data + \"\\n\");\n }\n }\n\n dispose() {\n this.needsDispose = true;\n this.streamer?.StopStream(false);\n this.streamer = null;\n AugnitoRecorder.instance = null;\n }\n\n // #endregion\n // #region client callbacks\n onSessionEventCallback(data) {\n if (this.onSessionEvent) {\n this.onSessionEvent(data);\n }\n }\n onStateChangedCallback(isRecording) {\n if (this.onStateChanged) {\n this.onStateChanged(isRecording);\n }\n }\n onIntensityCallback(intensity) {\n if (this.onIntensity) {\n this.onIntensity(intensity);\n }\n }\n onErrorCallback(errorMessage) {\n if (this.onError) {\n this.onError(errorMessage);\n }\n }\n onPartialResultCallback(hype) {\n if (this.onPartialResult) {\n this.onPartialResult(hype);\n }\n }\n onFinalResultCallback(recipe) {\n if (this.onFinalResult) {\n this.onFinalResult(recipe);\n }\n }\n onOtherResultCallback(message) {\n if (this.onOtherResults) {\n this.onOtherResults(message);\n }\n }\n onSpeechResponseCallback(message) {\n if (this.onSpeechResponse) {\n this.onSpeechResponse(message);\n }\n }\n onJobStatusCallback(status) {\n if (this.onJobStatus) {\n this.onJobStatus(status);\n }\n }\n onMicReadyCallback() {\n if (this.onMicReady) {\n this.onMicReady();\n }\n }\n\n showLogCallback(event) {\n if (this.showLog) {\n this.showLog(event);\n }\n }\n}\n\nfunction debounce(fn, delay) {\n let timeoutId;\n return function (...args) {\n if (timeoutId) clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn.apply(this, args), delay);\n };\n}\n"],"names":["LOOP_AUDIO","WORKLET_PROCESSOR","SAMPLE_RATE","EOS_MSG","DONE_MSG","PAUSE_MSG","PAUSE_SOCKET_MSG","RESUME_SOCKET_MSG","INTENT_START_STREAM","STOP_MSG","CLOSE_MSG","CHANNEL_COUNT","BITS_PER_SAMPLE","NOISE_SUPPRESS_ENABLED","KEEP_ALIVE_TIMEOUT","IDLE_THREAD_INTERVAL","CONSUME_INTERVAL","CONNECT_RETRY_TIMEOUT","HEALTHCHECK_INTERVAL","SOCKET_TIMEOUT","MAX_AUDIO_SAMPLES","Executor","enableLogs","eosMessage","socketTimeoutInterval","shouldSendAudioDataSequence","onFinalResult","onPartialResult","onError","onSessionEvent","onOtherResults","onSpeechResponse","onJobStatus","bufferSizeInterval","switchToRegularSpeechProfile","_classCallCheck","worker","onFinalResultCallback","onErrorCallback","onPartialResultCallback","onSessionEventCallback","onOtherResultsCallback","onSpeechResponseCallback","onJobStatusCallback","packetSeqId","audioDuration","heavyOp","idleLoop","lastSent","switchToRegularSpeech","_createClass","key","value","Start","duration","wsUrl","shouldPauseSocketInitially","_this","workerScript","concat","WorkerBlob","toString","JSON","stringify","Worker","URL","createObjectURL","Blob","type","onmessage","event","console","log","data","eventData","status","createAudioPacketHeader","isLastPacket","Math","ceil","headerSize","buffer","ArrayBuffer","view","DataView","i","setUint8","charCodeAt","setBigInt64","BigInt","appendAudioData","arrayBuffer","audioDataBytes","totalLength","byteLength","combinedBuffer","combinedArray","Uint8Array","set","Send","Date","_this$worker","postMessage","_this$worker2","binaryHeader","_this$worker3","_this$worker4","_this$worker5","_this$worker6","_this$worker7","audioData","undefined","_this$worker8","doneMessage","closeMessage","connectionRetryTimeout","keepAliveTimeout","healthcheckInterval","consumeInterval","idleThreadInterval","pauseSocketMessage","resumeSocketMessage","startListeningClickedMessage","lastConnect","lastDataSent","lastDataReceived","lastPingReceived","queue","pauseStateAudio","pendingStartStreamBuffer","pendingStartStreamCapture","sentPacketsQueue","ws","isDone","consumer","healthCheck","retrySentPacket","packetId","shouldNotReconnect","JobID","shouldPauseSocket","initConnect","WebSocket","onopen","length","message","operate","onerror","error","self","onclose","cleanup","send","readyState","OPEN","currentTime","warn","add","push","parse","Type","metaResponse","Event","Result","Final","outputText","Transcript","filter","x","packetNumber","Index","Data","e","clearInterval","close","setInterval","retryPacket","packetData","res","shift","isSent","unshift","Number","getBigInt64","sentPacket","isSocketClosingTime","worklet","Streamer","socketUrl","isDebug","pausedBufferInterval","reconnectAudioDuration","shouldPreIntialiseRecorder","shouldReadIntensity","echoCancellation","noiseSuppression","autoGainControl","onStateChanged","onIntensity","onMicReady","audioContext","audioStream","executor","HeavyOp","source","processorNode","isPaused","isStreaming","closeSocketWithoutEOS","micNeedsRecovery","trackEndedHandler","isRecovering","currentWsUrl","currentDuration","deviceChangeHandler","InitialiseMediaStream","_InitialiseMediaStream","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","wrap","_callee2$","_context2","prev","next","createMediaStreamSourceNode","abrupt","createProcessorNode","connect","destination","sampleRate","_callee","_this$audioStream","_this$audioStream$get","_track$getSettings$de","_track$getSettings","track","trackInvalid","currentDeviceId","currentDeviceActive","realDeviceId","_callee$","_context","getAudioTracks","call","recoverAudioGraph","getSettings","deviceId","label","isDeviceProducingAudio","sent","findFirstActiveAudioDevice","_preferredDeviceId","stop","navigator","mediaDevices","addEventListener","_x","_x2","apply","arguments","_StartStream","_callee3","_this$audioStream2","_this$audioStream2$ge","_callee3$","_context3","IsMicrophoneMuted","state","suspend","getTracks","forEach","t","_unused","StartStream","_x3","_x4","_createBufferedSourceNode","_callee4","audioBuffer","_callee4$","_context4","loadAudio","createBufferSource","loop","start","createBufferedSourceNode","_createMediaStreamSourceNode","_callee6","_this2","audioConstraints","errMessage","_callee6$","_context6","channelCount","googEchoCancellation","googNoiseSuppression","googAutoGainControl","exact","getUserMedia","audio","AudioContext","createMediaStreamSource","_callee5","_callee5$","_context5","t0","name","_loadAudio","_callee7","response","_callee7$","_context7","fetch","decodeAudioData","_createProcessorNode","_callee8","_this3","_this$shouldReadInten","sampleRateParam","bufferSizeIntervalParam","pausedBufferIntervalParam","shouldReadIntensityParam","_callee8$","_context8","audioWorklet","addModule","encodeURIComponent","AudioWorkletNode","parameters","get","setValueAtTime","port","_event$data","saveAudio","_this3$onIntensity","Int16Array","element","_PauseStream","_callee9","_callee9$","_context9","PauseStream","_ResumeStream","_callee10","_this$audioStream3","_this$audioStream3$ge","trackEnded","_callee10$","_context10","resume","ResumeStream","_this$audioStream4","_this$audioStream4$ge","muted","_StopStream","_callee11","shouldSendEOS","_this$audioContext","_this$audioStream5","_this$audioStream5$ge","_this$audioStream6","_this$audioStream6$ge","_this$processorNode","_this$audioContext2","_callee11$","_context11","removeEventListener","_unused2","StopStream","_x5","_recoverAudioGraph","_callee12","_this$audioStream7","_this$source","_this$processorNode2","_callee12$","_context12","_unused3","disconnect","_unused4","_unused5","Error","finish","IntentStartStream","_this$audioStream8","_unused6","wavView","encodeWAV","url","getBlob","audioBlob","index","setInt16","dataLength","fileSize","setUint32","setUint16","setInt8","getInt8","toLocaleTimeString","_x6","_isDeviceProducingAudio","_callee13","durationMs","silenceThreshold","stream","audioCtx","analyser","bufferLength","dataArray","_stream","_args13","_callee13$","_context13","createAnalyser","fftSize","frequencyBinCount","Float32Array","Promise","resolve","maxRms","startTime","performance","now","sample","getFloatTimeDomainData","sumSq","rms","sqrt","requestAnimationFrame","catch","_x7","_findFirstActiveAudioDevice","_callee14","excludeDeviceId","devices","audioInputs","_iterator","_step","device","active","_callee14$","_context14","enumerateDevices","d","kind","_createForOfIteratorHelper","s","n","done","t1","f","AugnitoRecorder","_config$serverURL","_config$reconnectAudi","_config$switchToRegul","_config$debounceDelay","config","serverURL","bufferInterval","EOS_Message","debounceDelay","instance","WebsocketURL","streamer","streamerNotStarted","isStreamerStarting","pendingStartStream","_echoCancellation","_noiseSuppression","_autoGainControl","initialiseStreamer","delay","toggleStartStopAudioStream","debounce","bind","togglePauseResumeAudioStream","needsDispose","onStateChangedCallback","onOtherResultCallback","onIntensityCallback","onMicReadyCallback","updateIntentStartStream","_this$streamer","startAudio","IsPaused","resumeAudio","pauseAudio","stopAudio","_startAudio","_this$streamer2","forceStopForPausedState","IsStreaming","_this$streamer3","setTimeout","showLogCallback","dispose","_this$streamer4","isRecording","intensity","errorMessage","hype","recipe","showLog","fn","timeoutId","_len","args","Array","_key","clearTimeout"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testaugnitorecorder4",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "description": "Audio recorder and streamer compatible with any browser",
5
5
  "main": "dist/augnitoRecorder.js",
6
6
  "types": "dist/augnitoRecorder.d.ts",