@picovoice/eagle-web 1.0.0 → 3.0.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.
@@ -1,167 +1,138 @@
1
- /*
2
- Copyright 2023 Picovoice Inc.
3
- You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE"
4
- file accompanying this source.
5
- Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
6
- an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
7
- specific language governing permissions and limitations under the License.
8
- */
9
-
10
- /// <reference no-default-lib="false"/>
11
- /// <reference lib="webworker" />
12
-
13
- import { Eagle } from './eagle';
14
- import {
15
- EagleWorkerProcessRequest,
16
- EagleWorkerInitRequest,
17
- EagleWorkerRequest,
18
- PvStatus,
19
- } from './types';
20
- import { EagleError } from "./eagle_errors";
21
-
22
- let eagle: Eagle | null = null;
23
-
24
- const initRequest = async (request: EagleWorkerInitRequest): Promise<any> => {
25
- if (eagle !== null) {
26
- return {
27
- command: 'error',
28
- status: PvStatus.INVALID_STATE,
29
- shortMessage: 'Eagle has already been initialized',
30
- };
31
- }
32
- try {
33
- Eagle.setWasm(request.wasm);
34
- Eagle.setWasmSimd(request.wasmSimd);
35
- Eagle.setSdk(request.sdk);
36
- eagle = await Eagle._init(
37
- request.accessKey,
38
- request.modelPath,
39
- request.speakerProfiles
40
- );
41
- return {
42
- command: 'ok',
43
- frameLength: eagle.frameLength,
44
- sampleRate: eagle.sampleRate,
45
- version: eagle.version,
46
- };
47
- } catch (e: any) {
48
- if (e instanceof EagleError) {
49
- return {
50
- command: 'error',
51
- status: e.status,
52
- shortMessage: e.shortMessage,
53
- messageStack: e.messageStack
54
- };
55
- } else {
56
- return {
57
- command: 'error',
58
- status: PvStatus.RUNTIME_ERROR,
59
- shortMessage: e.message
60
- };
61
- }
62
- }
63
- };
64
-
65
- const processRequest = async (
66
- request: EagleWorkerProcessRequest
67
- ): Promise<any> => {
68
- if (eagle === null) {
69
- return {
70
- command: 'error',
71
- status: PvStatus.INVALID_STATE,
72
- shortMessage: 'Eagle has not been initialized',
73
- };
74
- }
75
- try {
76
- const scores = await eagle.process(request.inputFrame);
77
- return {
78
- command: 'ok',
79
- scores,
80
- };
81
- } catch (e: any) {
82
- if (e instanceof EagleError) {
83
- return {
84
- command: 'error',
85
- status: e.status,
86
- shortMessage: e.shortMessage,
87
- messageStack: e.messageStack
88
- };
89
- } else {
90
- return {
91
- command: 'error',
92
- status: PvStatus.RUNTIME_ERROR,
93
- shortMessage: e.message
94
- };
95
- }
96
- }
97
- };
98
-
99
- const resetRequest = async (): Promise<any> => {
100
- if (eagle === null) {
101
- return {
102
- command: 'error',
103
- status: PvStatus.INVALID_STATE,
104
- shortMessage: 'Eagle has not been initialized',
105
- };
106
- }
107
- try {
108
- await eagle.reset();
109
- return {
110
- command: 'ok',
111
- };
112
- } catch (e: any) {
113
- if (e instanceof EagleError) {
114
- return {
115
- command: 'error',
116
- status: e.status,
117
- shortMessage: e.shortMessage,
118
- messageStack: e.messageStack
119
- };
120
- } else {
121
- return {
122
- command: 'error',
123
- status: PvStatus.RUNTIME_ERROR,
124
- shortMessage: e.message
125
- };
126
- }
127
- }
128
- };
129
-
130
- const releaseRequest = async (): Promise<any> => {
131
- if (eagle !== null) {
132
- await eagle.release();
133
- eagle = null;
134
- close();
135
- }
136
- return {
137
- command: 'ok',
138
- };
139
- };
140
-
141
- /**
142
- * Eagle worker handler.
143
- */
144
- self.onmessage = async function (
145
- event: MessageEvent<EagleWorkerRequest>
146
- ): Promise<void> {
147
- switch (event.data.command) {
148
- case 'init':
149
- self.postMessage(await initRequest(event.data));
150
- break;
151
- case 'process':
152
- self.postMessage(await processRequest(event.data));
153
- break;
154
- case 'reset':
155
- self.postMessage(await resetRequest());
156
- break;
157
- case 'release':
158
- self.postMessage(await releaseRequest());
159
- break;
160
- default:
161
- self.postMessage({
162
- command: 'failed',
163
- // @ts-ignore
164
- message: `Unrecognized command: ${event.data.command}`,
165
- });
166
- }
167
- };
1
+ /*
2
+ Copyright 2023-2026 Picovoice Inc.
3
+ You may not use this file except in compliance with the license. A copy of the license is located in the "LICENSE"
4
+ file accompanying this source.
5
+ Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
6
+ an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
7
+ specific language governing permissions and limitations under the License.
8
+ */
9
+
10
+ /// <reference no-default-lib="false"/>
11
+ /// <reference lib="webworker" />
12
+
13
+ import { Eagle } from './eagle';
14
+ import {
15
+ EagleWorkerProcessRequest,
16
+ EagleWorkerInitRequest,
17
+ EagleWorkerRequest,
18
+ PvStatus,
19
+ } from './types';
20
+ import { EagleError } from "./eagle_errors";
21
+
22
+ let eagle: Eagle | null = null;
23
+
24
+ const initRequest = async (request: EagleWorkerInitRequest): Promise<any> => {
25
+ if (eagle !== null) {
26
+ return {
27
+ command: 'error',
28
+ status: PvStatus.INVALID_STATE,
29
+ shortMessage: 'Eagle has already been initialized',
30
+ };
31
+ }
32
+ try {
33
+ Eagle.setWasmSimd(request.wasmSimd);
34
+ Eagle.setWasmSimdLib(request.wasmSimdLib);
35
+ Eagle.setWasmPThread(request.wasmPThread);
36
+ Eagle.setWasmPThreadLib(request.wasmPThreadLib);
37
+ Eagle.setSdk(request.sdk);
38
+ eagle = await Eagle._init(
39
+ request.accessKey,
40
+ request.modelPath,
41
+ request.options
42
+ );
43
+ return {
44
+ command: 'ok',
45
+ minProcessSamples: eagle.minProcessSamples,
46
+ sampleRate: eagle.sampleRate,
47
+ version: eagle.version,
48
+ };
49
+ } catch (e: any) {
50
+ if (e instanceof EagleError) {
51
+ return {
52
+ command: 'error',
53
+ status: e.status,
54
+ shortMessage: e.shortMessage,
55
+ messageStack: e.messageStack
56
+ };
57
+ } else {
58
+ return {
59
+ command: 'error',
60
+ status: PvStatus.RUNTIME_ERROR,
61
+ shortMessage: e.message
62
+ };
63
+ }
64
+ }
65
+ };
66
+
67
+ const processRequest = async (
68
+ request: EagleWorkerProcessRequest
69
+ ): Promise<any> => {
70
+ if (eagle === null) {
71
+ return {
72
+ command: 'error',
73
+ status: PvStatus.INVALID_STATE,
74
+ shortMessage: 'Eagle has not been initialized',
75
+ };
76
+ }
77
+ try {
78
+ const scores = await eagle.process(
79
+ request.inputFrame,
80
+ request.speakerProfiles
81
+ );
82
+ return {
83
+ command: 'ok',
84
+ scores,
85
+ };
86
+ } catch (e: any) {
87
+ if (e instanceof EagleError) {
88
+ return {
89
+ command: 'error',
90
+ status: e.status,
91
+ shortMessage: e.shortMessage,
92
+ messageStack: e.messageStack
93
+ };
94
+ } else {
95
+ return {
96
+ command: 'error',
97
+ status: PvStatus.RUNTIME_ERROR,
98
+ shortMessage: e.message
99
+ };
100
+ }
101
+ }
102
+ };
103
+
104
+ const releaseRequest = async (): Promise<any> => {
105
+ if (eagle !== null) {
106
+ await eagle.release();
107
+ eagle = null;
108
+ close();
109
+ }
110
+ return {
111
+ command: 'ok',
112
+ };
113
+ };
114
+
115
+ /**
116
+ * Eagle worker handler.
117
+ */
118
+ self.onmessage = async function (
119
+ event: MessageEvent<EagleWorkerRequest>
120
+ ): Promise<void> {
121
+ switch (event.data.command) {
122
+ case 'init':
123
+ self.postMessage(await initRequest(event.data));
124
+ break;
125
+ case 'process':
126
+ self.postMessage(await processRequest(event.data));
127
+ break;
128
+ case 'release':
129
+ self.postMessage(await releaseRequest());
130
+ break;
131
+ default:
132
+ self.postMessage({
133
+ command: 'failed',
134
+ // @ts-ignore
135
+ message: `Unrecognized command: ${event.data.command}`,
136
+ });
137
+ }
138
+ };
package/src/index.ts CHANGED
@@ -1,83 +1,94 @@
1
- import { Eagle, EagleProfiler } from './eagle';
2
- import { EagleProfilerWorker } from './eagle_profiler_worker';
3
- import { EagleWorker } from './eagle_worker';
4
- import * as EagleErrors from './eagle_errors';
5
-
6
- import {
7
- EagleModel,
8
- EagleProfile,
9
- EagleProfilerEnrollFeedback,
10
- EagleProfilerEnrollResult,
11
- EagleProfilerWorkerEnrollRequest,
12
- EagleProfilerWorkerEnrollResponse,
13
- EagleProfilerWorkerExportRequest,
14
- EagleProfilerWorkerExportResponse,
15
- EagleProfilerWorkerFailureResponse,
16
- EagleProfilerWorkerInitRequest,
17
- EagleProfilerWorkerInitResponse,
18
- EagleProfilerWorkerReleaseRequest,
19
- EagleProfilerWorkerReleaseResponse,
20
- EagleProfilerWorkerRequest,
21
- EagleProfilerWorkerResetRequest,
22
- EagleProfilerWorkerResetResponse,
23
- EagleProfilerWorkerResponse,
24
- EagleWorkerFailureResponse,
25
- EagleWorkerInitRequest,
26
- EagleWorkerInitResponse,
27
- EagleWorkerProcessRequest,
28
- EagleWorkerProcessResponse,
29
- EagleWorkerReleaseRequest,
30
- EagleWorkerReleaseResponse,
31
- EagleWorkerRequest,
32
- EagleWorkerResetRequest,
33
- EagleWorkerResetResponse,
34
- EagleWorkerResponse,
35
- } from './types';
36
-
37
- import eagleWasm from '../lib/pv_eagle.wasm';
38
- import eagleWasmSimd from '../lib/pv_eagle_simd.wasm';
39
-
40
- Eagle.setWasm(eagleWasm);
41
- Eagle.setWasmSimd(eagleWasmSimd);
42
- EagleWorker.setWasm(eagleWasm);
43
- EagleWorker.setWasmSimd(eagleWasmSimd);
44
- EagleProfiler.setWasm(eagleWasm);
45
- EagleProfiler.setWasmSimd(eagleWasmSimd);
46
- EagleProfilerWorker.setWasm(eagleWasm);
47
- EagleProfilerWorker.setWasmSimd(eagleWasmSimd);
48
-
49
- export {
50
- Eagle,
51
- EagleErrors,
52
- EagleModel,
53
- EagleProfile,
54
- EagleProfiler,
55
- EagleProfilerEnrollFeedback,
56
- EagleProfilerEnrollResult,
57
- EagleProfilerWorker,
58
- EagleProfilerWorkerEnrollRequest,
59
- EagleProfilerWorkerEnrollResponse,
60
- EagleProfilerWorkerExportRequest,
61
- EagleProfilerWorkerExportResponse,
62
- EagleProfilerWorkerFailureResponse,
63
- EagleProfilerWorkerInitRequest,
64
- EagleProfilerWorkerInitResponse,
65
- EagleProfilerWorkerReleaseRequest,
66
- EagleProfilerWorkerReleaseResponse,
67
- EagleProfilerWorkerRequest,
68
- EagleProfilerWorkerResetRequest,
69
- EagleProfilerWorkerResetResponse,
70
- EagleProfilerWorkerResponse,
71
- EagleWorker,
72
- EagleWorkerFailureResponse,
73
- EagleWorkerInitRequest,
74
- EagleWorkerInitResponse,
75
- EagleWorkerProcessRequest,
76
- EagleWorkerProcessResponse,
77
- EagleWorkerReleaseRequest,
78
- EagleWorkerReleaseResponse,
79
- EagleWorkerRequest,
80
- EagleWorkerResetRequest,
81
- EagleWorkerResetResponse,
82
- EagleWorkerResponse,
83
- };
1
+ import { Eagle, EagleProfiler } from './eagle';
2
+ import { EagleProfilerWorker } from './eagle_profiler_worker';
3
+ import { EagleWorker } from './eagle_worker';
4
+ import * as EagleErrors from './eagle_errors';
5
+
6
+ import {
7
+ EagleModel,
8
+ EagleOptions,
9
+ EagleProfile,
10
+ EagleProfilerOptions,
11
+ EagleProfilerWorkerEnrollRequest,
12
+ EagleProfilerWorkerEnrollResponse,
13
+ EagleProfilerWorkerExportRequest,
14
+ EagleProfilerWorkerExportResponse,
15
+ EagleProfilerWorkerFailureResponse,
16
+ EagleProfilerWorkerInitRequest,
17
+ EagleProfilerWorkerInitResponse,
18
+ EagleProfilerWorkerReleaseRequest,
19
+ EagleProfilerWorkerReleaseResponse,
20
+ EagleProfilerWorkerRequest,
21
+ EagleProfilerWorkerResetRequest,
22
+ EagleProfilerWorkerResetResponse,
23
+ EagleProfilerWorkerResponse,
24
+ EagleWorkerFailureResponse,
25
+ EagleWorkerInitRequest,
26
+ EagleWorkerInitResponse,
27
+ EagleWorkerProcessRequest,
28
+ EagleWorkerProcessResponse,
29
+ EagleWorkerReleaseRequest,
30
+ EagleWorkerReleaseResponse,
31
+ EagleWorkerRequest,
32
+ EagleWorkerResetRequest,
33
+ EagleWorkerResetResponse,
34
+ EagleWorkerResponse,
35
+ } from './types';
36
+
37
+ import eagleWasmSimd from './lib/pv_eagle_simd.wasm';
38
+ import eagleWasmSimdLib from './lib/pv_eagle_simd.txt';
39
+ import eagleWasmPThread from './lib/pv_eagle_pthread.wasm';
40
+ import eagleWasmPThreadLib from './lib/pv_eagle_pthread.txt';
41
+
42
+ Eagle.setWasmSimd(eagleWasmSimd);
43
+ Eagle.setWasmSimdLib(eagleWasmSimdLib);
44
+ Eagle.setWasmPThread(eagleWasmPThread);
45
+ Eagle.setWasmPThreadLib(eagleWasmPThreadLib);
46
+ EagleWorker.setWasmSimd(eagleWasmSimd);
47
+ EagleWorker.setWasmSimdLib(eagleWasmSimdLib);
48
+ EagleWorker.setWasmPThread(eagleWasmPThread);
49
+ EagleWorker.setWasmPThreadLib(eagleWasmPThreadLib);
50
+
51
+ EagleProfiler.setWasmSimd(eagleWasmSimd);
52
+ EagleProfiler.setWasmSimdLib(eagleWasmSimdLib);
53
+ EagleProfiler.setWasmPThread(eagleWasmPThread);
54
+ EagleProfiler.setWasmPThreadLib(eagleWasmPThreadLib);
55
+ EagleProfilerWorker.setWasmSimd(eagleWasmSimd);
56
+ EagleProfilerWorker.setWasmSimdLib(eagleWasmSimdLib);
57
+ EagleProfilerWorker.setWasmPThread(eagleWasmPThread);
58
+ EagleProfilerWorker.setWasmPThreadLib(eagleWasmPThreadLib);
59
+
60
+ export {
61
+ Eagle,
62
+ EagleErrors,
63
+ EagleModel,
64
+ EagleOptions,
65
+ EagleProfile,
66
+ EagleProfiler,
67
+ EagleProfilerOptions,
68
+ EagleProfilerWorker,
69
+ EagleProfilerWorkerEnrollRequest,
70
+ EagleProfilerWorkerEnrollResponse,
71
+ EagleProfilerWorkerExportRequest,
72
+ EagleProfilerWorkerExportResponse,
73
+ EagleProfilerWorkerFailureResponse,
74
+ EagleProfilerWorkerInitRequest,
75
+ EagleProfilerWorkerInitResponse,
76
+ EagleProfilerWorkerReleaseRequest,
77
+ EagleProfilerWorkerReleaseResponse,
78
+ EagleProfilerWorkerRequest,
79
+ EagleProfilerWorkerResetRequest,
80
+ EagleProfilerWorkerResetResponse,
81
+ EagleProfilerWorkerResponse,
82
+ EagleWorker,
83
+ EagleWorkerFailureResponse,
84
+ EagleWorkerInitRequest,
85
+ EagleWorkerInitResponse,
86
+ EagleWorkerProcessRequest,
87
+ EagleWorkerProcessResponse,
88
+ EagleWorkerReleaseRequest,
89
+ EagleWorkerReleaseResponse,
90
+ EagleWorkerRequest,
91
+ EagleWorkerResetRequest,
92
+ EagleWorkerResetResponse,
93
+ EagleWorkerResponse,
94
+ };