sherpa-onnx-node 1.0.20 → 1.0.22
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/audio-tagg.js +26 -0
- package/package.json +6 -6
- package/sherpa-onnx.js +5 -0
- package/speaker-identification.js +102 -0
- package/streaming-asr.js +1 -0
package/audio-tagg.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const addon = require('./addon.js');
|
|
2
|
+
const non_streaming_asr = require('./non-streaming-asr.js');
|
|
3
|
+
|
|
4
|
+
class AudioTagging {
|
|
5
|
+
constructor(config) {
|
|
6
|
+
this.handle = addon.createAudioTagging(config);
|
|
7
|
+
this.config = config;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
createStream() {
|
|
11
|
+
return new non_streaming_asr.OfflineStream(
|
|
12
|
+
addon.audioTaggingCreateOfflineStream(this.handle));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Return an array. Each element is
|
|
16
|
+
* an object {name: "xxx", prob: xxx, index: xxx};
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
compute(stream, topK = -1) {
|
|
20
|
+
return addon.audioTaggingCompute(this.handle, stream.handle, topK);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
module.exports = {
|
|
25
|
+
AudioTagging,
|
|
26
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sherpa-onnx-node",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.22",
|
|
4
4
|
"description": "Speech-to-text and text-to-speech using Next-gen Kaldi without internet connection",
|
|
5
5
|
"main": "sherpa-onnx.js",
|
|
6
6
|
"scripts": {
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
},
|
|
46
46
|
"homepage": "https://github.com/csukuangfj/sherpa-onnx#readme",
|
|
47
47
|
"optionalDependencies": {
|
|
48
|
-
"sherpa-onnx-darwin-arm64": "^1.0.
|
|
49
|
-
"sherpa-onnx-darwin-x64": "^1.0.
|
|
50
|
-
"sherpa-onnx-linux-x64": "^1.0.
|
|
51
|
-
"sherpa-onnx-linux-arm64": "^1.0.
|
|
52
|
-
"sherpa-onnx-win-x64": "^1.0.
|
|
48
|
+
"sherpa-onnx-darwin-arm64": "^1.0.22",
|
|
49
|
+
"sherpa-onnx-darwin-x64": "^1.0.22",
|
|
50
|
+
"sherpa-onnx-linux-x64": "^1.0.22",
|
|
51
|
+
"sherpa-onnx-linux-arm64": "^1.0.22",
|
|
52
|
+
"sherpa-onnx-win-x64": "^1.0.22"
|
|
53
53
|
}
|
|
54
54
|
}
|
package/sherpa-onnx.js
CHANGED
|
@@ -4,6 +4,8 @@ const non_streaming_asr = require('./non-streaming-asr.js');
|
|
|
4
4
|
const non_streaming_tts = require('./non-streaming-tts.js');
|
|
5
5
|
const vad = require('./vad.js');
|
|
6
6
|
const slid = require('./spoken-language-identification.js');
|
|
7
|
+
const sid = require('./speaker-identification.js');
|
|
8
|
+
const at = require('./audio-tagg.js');
|
|
7
9
|
|
|
8
10
|
module.exports = {
|
|
9
11
|
OnlineRecognizer: streaming_asr.OnlineRecognizer,
|
|
@@ -15,4 +17,7 @@ module.exports = {
|
|
|
15
17
|
Vad: vad.Vad,
|
|
16
18
|
CircularBuffer: vad.CircularBuffer,
|
|
17
19
|
SpokenLanguageIdentification: slid.SpokenLanguageIdentification,
|
|
20
|
+
SpeakerEmbeddingExtractor: sid.SpeakerEmbeddingExtractor,
|
|
21
|
+
SpeakerEmbeddingManager: sid.SpeakerEmbeddingManager,
|
|
22
|
+
AudioTagging: at.AudioTagging,
|
|
18
23
|
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
const addon = require('./addon.js');
|
|
2
|
+
const streaming_asr = require('./streaming-asr.js');
|
|
3
|
+
|
|
4
|
+
class SpeakerEmbeddingExtractor {
|
|
5
|
+
constructor(config) {
|
|
6
|
+
this.handle = addon.createSpeakerEmbeddingExtractor(config);
|
|
7
|
+
this.config = config;
|
|
8
|
+
this.dim = addon.speakerEmbeddingExtractorDim(this.handle);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
createStream() {
|
|
12
|
+
return new streaming_asr.OnlineStream(
|
|
13
|
+
addon.speakerEmbeddingExtractorCreateStream(this.handle));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
isReady(stream) {
|
|
17
|
+
return addon.speakerEmbeddingExtractorIsReady(this.handle, stream.handle);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// return a float32 array
|
|
21
|
+
compute(stream) {
|
|
22
|
+
return addon.speakerEmbeddingExtractorComputeEmbedding(
|
|
23
|
+
this.handle, stream.handle);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function flatten(arrayList) {
|
|
28
|
+
let n = 0;
|
|
29
|
+
for (let i = 0; i < arrayList.length; ++i) {
|
|
30
|
+
n += arrayList[i].length;
|
|
31
|
+
}
|
|
32
|
+
let ans = new Float32Array(n);
|
|
33
|
+
|
|
34
|
+
let offset = 0;
|
|
35
|
+
for (let i = 0; i < arrayList.length; ++i) {
|
|
36
|
+
ans.set(arrayList[i], offset);
|
|
37
|
+
offset += arrayList[i].length;
|
|
38
|
+
}
|
|
39
|
+
return ans;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
class SpeakerEmbeddingManager {
|
|
43
|
+
constructor(dim) {
|
|
44
|
+
this.handle = addon.createSpeakerEmbeddingManager(dim);
|
|
45
|
+
this.dim = dim;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/*
|
|
49
|
+
obj = {name: "xxx", v: a-float32-array}
|
|
50
|
+
*/
|
|
51
|
+
add(obj) {
|
|
52
|
+
return addon.speakerEmbeddingManagerAdd(this.handle, obj);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/*
|
|
56
|
+
* obj =
|
|
57
|
+
* {name: "xxx", v: [float32_array1, float32_array2, ..., float32_arrayn]
|
|
58
|
+
*/
|
|
59
|
+
addMulti(obj) {
|
|
60
|
+
const c = {
|
|
61
|
+
name: obj.name,
|
|
62
|
+
vv: flatten(obj.v),
|
|
63
|
+
n: obj.v.length,
|
|
64
|
+
};
|
|
65
|
+
return addon.speakerEmbeddingManagerAddListFlattened(this.handle, c);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
remove(name) {
|
|
69
|
+
return addon.speakerEmbeddingManagerRemove(this.handle, name);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/*
|
|
73
|
+
* obj = {v: a-float32-array, threshold: a-float }
|
|
74
|
+
*/
|
|
75
|
+
search(obj) {
|
|
76
|
+
return addon.speakerEmbeddingManagerSearch(this.handle, obj);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/*
|
|
80
|
+
* obj = {name: 'xxx', v: a-float32-array, threshold: a-float }
|
|
81
|
+
*/
|
|
82
|
+
verify(obj) {
|
|
83
|
+
return addon.speakerEmbeddingManagerVerify(this.handle, obj);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
contains(name) {
|
|
87
|
+
return addon.speakerEmbeddingManagerContains(this.handle, name);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
getNumSpeakers() {
|
|
91
|
+
return addon.speakerEmbeddingManagerNumSpeakers(this.handle);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
getAllSpeakerNames() {
|
|
95
|
+
return addon.speakerEmbeddingManagerGetAllSpeakers(this.handle);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
module.exports = {
|
|
100
|
+
SpeakerEmbeddingExtractor,
|
|
101
|
+
SpeakerEmbeddingManager,
|
|
102
|
+
}
|