edge-impulse-linux 1.9.4 → 1.10.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.
- package/build/cli/linux/camera-debug.js +1 -1
- package/build/cli/linux/camera-debug.js.map +1 -1
- package/build/cli/linux/linux-device.d.ts +42 -0
- package/build/cli/linux/linux-device.js +298 -0
- package/build/cli/linux/linux-device.js.map +1 -0
- package/build/cli/linux/linux.js +29 -363
- package/build/cli/linux/linux.js.map +1 -1
- package/build/cli/linux/runner-downloader.d.ts +14 -3
- package/build/cli/linux/runner-downloader.js +59 -8
- package/build/cli/linux/runner-downloader.js.map +1 -1
- package/build/cli/linux/runner-utils.d.ts +9 -0
- package/build/cli/linux/runner-utils.js +283 -0
- package/build/cli/linux/runner-utils.js.map +1 -0
- package/build/cli/linux/runner.js +123 -507
- package/build/cli/linux/runner.js.map +1 -1
- package/build/{cli → cli-common}/aws-iotcore-connector.d.ts +5 -1
- package/build/{cli → cli-common}/aws-iotcore-connector.js +34 -1
- package/build/cli-common/aws-iotcore-connector.js.map +1 -0
- package/build/cli-common/aws-sm-utils.js.map +1 -0
- package/build/cli-common/check-new-version.js.map +1 -0
- package/build/cli-common/config.js.map +1 -0
- package/build/cli-common/get-ips.js.map +1 -0
- package/build/cli-common/init-cli-app.js.map +1 -0
- package/build/{cli → cli-common}/iwebsocket.js.map +1 -1
- package/build/cli-common/make-image.js.map +1 -0
- package/build/{cli/linux → cli-common}/model-monitor.d.ts +4 -4
- package/build/{cli/linux → cli-common}/model-monitor.js +4 -0
- package/build/cli-common/model-monitor.js.map +1 -0
- package/build/{shared/daemon → cli-common}/remote-mgmt-service.d.ts +16 -4
- package/build/{shared/daemon → cli-common}/remote-mgmt-service.js +184 -16
- package/build/cli-common/remote-mgmt-service.js.map +1 -0
- package/build/library/index.d.ts +0 -5
- package/build/library/index.js +1 -6
- package/build/library/index.js.map +1 -1
- package/build/library/sensors/gstreamer.js +12 -2
- package/build/library/sensors/gstreamer.js.map +1 -1
- package/build/library/sensors/sensors-helper.d.ts +12 -0
- package/build/library/sensors/sensors-helper.js +101 -0
- package/build/library/sensors/sensors-helper.js.map +1 -0
- package/build/sdk/studio/sdk/api/projectsApi.d.ts +5 -1
- package/build/sdk/studio/sdk/api/projectsApi.js +5 -1
- package/build/sdk/studio/sdk/api/projectsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/rawDataApi.d.ts +2 -2
- package/build/sdk/studio/sdk/api/rawDataApi.js +2 -2
- package/build/sdk/studio/sdk/api/rawDataApi.js.map +1 -1
- package/build/sdk/studio/sdk/model/aIAction.d.ts +4 -0
- package/build/sdk/studio/sdk/model/aIAction.js +5 -0
- package/build/sdk/studio/sdk/model/aIAction.js.map +1 -1
- package/build/sdk/studio/sdk/model/createPreviewAIActionsJobRequest.d.ts +4 -0
- package/build/sdk/studio/sdk/model/createPreviewAIActionsJobRequest.js +5 -0
- package/build/sdk/studio/sdk/model/createPreviewAIActionsJobRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/download.d.ts +4 -3
- package/build/sdk/studio/sdk/model/download.js +5 -0
- package/build/sdk/studio/sdk/model/download.js.map +1 -1
- package/build/sdk/studio/sdk/model/listVersionsResponse.d.ts +4 -0
- package/build/sdk/studio/sdk/model/listVersionsResponse.js +5 -0
- package/build/sdk/studio/sdk/model/listVersionsResponse.js.map +1 -1
- package/build/sdk/studio/sdk/model/listVersionsResponseAllOf.d.ts +4 -0
- package/build/sdk/studio/sdk/model/listVersionsResponseAllOf.js +5 -0
- package/build/sdk/studio/sdk/model/listVersionsResponseAllOf.js.map +1 -1
- package/build/sdk/studio/sdk/model/models.d.ts +1 -0
- package/build/sdk/studio/sdk/model/models.js +3 -0
- package/build/sdk/studio/sdk/model/models.js.map +1 -1
- package/build/sdk/studio/sdk/model/projectInfoResponseAllOfAcquisitionSettings.d.ts +4 -0
- package/build/sdk/studio/sdk/model/projectInfoResponseAllOfAcquisitionSettings.js +5 -0
- package/build/sdk/studio/sdk/model/projectInfoResponseAllOfAcquisitionSettings.js.map +1 -1
- package/build/sdk/studio/sdk/model/projectVersionRequest.d.ts +4 -0
- package/build/sdk/studio/sdk/model/projectVersionRequest.js +5 -0
- package/build/sdk/studio/sdk/model/projectVersionRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/sample.d.ts +2 -0
- package/build/sdk/studio/sdk/model/sample.js +5 -0
- package/build/sdk/studio/sdk/model/sample.js.map +1 -1
- package/build/sdk/studio/sdk/model/sampleImageDimensions.d.ts +26 -0
- package/build/sdk/studio/sdk/model/sampleImageDimensions.js +34 -0
- package/build/sdk/studio/sdk/model/sampleImageDimensions.js.map +1 -0
- package/build/sdk/studio/sdk/model/updateProjectRequest.d.ts +4 -0
- package/build/sdk/studio/sdk/model/updateProjectRequest.js +5 -0
- package/build/sdk/studio/sdk/model/updateProjectRequest.js.map +1 -1
- package/build/shared/MgmtInterfaceTypes.d.ts +1 -1
- package/build/shared/bounding-box-file-types.js +9 -0
- package/build/shared/bounding-box-file-types.js.map +1 -1
- package/examples/js/collect-custom.js +3 -2
- package/examples/ts/classify-camera-webserver.ts +2 -2
- package/examples/ts/collect-custom.ts +3 -2
- package/package.json +1 -1
- package/build/cli/aws-iotcore-connector.js.map +0 -1
- package/build/cli/aws-sm-utils.js.map +0 -1
- package/build/cli/check-new-version.js.map +0 -1
- package/build/cli/config.js.map +0 -1
- package/build/cli/get-ips.js.map +0 -1
- package/build/cli/init-cli-app.js.map +0 -1
- package/build/cli/linux/model-monitor.js.map +0 -1
- package/build/cli/linux/remote-mgmt-service.d.ts +0 -99
- package/build/cli/linux/remote-mgmt-service.js +0 -343
- package/build/cli/linux/remote-mgmt-service.js.map +0 -1
- package/build/cli/make-image.js.map +0 -1
- package/build/library/get-ips.d.ts +0 -5
- package/build/library/get-ips.js +0 -31
- package/build/library/get-ips.js.map +0 -1
- package/build/shared/daemon/remote-mgmt-service.js.map +0 -1
- /package/build/{cli → cli-common}/aws-sm-utils.d.ts +0 -0
- /package/build/{cli → cli-common}/aws-sm-utils.js +0 -0
- /package/build/{cli → cli-common}/check-new-version.d.ts +0 -0
- /package/build/{cli → cli-common}/check-new-version.js +0 -0
- /package/build/{cli → cli-common}/config.d.ts +0 -0
- /package/build/{cli → cli-common}/config.js +0 -0
- /package/build/{cli → cli-common}/get-ips.d.ts +0 -0
- /package/build/{cli → cli-common}/get-ips.js +0 -0
- /package/build/{cli → cli-common}/init-cli-app.d.ts +0 -0
- /package/build/{cli → cli-common}/init-cli-app.js +0 -0
- /package/build/{cli → cli-common}/iwebsocket.d.ts +0 -0
- /package/build/{cli → cli-common}/iwebsocket.js +0 -0
- /package/build/{cli → cli-common}/make-image.d.ts +0 -0
- /package/build/{cli → cli-common}/make-image.js +0 -0
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
const imagesnap_1 = require("../../library/sensors/imagesnap");
|
|
8
8
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
9
9
|
const gstreamer_1 = require("../../library/sensors/gstreamer");
|
|
10
|
-
const get_ips_1 = require("../../
|
|
10
|
+
const get_ips_1 = require("../../cli-common/get-ips");
|
|
11
11
|
const commander_1 = __importDefault(require("commander"));
|
|
12
12
|
const path_1 = __importDefault(require("path"));
|
|
13
13
|
const fs_1 = __importDefault(require("fs"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera-debug.js","sourceRoot":"","sources":["../../../cli/linux/camera-debug.ts"],"names":[],"mappings":";;;;;;AAEA,+DAA4D;AAC5D,wDAAgC;AAEhC,+DAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"camera-debug.js","sourceRoot":"","sources":["../../../cli/linux/camera-debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import TypedEmitter from 'typed-emitter';
|
|
3
|
+
import { MgmtInterfaceSampleRequestSample, ClientConnectionType } from "../../shared/MgmtInterfaceTypes";
|
|
4
|
+
import { RemoteMgmtDevice, RemoteMgmtDeviceSampleEmitter } from "../../cli-common/remote-mgmt-service";
|
|
5
|
+
import { EdgeImpulseConfig } from "../../cli-common/config";
|
|
6
|
+
import { ICamera } from "../../library/sensors/icamera";
|
|
7
|
+
declare const LinuxDevice_base: new () => TypedEmitter<{
|
|
8
|
+
snapshot: (buffer: Buffer, filename: string) => void;
|
|
9
|
+
}>;
|
|
10
|
+
export declare class LinuxDevice extends LinuxDevice_base implements RemoteMgmtDevice {
|
|
11
|
+
private _camera;
|
|
12
|
+
private _config;
|
|
13
|
+
private _devKeys;
|
|
14
|
+
private _snapshotStreaming;
|
|
15
|
+
private _lastSnapshot;
|
|
16
|
+
private _snapshotMutex;
|
|
17
|
+
private _snapshotId;
|
|
18
|
+
private _snapshotStreamingResolution;
|
|
19
|
+
private _microphoneDisabled;
|
|
20
|
+
private _enableVideo;
|
|
21
|
+
private _sensorVerboseOutput;
|
|
22
|
+
private _audioDeviceName;
|
|
23
|
+
constructor(config: EdgeImpulseConfig, devKeys: {
|
|
24
|
+
apiKey: string;
|
|
25
|
+
hmacKey: string;
|
|
26
|
+
}, noMicrophone: boolean, enableVideo: boolean, sensorVerboseOutput: boolean);
|
|
27
|
+
registerCameraSnapshotHandler(cameraInstance: ICamera): void;
|
|
28
|
+
connected(): boolean;
|
|
29
|
+
getDeviceId(): Promise<string>;
|
|
30
|
+
getDeviceType(): "RASPBERRY_PI" | "NVIDIA_JETSON_NANO" | "EDGE_IMPULSE_LINUX";
|
|
31
|
+
getSensors(): any;
|
|
32
|
+
getConnectionType(): ClientConnectionType;
|
|
33
|
+
supportsSnapshotStreaming(): boolean;
|
|
34
|
+
supportsSnapshotStreamingWhileCapturing(): boolean;
|
|
35
|
+
beforeConnect(): Promise<void>;
|
|
36
|
+
startSnapshotStreaming(resolution: 'high' | 'low'): Promise<void>;
|
|
37
|
+
stopSnapshotStreaming(): Promise<void>;
|
|
38
|
+
sampleRequest(data: MgmtInterfaceSampleRequestSample, ee: RemoteMgmtDeviceSampleEmitter): Promise<void>;
|
|
39
|
+
setAudioDeviceName(deviceName: string): void;
|
|
40
|
+
private buildWavFileBuffer;
|
|
41
|
+
}
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LinuxDevice = void 0;
|
|
7
|
+
const video_recorder_1 = require("../../library/sensors/video-recorder");
|
|
8
|
+
const get_ips_1 = require("../../cli-common/get-ips");
|
|
9
|
+
const tsee_1 = require("tsee");
|
|
10
|
+
const async_mutex_1 = require("async-mutex");
|
|
11
|
+
const sharp_1 = __importDefault(require("sharp"));
|
|
12
|
+
const recorder_1 = require("../../library/sensors/recorder");
|
|
13
|
+
const make_image_1 = require("../../cli-common/make-image");
|
|
14
|
+
const SERIAL_PREFIX = '\x1b[33m[SER]\x1b[0m';
|
|
15
|
+
class LinuxDevice extends tsee_1.EventEmitter {
|
|
16
|
+
constructor(config, devKeys, noMicrophone, enableVideo, sensorVerboseOutput) {
|
|
17
|
+
// eslint-disable-next-line constructor-super
|
|
18
|
+
super();
|
|
19
|
+
this._snapshotStreaming = false;
|
|
20
|
+
this._lastSnapshot = new Date(0);
|
|
21
|
+
this._snapshotMutex = new async_mutex_1.Mutex();
|
|
22
|
+
this._snapshotId = 0;
|
|
23
|
+
this._snapshotStreamingResolution = 'low';
|
|
24
|
+
this._config = config;
|
|
25
|
+
this._devKeys = devKeys;
|
|
26
|
+
this._microphoneDisabled = noMicrophone;
|
|
27
|
+
this._enableVideo = enableVideo;
|
|
28
|
+
this._sensorVerboseOutput = sensorVerboseOutput;
|
|
29
|
+
}
|
|
30
|
+
registerCameraSnapshotHandler(cameraInstance) {
|
|
31
|
+
this._camera = cameraInstance;
|
|
32
|
+
this._camera.on('snapshot', async (buffer, filename) => {
|
|
33
|
+
const id = ++this._snapshotId;
|
|
34
|
+
const release = await this._snapshotMutex.acquire();
|
|
35
|
+
let timeBetweenFrames = this._snapshotStreamingResolution === 'low' ?
|
|
36
|
+
100 : 0;
|
|
37
|
+
// limit to 10 frames a second & no new frames should have come in...
|
|
38
|
+
try {
|
|
39
|
+
if (this._snapshotStreaming &&
|
|
40
|
+
Date.now() - +this._lastSnapshot >= timeBetweenFrames &&
|
|
41
|
+
id === this._snapshotId) {
|
|
42
|
+
if (this._snapshotStreamingResolution === 'low') {
|
|
43
|
+
const jpg = (0, sharp_1.default)(buffer);
|
|
44
|
+
const resized = await jpg.resize(undefined, 96, {
|
|
45
|
+
fastShrinkOnLoad: false
|
|
46
|
+
}).jpeg().toBuffer();
|
|
47
|
+
this.emit('snapshot', resized, filename);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.emit('snapshot', buffer, filename);
|
|
51
|
+
}
|
|
52
|
+
this._lastSnapshot = new Date();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (ex) {
|
|
56
|
+
console.warn('Failed to handle snapshot', ex);
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
release();
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
connected() {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
async getDeviceId() {
|
|
67
|
+
return get_ips_1.ips.length > 0 ? get_ips_1.ips[0].mac : '00:00:00:00:00:00';
|
|
68
|
+
}
|
|
69
|
+
getDeviceType() {
|
|
70
|
+
let id = (get_ips_1.ips.length > 0 ? get_ips_1.ips[0].mac : '00:00:00:00:00:00').toLowerCase();
|
|
71
|
+
if (id.startsWith('dc:a6:32') || id.startsWith('b8:27:eb')) {
|
|
72
|
+
return 'RASPBERRY_PI';
|
|
73
|
+
}
|
|
74
|
+
if (id.startsWith('00:04:4b') || id.startsWith('48:b0:2d')) {
|
|
75
|
+
return 'NVIDIA_JETSON_NANO';
|
|
76
|
+
}
|
|
77
|
+
return 'EDGE_IMPULSE_LINUX';
|
|
78
|
+
}
|
|
79
|
+
getSensors() {
|
|
80
|
+
/* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
|
|
81
|
+
let sensors = [];
|
|
82
|
+
if (!this._microphoneDisabled) {
|
|
83
|
+
sensors.push({
|
|
84
|
+
name: 'Microphone',
|
|
85
|
+
frequencies: [16000],
|
|
86
|
+
maxSampleLengthS: 3600
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (this._camera) {
|
|
90
|
+
const opts = this._camera.getLastOptions();
|
|
91
|
+
const dimensions = opts === null || opts === void 0 ? void 0 : opts.dimensions;
|
|
92
|
+
const str = dimensions ? `(${dimensions.width}x${dimensions.height})` : `640x480`;
|
|
93
|
+
sensors.push({
|
|
94
|
+
name: `Camera (${str})`,
|
|
95
|
+
frequencies: [],
|
|
96
|
+
maxSampleLengthS: 60000
|
|
97
|
+
});
|
|
98
|
+
if (this._enableVideo) {
|
|
99
|
+
sensors.push({
|
|
100
|
+
name: 'Video (1280x720)',
|
|
101
|
+
frequencies: [],
|
|
102
|
+
maxSampleLengthS: 60000
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/* eslint-enable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
|
|
107
|
+
return sensors;
|
|
108
|
+
}
|
|
109
|
+
getConnectionType() {
|
|
110
|
+
return 'ip';
|
|
111
|
+
}
|
|
112
|
+
supportsSnapshotStreaming() {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
supportsSnapshotStreamingWhileCapturing() {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
beforeConnect() {
|
|
119
|
+
return Promise.resolve();
|
|
120
|
+
}
|
|
121
|
+
async startSnapshotStreaming(resolution) {
|
|
122
|
+
this._snapshotStreaming = true;
|
|
123
|
+
this._snapshotStreamingResolution = resolution;
|
|
124
|
+
}
|
|
125
|
+
async stopSnapshotStreaming() {
|
|
126
|
+
this._snapshotStreaming = false;
|
|
127
|
+
}
|
|
128
|
+
async sampleRequest(data, ee) {
|
|
129
|
+
var _a, _b;
|
|
130
|
+
if ((_a = data.sensor) === null || _a === void 0 ? void 0 : _a.startsWith('Camera')) {
|
|
131
|
+
if (!this._camera) {
|
|
132
|
+
throw new Error('Linux daemon was started with --no-camera');
|
|
133
|
+
}
|
|
134
|
+
ee.emit('started');
|
|
135
|
+
let jpg = await new Promise((resolve, reject) => {
|
|
136
|
+
if (!this._camera) {
|
|
137
|
+
return reject('No camera');
|
|
138
|
+
}
|
|
139
|
+
setTimeout(() => {
|
|
140
|
+
reject('Timeout');
|
|
141
|
+
}, 3000);
|
|
142
|
+
this._camera.once('snapshot', buffer => {
|
|
143
|
+
resolve(buffer);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
console.log(SERIAL_PREFIX, 'Uploading sample to', this._config.endpoints.internal.ingestion + data.path + '...');
|
|
147
|
+
ee.emit('uploading');
|
|
148
|
+
await (0, make_image_1.upload)({
|
|
149
|
+
apiKey: this._devKeys.apiKey,
|
|
150
|
+
filename: data.label + '.jpg',
|
|
151
|
+
buffer: jpg,
|
|
152
|
+
allowDuplicates: false,
|
|
153
|
+
category: data.path.indexOf('/training') > -1 ? 'training' : 'testing',
|
|
154
|
+
config: this._config,
|
|
155
|
+
label: { label: data.label, type: 'label' },
|
|
156
|
+
boundingBoxes: undefined,
|
|
157
|
+
metadata: {},
|
|
158
|
+
addDateId: true,
|
|
159
|
+
});
|
|
160
|
+
console.log(SERIAL_PREFIX, 'Sampling finished');
|
|
161
|
+
}
|
|
162
|
+
else if ((_b = data.sensor) === null || _b === void 0 ? void 0 : _b.startsWith('Video')) {
|
|
163
|
+
if (!this._camera) {
|
|
164
|
+
throw new Error('Linux daemon was started with --no-camera');
|
|
165
|
+
}
|
|
166
|
+
console.log(SERIAL_PREFIX, 'Waiting 2 seconds');
|
|
167
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
168
|
+
ee.emit('started');
|
|
169
|
+
// give some time to emit...
|
|
170
|
+
await await new Promise((resolve) => setTimeout(resolve, 10));
|
|
171
|
+
let video = new video_recorder_1.VideoRecorder(this._camera, this._sensorVerboseOutput);
|
|
172
|
+
let videoEe = await video.record(data.length);
|
|
173
|
+
videoEe.on('processing', () => ee.emit('processing'));
|
|
174
|
+
let mp4 = await new Promise((resolve, reject) => {
|
|
175
|
+
if (!this._camera) {
|
|
176
|
+
return reject('No camera');
|
|
177
|
+
}
|
|
178
|
+
videoEe.on('error', err => {
|
|
179
|
+
reject(err);
|
|
180
|
+
});
|
|
181
|
+
videoEe.on('done', buffer => {
|
|
182
|
+
resolve(buffer);
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
console.log(SERIAL_PREFIX, 'Uploading sample to', this._config.endpoints.internal.ingestion + data.path + '...');
|
|
186
|
+
ee.emit('uploading');
|
|
187
|
+
await (0, make_image_1.upload)({
|
|
188
|
+
apiKey: this._devKeys.apiKey,
|
|
189
|
+
filename: data.label + '.mp4',
|
|
190
|
+
buffer: mp4,
|
|
191
|
+
allowDuplicates: false,
|
|
192
|
+
category: data.path.indexOf('/training') > -1 ? 'training' : 'testing',
|
|
193
|
+
config: this._config,
|
|
194
|
+
label: { label: data.label, type: 'label' },
|
|
195
|
+
boundingBoxes: undefined,
|
|
196
|
+
metadata: {},
|
|
197
|
+
addDateId: true,
|
|
198
|
+
});
|
|
199
|
+
console.log(SERIAL_PREFIX, 'Sampling finished');
|
|
200
|
+
}
|
|
201
|
+
else if (data.sensor === 'Microphone') {
|
|
202
|
+
if (this._microphoneDisabled) {
|
|
203
|
+
throw new Error('Linux daemon was started with --no-microphone');
|
|
204
|
+
}
|
|
205
|
+
let now = Date.now();
|
|
206
|
+
const recorder = new recorder_1.AudioRecorder({
|
|
207
|
+
sampleRate: Math.round(1000 / data.interval),
|
|
208
|
+
channels: 1,
|
|
209
|
+
asRaw: true,
|
|
210
|
+
verbose: this._sensorVerboseOutput,
|
|
211
|
+
});
|
|
212
|
+
console.log(SERIAL_PREFIX, 'Waiting 2 seconds');
|
|
213
|
+
const audio = await recorder.start(this._audioDeviceName || '');
|
|
214
|
+
// sleep 2 seconds before starting...
|
|
215
|
+
await new Promise((resolve) => {
|
|
216
|
+
let time = 2000 - (Date.now() - now);
|
|
217
|
+
if (time > 0) {
|
|
218
|
+
setTimeout(resolve, time);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
resolve();
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
console.log(SERIAL_PREFIX, 'Recording audio...');
|
|
225
|
+
ee.emit('started');
|
|
226
|
+
const audioBuffer = await new Promise((resolve) => {
|
|
227
|
+
let audioBuffers = [];
|
|
228
|
+
let totalAudioLength = 0;
|
|
229
|
+
let bytesNeeded = (Math.round(1000 / data.interval) * (data.length / 1000)) * 2;
|
|
230
|
+
const onData = (b) => {
|
|
231
|
+
audioBuffers.push(b);
|
|
232
|
+
totalAudioLength += b.length;
|
|
233
|
+
if (totalAudioLength > bytesNeeded) {
|
|
234
|
+
resolve(Buffer.concat(audioBuffers).slice(0, bytesNeeded));
|
|
235
|
+
audio.ee.off('data', onData);
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
audio.ee.on('data', onData);
|
|
239
|
+
});
|
|
240
|
+
await audio.stop();
|
|
241
|
+
ee.emit('processing');
|
|
242
|
+
let wavFile = this.buildWavFileBuffer(audioBuffer, data.interval);
|
|
243
|
+
console.log(SERIAL_PREFIX, 'Uploading sample to', this._config.endpoints.internal.ingestion + data.path + '...');
|
|
244
|
+
ee.emit('uploading');
|
|
245
|
+
await (0, make_image_1.upload)({
|
|
246
|
+
apiKey: this._devKeys.apiKey,
|
|
247
|
+
filename: data.label + '.wav',
|
|
248
|
+
buffer: wavFile,
|
|
249
|
+
allowDuplicates: false,
|
|
250
|
+
category: data.path.indexOf('/training') > -1 ? 'training' : 'testing',
|
|
251
|
+
config: this._config,
|
|
252
|
+
label: { label: data.label, type: 'label' },
|
|
253
|
+
boundingBoxes: undefined,
|
|
254
|
+
metadata: {},
|
|
255
|
+
addDateId: true,
|
|
256
|
+
});
|
|
257
|
+
console.log(SERIAL_PREFIX, 'Sampling finished');
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
throw new Error('Invalid sensor: ' + data.sensor);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
setAudioDeviceName(deviceName) {
|
|
264
|
+
this._audioDeviceName = deviceName;
|
|
265
|
+
}
|
|
266
|
+
buildWavFileBuffer(data, intervalMs) {
|
|
267
|
+
// let's build a WAV file!
|
|
268
|
+
let wavFreq = 1 / intervalMs * 1000;
|
|
269
|
+
let fileSize = 44 + (data.length);
|
|
270
|
+
let dataSize = (data.length);
|
|
271
|
+
let srBpsC8 = (wavFreq * 16 * 1) / 8;
|
|
272
|
+
let headerArr = new Uint8Array(44);
|
|
273
|
+
let h = [
|
|
274
|
+
0x52, 0x49, 0x46, 0x46,
|
|
275
|
+
// eslint-disable-next-line no-bitwise
|
|
276
|
+
fileSize & 0xff, (fileSize >> 8) & 0xff, (fileSize >> 16) & 0xff, (fileSize >> 24) & 0xff,
|
|
277
|
+
0x57, 0x41, 0x56, 0x45,
|
|
278
|
+
0x66, 0x6d, 0x74, 0x20,
|
|
279
|
+
0x10, 0x00, 0x00, 0x00,
|
|
280
|
+
0x01, 0x00,
|
|
281
|
+
0x01, 0x00,
|
|
282
|
+
// eslint-disable-next-line no-bitwise
|
|
283
|
+
wavFreq & 0xff, (wavFreq >> 8) & 0xff, (wavFreq >> 16) & 0xff, (wavFreq >> 24) & 0xff,
|
|
284
|
+
// eslint-disable-next-line no-bitwise
|
|
285
|
+
srBpsC8 & 0xff, (srBpsC8 >> 8) & 0xff, (srBpsC8 >> 16) & 0xff, (srBpsC8 >> 24) & 0xff,
|
|
286
|
+
0x02, 0x00, 0x10, 0x00,
|
|
287
|
+
0x64, 0x61, 0x74, 0x61,
|
|
288
|
+
// eslint-disable-next-line no-bitwise
|
|
289
|
+
dataSize & 0xff, (dataSize >> 8) & 0xff, (dataSize >> 16) & 0xff, (dataSize >> 24) & 0xff,
|
|
290
|
+
];
|
|
291
|
+
for (let hx = 0; hx < 44; hx++) {
|
|
292
|
+
headerArr[hx] = h[hx];
|
|
293
|
+
}
|
|
294
|
+
return Buffer.concat([Buffer.from(headerArr), data]);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
exports.LinuxDevice = LinuxDevice;
|
|
298
|
+
//# sourceMappingURL=linux-device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linux-device.js","sourceRoot":"","sources":["../../../cli/linux/linux-device.ts"],"names":[],"mappings":"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"}
|