edge-impulse-linux 1.15.6 → 1.16.0

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.
Files changed (35) hide show
  1. package/build/cli/linux/linux.js +17 -8
  2. package/build/cli/linux/linux.js.map +1 -1
  3. package/build/cli/linux/runner-utils.d.ts +7 -1
  4. package/build/cli/linux/runner-utils.js +157 -21
  5. package/build/cli/linux/runner-utils.js.map +1 -1
  6. package/build/cli/linux/runner.js +37 -9
  7. package/build/cli/linux/runner.js.map +1 -1
  8. package/build/cli/linux/webserver/public/webserver.js +5 -1
  9. package/build/cli/linux/webserver/public/webserver.js.map +1 -1
  10. package/build/cli/linux/webserver/views/index.d.ts +4 -0
  11. package/{cli/linux/webserver/public/index.html → build/cli/linux/webserver/views/index.js} +32 -7
  12. package/build/cli/linux/webserver/views/index.js.map +1 -0
  13. package/build/library/sensors/gstreamer.js +1 -1
  14. package/build/library/sensors/gstreamer.js.map +1 -1
  15. package/build/library/sensors/sensors-helper.d.ts +6 -2
  16. package/build/library/sensors/sensors-helper.js +47 -5
  17. package/build/library/sensors/sensors-helper.js.map +1 -1
  18. package/build/sdk/studio/sdk/api/organizationDataApi.d.ts +1 -1
  19. package/build/sdk/studio/sdk/api/organizationDataApi.js +1 -1
  20. package/build/sdk/studio/sdk/model/dSPInfo.d.ts +6 -0
  21. package/build/sdk/studio/sdk/model/dSPInfo.js +10 -0
  22. package/build/sdk/studio/sdk/model/dSPInfo.js.map +1 -1
  23. package/build/sdk/studio/sdk/model/dSPNormalizeData.d.ts +13 -0
  24. package/build/sdk/studio/sdk/model/dSPNormalizeData.js +16 -0
  25. package/build/sdk/studio/sdk/model/dSPNormalizeData.js.map +1 -0
  26. package/build/sdk/studio/sdk/model/generateFeaturesRequest.d.ts +2 -0
  27. package/build/sdk/studio/sdk/model/generateFeaturesRequest.js +5 -0
  28. package/build/sdk/studio/sdk/model/generateFeaturesRequest.js.map +1 -1
  29. package/build/sdk/studio/sdk/model/models.d.ts +1 -0
  30. package/build/sdk/studio/sdk/model/models.js +2 -0
  31. package/build/sdk/studio/sdk/model/models.js.map +1 -1
  32. package/cli/linux/webserver/public/assets/mobileclient.css +28 -0
  33. package/cli/linux/webserver/public/webserver.js +6 -1
  34. package/package.json +1 -1
  35. package/test/gstreamer.test.ts +12 -12
@@ -29,6 +29,10 @@ commander_1.default
29
29
  .option('--silent', `Run in silent mode, don't prompt for credentials`)
30
30
  .option('--dev', 'List development servers, alternatively you can use the EI_HOST environmental variable ' +
31
31
  'to specify the Edge Impulse instance.')
32
+ .option('--camera <camera>', 'Which camera to use (either the name, or the device address - e.g. /dev/video0). ' +
33
+ 'If this argument is omitted, and multiple cameras are found, a CLI selector is shown.')
34
+ .option('--microphone <microphone>', 'Which microphone to use (either the name, or the device address). ' +
35
+ 'If this argument is omitted, and multiple microphones are found, a CLI selector is shown.')
32
36
  .option('--verbose', 'Enable debug logs')
33
37
  .option('--greengrass', 'Enable AWS IoT greengrass integration mode')
34
38
  .allowUnknownOption(true)
@@ -49,6 +53,8 @@ const dimensions = commander_1.default.width && commander_1.default.height ? {
49
53
  width: Number(commander_1.default.width),
50
54
  height: Number(commander_1.default.height)
51
55
  } : undefined;
56
+ const cameraArgv = commander_1.default.camera;
57
+ const microphoneArgv = commander_1.default.microphone;
52
58
  if ((commander_1.default.width && !commander_1.default.height) || (!commander_1.default.width && commander_1.default.height)) {
53
59
  console.error('--width and --height need to either be both specified or both omitted');
54
60
  process.exit(1);
@@ -126,24 +132,27 @@ let isExiting = false;
126
132
  process.on('SIGHUP', onSignal);
127
133
  process.on('SIGINT', onSignal);
128
134
  if (!noMicrophone) {
129
- let audioDeviceName = await configFactory.getAudio();
135
+ let audioDeviceName = '';
130
136
  try {
131
- audioDeviceName = await (0, sensors_helper_1.initMicrophone)(audioDeviceName);
137
+ audioDeviceName = await (0, sensors_helper_1.initMicrophone)({
138
+ audioDeviceNameInConfig: await configFactory.getAudio(),
139
+ audioNameArgv: microphoneArgv,
140
+ });
132
141
  }
133
- catch (ex) {
134
- console.warn(SERIAL_PREFIX, 'Could not find any microphones, ' +
135
- 'run this command with --disable-microphone to skip selection');
136
- audioDeviceName = '';
142
+ catch (ex2) {
143
+ const ex = ex2;
144
+ console.warn(SERIAL_PREFIX, (ex.message || ex.toString()));
145
+ process.exit(1);
137
146
  }
138
147
  await configFactory.storeAudio(audioDeviceName);
139
148
  linuxDevice.setAudioDeviceName(audioDeviceName);
140
149
  console.log(SERIAL_PREFIX, 'Using microphone', audioDeviceName);
141
150
  }
142
151
  if (!noCamera) {
143
- const storedCamera = await configFactory.getCamera();
144
152
  camera = await (0, sensors_helper_1.initCamera)({
145
153
  cameraType: cameraType,
146
- cameraDeviceName: storedCamera,
154
+ cameraDeviceNameInConfig: await configFactory.getCamera(),
155
+ cameraNameArgv: cameraArgv,
147
156
  dimensions: dimensions,
148
157
  gstLaunchArgs: gstLaunchArgsArgv,
149
158
  verboseOutput: verboseArgv,
@@ -1 +1 @@
1
- {"version":3,"file":"linux.js","sourceRoot":"","sources":["../../../cli/linux/linux.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linux.js","sourceRoot":"","sources":["../../../cli/linux/linux.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,13 @@ export declare function listTargets(projectId: number, api: EdgeImpulseApi): Pro
6
6
  export declare function audioClassifierHelloMsg(model: ModelInformation): void;
7
7
  export declare function imageClassifierHelloMsg(model: ModelInformation): void;
8
8
  export declare function printThresholds(model: ModelInformation): void;
9
- export declare function startApiServer(model: ModelInformation, runner: LinuxImpulseRunner, projectStudioUrl: string, port: number): Promise<void>;
9
+ export declare function startApiServer(opts: {
10
+ model: ModelInformation;
11
+ runner: LinuxImpulseRunner;
12
+ projectStudioUrl: string;
13
+ port: number;
14
+ printIncomingInferenceReqs: boolean;
15
+ }): Promise<void>;
10
16
  export declare function startWebServer(opts: {
11
17
  model: ModelInformation;
12
18
  camera: ICamera;
@@ -15,6 +15,9 @@ const image_classifier_1 = require("../../library/classifier/image-classifier");
15
15
  const path_1 = __importDefault(require("path"));
16
16
  const socket_io_1 = __importDefault(require("socket.io"));
17
17
  const sharp_1 = __importDefault(require("sharp"));
18
+ const ws_1 = __importDefault(require("ws"));
19
+ const url_1 = __importDefault(require("url"));
20
+ const views_1 = require("./webserver/views");
18
21
  const RUNNER_PREFIX = '\x1b[33m[RUN]\x1b[0m';
19
22
  async function listTargets(projectId, api) {
20
23
  const targets = await api.deployment.listDeploymentTargetsForProjectDataSources(projectId, {});
@@ -71,7 +74,8 @@ function printThresholds(model) {
71
74
  }
72
75
  }
73
76
  exports.printThresholds = printThresholds;
74
- function startApiServer(model, runner, projectStudioUrl, port) {
77
+ function startApiServer(opts) {
78
+ const { model, runner, projectStudioUrl, port, printIncomingInferenceReqs } = opts;
75
79
  const app = express();
76
80
  app.disable('x-powered-by');
77
81
  app.use(express.json({ limit: '150mb' }));
@@ -172,7 +176,9 @@ function startApiServer(model, runner, projectStudioUrl, port) {
172
176
  res.header('Content-Type', 'text/plain');
173
177
  return res.end(ex.message || ex.toString() + '\n');
174
178
  }
175
- console.log(RUNNER_PREFIX, 'Incoming inference request (/api/features)');
179
+ if (printIncomingInferenceReqs) {
180
+ console.log(RUNNER_PREFIX, 'Incoming inference request (/api/features)');
181
+ }
176
182
  let response = await runner.classify(body.features);
177
183
  res.header('Content-Type', 'application/json');
178
184
  return res.end(JSON.stringify(response, null, 4) + '\n');
@@ -196,8 +202,10 @@ function startApiServer(model, runner, projectStudioUrl, port) {
196
202
  if (!file) {
197
203
  throw new Error('Missing "file" in the multipart/form-data');
198
204
  }
199
- console.log(RUNNER_PREFIX, 'Incoming inference request (/api/image) for ' +
200
- (file.originalname || 'a file with size ' + file.size + ' bytes'));
205
+ if (printIncomingInferenceReqs) {
206
+ console.log(RUNNER_PREFIX, 'Incoming inference request (/api/image) for ' +
207
+ (file.originalname || 'a file with size ' + file.size + ' bytes'));
208
+ }
201
209
  resized = (await image_classifier_1.ImageClassifier.resizeImage(model, file.buffer));
202
210
  }
203
211
  catch (ex2) {
@@ -290,10 +298,31 @@ function startApiServer(model, runner, projectStudioUrl, port) {
290
298
  exports.startApiServer = startApiServer;
291
299
  function startWebServer(opts) {
292
300
  const { model, camera, imgClassifier, verbose } = opts;
301
+ const publicFolder = path_1.default.join(__dirname, '..', '..', '..', 'cli', 'linux', 'webserver', 'public');
293
302
  const app = express();
294
- app.use(express.static(path_1.default.join(__dirname, '..', '..', '..', 'cli', 'linux', 'webserver', 'public')));
303
+ app.get('/', (0, asyncMiddleware_1.asyncMiddleware)(async (req, res) => {
304
+ const view = (0, views_1.renderIndexView)({
305
+ isEmbedView: false,
306
+ });
307
+ res.status(200);
308
+ res.header('Content-Type', 'text/html');
309
+ res.end(view.toString());
310
+ }));
311
+ app.get('/embed', (0, asyncMiddleware_1.asyncMiddleware)(async (req, res) => {
312
+ const view = (0, views_1.renderIndexView)({
313
+ isEmbedView: true,
314
+ });
315
+ res.status(200);
316
+ res.header('Content-Type', 'text/html');
317
+ res.end(view.toString());
318
+ }));
319
+ app.use(express.static(publicFolder));
295
320
  const server = new http_1.default.Server(app);
296
321
  const io = (0, socket_io_1.default)(server);
322
+ const wss = new ws_1.default.Server({
323
+ noServer: true,
324
+ });
325
+ const websocketsToSendPreviews = new Set();
297
326
  // you can also get the actual image being classified from 'imageClassifier.on("result")',
298
327
  // but then you're limited by the inference speed.
299
328
  // here we get a direct feed from the camera so we guarantee the fps that we set earlier.
@@ -319,9 +348,16 @@ function startWebServer(opts) {
319
348
  fastShrinkOnLoad: false
320
349
  }).toColourspace('b-w');
321
350
  }
351
+ const imgBase64 = 'data:image/jpeg;base64,' + (await img.jpeg().toBuffer()).toString('base64');
322
352
  io.emit('image', {
323
- img: 'data:image/jpeg;base64,' + (await img.jpeg().toBuffer()).toString('base64')
353
+ img: imgBase64,
324
354
  });
355
+ for (const wsClient of websocketsToSendPreviews) {
356
+ wsClient.send(JSON.stringify({
357
+ type: 'camera-preview',
358
+ image: imgBase64,
359
+ }));
360
+ }
325
361
  nextFrame = Date.now() + 50;
326
362
  }
327
363
  catch (ex2) {
@@ -342,33 +378,133 @@ function startWebServer(opts) {
342
378
  timeMs: timeMs,
343
379
  additionalInfo: result.info,
344
380
  });
381
+ for (const client of wss.clients) {
382
+ client.send(JSON.stringify({
383
+ type: 'classification',
384
+ result: result.result,
385
+ timeMs: timeMs,
386
+ additionalInfo: result.info,
387
+ }));
388
+ }
345
389
  });
390
+ const onThresholdOverride = async (ev) => {
391
+ try {
392
+ process.stdout.write(`Updating threshold for block ID ${ev.id}, key ${ev.key} to: ${ev.value}... `);
393
+ if (typeof ev.id !== 'number') {
394
+ throw new Error(`Invalid value for "id", should be a number (type: ${typeof ev.id})`);
395
+ }
396
+ if (typeof ev.key !== 'string' || ev.key === '') {
397
+ throw new Error(`Invalid value for "key", should be a string (type: ${typeof ev.key})`);
398
+ }
399
+ if (typeof ev.value !== 'number') {
400
+ throw new Error(`Invalid value for "value", should be a number (type: ${typeof ev.value})`);
401
+ }
402
+ let thresholdObj = (model.modelParameters.thresholds || []).find(x => x.id === ev.id);
403
+ if (!thresholdObj) {
404
+ throw new Error(`Cannot find threshold with ID ` + ev.id);
405
+ }
406
+ const thresholdKeys = Object.keys(thresholdObj).filter(x => x !== 'id' && x !== 'type');
407
+ if (thresholdKeys.indexOf(ev.key) === -1) {
408
+ throw new Error(`Threshold key "${ev.key}" not found (valid keys: [ ${thresholdKeys.map(x => `"${x}"`).join(', ')} ])`);
409
+ }
410
+ let obj = {
411
+ id: ev.id,
412
+ };
413
+ obj.type = thresholdObj.type;
414
+ obj[ev.key] = ev.value;
415
+ await imgClassifier.getRunner().setLearnBlockThreshold(obj);
416
+ thresholdObj[ev.key] = ev.value;
417
+ console.log(`OK`);
418
+ }
419
+ catch (ex2) {
420
+ const ex = ex2;
421
+ console.log('Failed to set threshold:', ex);
422
+ throw new Error(`Failed to set threshold "${ev.key}" (block ID: ${ev.id}): ` + (ex.message || ex.toString()));
423
+ }
424
+ };
346
425
  io.on('connection', socket => {
347
426
  socket.emit('hello', {
348
427
  projectName: model.project.owner + ' / ' + model.project.name,
349
428
  thresholds: model.modelParameters.thresholds,
350
429
  });
351
- socket.on('threshold-override', async (ev) => {
430
+ socket.on('threshold-override', (ev) => {
352
431
  try {
353
- process.stdout.write(`Updating threshold for block ID ${ev.id}, key ${ev.key} to: ${ev.value}... `);
354
- let thresholdObj = (model.modelParameters.thresholds || []).find(x => x.id === ev.id);
355
- if (!thresholdObj) {
356
- throw new Error(`Cannot find threshold with ID ` + ev.id);
357
- }
358
- let obj = {
359
- id: ev.id,
360
- };
361
- obj.type = thresholdObj.type;
362
- obj[ev.key] = ev.value;
363
- await imgClassifier.getRunner().setLearnBlockThreshold(obj);
364
- thresholdObj[ev.key] = ev.value;
365
- console.log(`OK`);
432
+ onThresholdOverride(ev);
366
433
  }
367
434
  catch (ex) {
368
- console.log('Failed to set threshold:', ex);
435
+ // noop
369
436
  }
370
437
  });
371
438
  });
439
+ wss.on('connection', (websocket) => {
440
+ websocket.send(JSON.stringify({
441
+ type: 'hello',
442
+ ...model,
443
+ }));
444
+ websocket.on('message', async (msg) => {
445
+ let body;
446
+ let messageId;
447
+ try {
448
+ if (typeof msg !== 'string') {
449
+ throw new Error(`Can only handle messages of type "string"`);
450
+ }
451
+ body = JSON.parse(msg.toString());
452
+ messageId = body.messageId;
453
+ if (body.type === 'threshold-override') {
454
+ await onThresholdOverride({
455
+ id: body.id,
456
+ key: body.key,
457
+ value: body.value,
458
+ });
459
+ }
460
+ else if (body.type === 'toggle-camera-preview' ||
461
+ body.type === 'set-camera-preview') {
462
+ if (typeof body.enabled !== 'boolean') {
463
+ throw new Error(`Invalid value for "enabled", should be a boolean (type: ${typeof body.enabled})`);
464
+ }
465
+ if (body.enabled) {
466
+ websocketsToSendPreviews.add(websocket);
467
+ }
468
+ else {
469
+ websocketsToSendPreviews.delete(websocket);
470
+ }
471
+ }
472
+ else {
473
+ throw new Error(`Invalid "type" (${body.type})`);
474
+ }
475
+ websocket.send(JSON.stringify({
476
+ messageId: messageId,
477
+ type: 'handling-message-success',
478
+ message: msg,
479
+ }));
480
+ }
481
+ catch (ex2) {
482
+ const ex = ex2;
483
+ websocket.send(JSON.stringify({
484
+ messageId: messageId,
485
+ type: 'handling-message-error',
486
+ message: msg,
487
+ error: ex.message || ex.toString(),
488
+ }));
489
+ return;
490
+ }
491
+ });
492
+ websocket.on('close', () => {
493
+ websocketsToSendPreviews.delete(websocket);
494
+ });
495
+ });
496
+ server.on('upgrade', (request, socket, head) => {
497
+ const { pathname } = url_1.default.parse(request.url || '');
498
+ if (pathname === '/') {
499
+ // Only handle /ws upgrades with ws
500
+ wss.handleUpgrade(request, socket, head, (newWs) => {
501
+ wss.emit('connection', newWs, request);
502
+ });
503
+ }
504
+ else {
505
+ // socket.io will handle this
506
+ }
507
+ });
372
508
  return new Promise((resolve) => {
373
509
  server.listen(Number(process.env.PORT) || 4912, process.env.HOST || '0.0.0.0', async () => {
374
510
  resolve((Number(process.env.PORT) || 4912));
@@ -1 +1 @@
1
- {"version":3,"file":"runner-utils.js","sourceRoot":"","sources":["../../../cli/linux/runner-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner-utils.js","sourceRoot":"","sources":["../../../cli/linux/runner-utils.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,12 @@ commander_1.default
86
86
  .option('--dont-print-predictions', 'If set, suppresses the printing of predictions')
87
87
  .option('--thresholds <values>', 'Override model thresholds. E.g. --thresholds 4.min_anomaly_score=35 overrides the min. anomaly score for block ID 4 to 35.' +
88
88
  'The current thresholds are printed on startup.')
89
+ .option('--mode <mode>', 'Either: "streaming" (runs on a camera/audio stream and outputs a live inference server) or "http-server" (opens an HTTP server for inference on-demand). ' +
90
+ 'When passing --run-http-server XXX in, the mode will always default to "http-server", in all other cases the mode defaults to "streaming".')
91
+ .option('--camera <camera>', 'Which camera to use (either the name, or the device address - e.g. /dev/video0). ' +
92
+ 'If this argument is omitted, and multiple cameras are found, a CLI selector is shown.')
93
+ .option('--microphone <microphone>', 'Which microphone to use (either the name, or the device address). ' +
94
+ 'If this argument is omitted, and multiple microphones are found, a CLI selector is shown.')
89
95
  .option('--verbose', 'Enable debug logs')
90
96
  .allowUnknownOption(true)
91
97
  .parse(process.argv);
@@ -116,10 +122,16 @@ const monitorSummaryIntervalArgv = monitorSummaryIntervalStr && !isNaN(Number(mo
116
122
  : undefined;
117
123
  const listTargetsArgv = !!commander_1.default.listTargets;
118
124
  const gstLaunchArgsArgv = commander_1.default.gstLaunchArgs;
119
- const runHttpServerPort = commander_1.default.runHttpServer ? Number(commander_1.default.runHttpServer) : undefined;
125
+ let runHttpServerPort = commander_1.default.runHttpServer ? Number(commander_1.default.runHttpServer) : undefined;
120
126
  const enableVideo = (process.env.PROPHESEE_CAM === '1') || (process.env.ENABLE_VIDEO === '1');
121
127
  const dontPrintPredictionsArgv = !!commander_1.default.dontPrintPredictions;
122
128
  const thresholdsArgv = commander_1.default.thresholds;
129
+ const cameraArgv = commander_1.default.camera;
130
+ const microphoneArgv = commander_1.default.microphone;
131
+ let modeArgv = commander_1.default.mode;
132
+ if (modeArgv === 'http-server' && typeof runHttpServerPort === 'undefined') {
133
+ runHttpServerPort = 1337;
134
+ }
123
135
  process.on('warning', e => console.warn(e.stack));
124
136
  const cliOptions = {
125
137
  appName: 'Edge Impulse Linux runner',
@@ -177,10 +189,10 @@ async function startCamera(cameraType, inferenceDimensions) {
177
189
  if (!configFactory) {
178
190
  throw new Error('No config factory');
179
191
  }
180
- let cameraDevicedName = await configFactory.getCamera();
181
192
  let camera = await (0, sensors_helper_1.initCamera)({
182
193
  cameraType: cameraType,
183
- cameraDeviceName: cameraDevicedName,
194
+ cameraDeviceNameInConfig: await configFactory.getCamera(),
195
+ cameraNameArgv: cameraArgv,
184
196
  dimensions: undefined,
185
197
  gstLaunchArgs: gstLaunchArgsArgv,
186
198
  verboseOutput: verboseArgv,
@@ -276,6 +288,9 @@ async function startCamera(cameraType, inferenceDimensions) {
276
288
  if (gstLaunchArgsArgv && forceResizeModeArgv) {
277
289
  console.log(RUNNER_PREFIX, `WARN: --force-resize-mode is ignored when --gst-launch-args is passed in`);
278
290
  }
291
+ if (modeArgv === 'streaming' && typeof runHttpServerPort === 'number') {
292
+ throw new Error('Cannot combine "--mode streaming" with --run-http-server');
293
+ }
279
294
  // any of this arguments implies online mode, so we need to login to the studio or get the API key
280
295
  const connectionRequired = monitorArgv ||
281
296
  modelFileArgv === undefined ||
@@ -689,7 +704,13 @@ async function startCamera(cameraType, inferenceDimensions) {
689
704
  if (!projectStudioUrl) {
690
705
  projectStudioUrl = 'https://studio.edgeimpulse.com/studio/' + model.project.id;
691
706
  }
692
- await (0, runner_utils_1.startApiServer)(model, runner, projectStudioUrl, runHttpServerPort);
707
+ await (0, runner_utils_1.startApiServer)({
708
+ model,
709
+ runner,
710
+ projectStudioUrl,
711
+ port: runHttpServerPort,
712
+ printIncomingInferenceReqs: dontPrintPredictionsArgv ? false : true,
713
+ });
693
714
  console.log(RUNNER_PREFIX, '');
694
715
  console.log(RUNNER_PREFIX, `HTTP Server now running at http://${(get_ips_1.ips.length > 0 ? get_ips_1.ips[0].address : 'localhost')}:${runHttpServerPort}`);
695
716
  console.log(RUNNER_PREFIX, '');
@@ -700,13 +721,17 @@ async function startCamera(cameraType, inferenceDimensions) {
700
721
  if (enableCameraArgv) {
701
722
  await startCamera(cameraType, undefined);
702
723
  }
703
- let audioDeviceName = await configFactory.getAudio();
724
+ let audioDeviceName = '';
704
725
  try {
705
- audioDeviceName = await (0, sensors_helper_1.initMicrophone)(audioDeviceName);
726
+ audioDeviceName = await (0, sensors_helper_1.initMicrophone)({
727
+ audioDeviceNameInConfig: await configFactory.getAudio(),
728
+ audioNameArgv: microphoneArgv,
729
+ });
706
730
  }
707
- catch (ex) {
708
- console.warn(RUNNER_PREFIX, 'Could not find any microphones');
709
- audioDeviceName = '';
731
+ catch (ex2) {
732
+ const ex = ex2;
733
+ console.warn(RUNNER_PREFIX, (ex.message || ex.toString()));
734
+ process.exit(1);
710
735
  }
711
736
  await configFactory.storeAudio(audioDeviceName);
712
737
  console.log(RUNNER_PREFIX, 'Using microphone ' + audioDeviceName);
@@ -785,6 +810,9 @@ async function startCamera(cameraType, inferenceDimensions) {
785
810
  console.log('Want to see a feed of the camera and live classification in your browser? ' +
786
811
  'Go to http://' + (get_ips_1.ips.length > 0 ? get_ips_1.ips[0].address : 'localhost') + ':' + webserverPort);
787
812
  console.log('');
813
+ console.log('Want to use predictions in your application? ' +
814
+ 'Open a websocket to ws://' + (get_ips_1.ips.length > 0 ? get_ips_1.ips[0].address : 'localhost') + ':' + webserverPort);
815
+ console.log('');
788
816
  imageClassifier.on('result', async (ev, timeMs, imgAsJpg) => {
789
817
  // AWS Integration
790
818
  let awsResult;