osense-vad 1.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.
Files changed (72) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +403 -0
  3. package/dist/common/asset-path.d.ts +2 -0
  4. package/dist/common/asset-path.d.ts.map +1 -0
  5. package/dist/common/asset-path.js +17 -0
  6. package/dist/common/asset-path.js.map +1 -0
  7. package/dist/common/default-model-fetcher.d.ts +2 -0
  8. package/dist/common/default-model-fetcher.d.ts.map +1 -0
  9. package/dist/common/default-model-fetcher.js +8 -0
  10. package/dist/common/default-model-fetcher.js.map +1 -0
  11. package/dist/common/frame-processor.d.ts +86 -0
  12. package/dist/common/frame-processor.d.ts.map +1 -0
  13. package/dist/common/frame-processor.js +180 -0
  14. package/dist/common/frame-processor.js.map +1 -0
  15. package/dist/common/index.d.ts +13 -0
  16. package/dist/common/index.d.ts.map +1 -0
  17. package/dist/common/index.js +53 -0
  18. package/dist/common/index.js.map +1 -0
  19. package/dist/common/logging.d.ts +8 -0
  20. package/dist/common/logging.d.ts.map +1 -0
  21. package/dist/common/logging.js +16 -0
  22. package/dist/common/logging.js.map +1 -0
  23. package/dist/common/messages.d.ts +10 -0
  24. package/dist/common/messages.d.ts.map +1 -0
  25. package/dist/common/messages.js +14 -0
  26. package/dist/common/messages.js.map +1 -0
  27. package/dist/common/models/common.d.ts +14 -0
  28. package/dist/common/models/common.d.ts.map +1 -0
  29. package/dist/common/models/common.js +3 -0
  30. package/dist/common/models/common.js.map +1 -0
  31. package/dist/common/models/index.d.ts +9 -0
  32. package/dist/common/models/index.d.ts.map +1 -0
  33. package/dist/common/models/index.js +11 -0
  34. package/dist/common/models/index.js.map +1 -0
  35. package/dist/common/models/legacy.d.ts +14 -0
  36. package/dist/common/models/legacy.d.ts.map +1 -0
  37. package/dist/common/models/legacy.js +52 -0
  38. package/dist/common/models/legacy.js.map +1 -0
  39. package/dist/common/models/v5.d.ts +13 -0
  40. package/dist/common/models/v5.d.ts.map +1 -0
  41. package/dist/common/models/v5.js +45 -0
  42. package/dist/common/models/v5.js.map +1 -0
  43. package/dist/common/models/v6.d.ts +22 -0
  44. package/dist/common/models/v6.d.ts.map +1 -0
  45. package/dist/common/models/v6.js +54 -0
  46. package/dist/common/models/v6.js.map +1 -0
  47. package/dist/common/non-real-time-vad.d.ts +23 -0
  48. package/dist/common/non-real-time-vad.d.ts.map +1 -0
  49. package/dist/common/non-real-time-vad.js +127 -0
  50. package/dist/common/non-real-time-vad.js.map +1 -0
  51. package/dist/common/resampler.d.ts +16 -0
  52. package/dist/common/resampler.d.ts.map +1 -0
  53. package/dist/common/resampler.js +63 -0
  54. package/dist/common/resampler.js.map +1 -0
  55. package/dist/common/utils.d.ts +8 -0
  56. package/dist/common/utils.d.ts.map +1 -0
  57. package/dist/common/utils.js +118 -0
  58. package/dist/common/utils.js.map +1 -0
  59. package/dist/index.d.ts +13 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +74 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/real-time-vad.d.ts +63 -0
  64. package/dist/real-time-vad.d.ts.map +1 -0
  65. package/dist/real-time-vad.js +171 -0
  66. package/dist/real-time-vad.js.map +1 -0
  67. package/dist/silero_vad_legacy.onnx +0 -0
  68. package/dist/silero_vad_v5.onnx +0 -0
  69. package/package.json +66 -0
  70. package/silero_vad_legacy.onnx +0 -0
  71. package/silero_vad_v5.onnx +0 -0
  72. package/silero_vad_v6.onnx +0 -0
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ /*
3
+ Some of this code, together with the default options found in index.ts,
4
+ were taken (or took inspiration) from https://github.com/snakers4/silero-vad
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FrameProcessor = exports.defaultV6FrameProcessorOptions = exports.defaultV5FrameProcessorOptions = exports.defaultLegacyFrameProcessorOptions = void 0;
8
+ exports.validateOptions = validateOptions;
9
+ const logging_1 = require("./logging");
10
+ const messages_1 = require("./messages");
11
+ const RECOMMENDED_FRAME_SAMPLES = [512, 1024, 1536];
12
+ exports.defaultLegacyFrameProcessorOptions = {
13
+ positiveSpeechThreshold: 0.5,
14
+ negativeSpeechThreshold: 0.5 - 0.15,
15
+ preSpeechPadFrames: 1,
16
+ redemptionFrames: 8,
17
+ frameSamples: 1536,
18
+ minSpeechFrames: 3,
19
+ submitUserSpeechOnPause: false,
20
+ };
21
+ exports.defaultV5FrameProcessorOptions = {
22
+ positiveSpeechThreshold: 0.5,
23
+ negativeSpeechThreshold: 0.5 - 0.15,
24
+ preSpeechPadFrames: 3,
25
+ redemptionFrames: 24,
26
+ frameSamples: 512,
27
+ minSpeechFrames: 9,
28
+ submitUserSpeechOnPause: false,
29
+ };
30
+ /**
31
+ * Default options for Silero VAD v6.2
32
+ * Optimized for telephony and lower quality audio
33
+ */
34
+ exports.defaultV6FrameProcessorOptions = {
35
+ positiveSpeechThreshold: 0.5,
36
+ negativeSpeechThreshold: 0.5 - 0.15,
37
+ preSpeechPadFrames: 3,
38
+ redemptionFrames: 24,
39
+ frameSamples: 512,
40
+ minSpeechFrames: 9,
41
+ submitUserSpeechOnPause: false,
42
+ };
43
+ function validateOptions(options) {
44
+ if (!RECOMMENDED_FRAME_SAMPLES.includes(options.frameSamples)) {
45
+ logging_1.log.warn("You are using an unusual frame size");
46
+ }
47
+ if (options.positiveSpeechThreshold < 0 ||
48
+ options.positiveSpeechThreshold > 1) {
49
+ logging_1.log.error("positiveSpeechThreshold should be a number between 0 and 1");
50
+ }
51
+ if (options.negativeSpeechThreshold < 0 ||
52
+ options.negativeSpeechThreshold > options.positiveSpeechThreshold) {
53
+ logging_1.log.error("negativeSpeechThreshold should be between 0 and positiveSpeechThreshold");
54
+ }
55
+ if (options.preSpeechPadFrames < 0) {
56
+ logging_1.log.error("preSpeechPadFrames should be positive");
57
+ }
58
+ if (options.redemptionFrames < 0) {
59
+ logging_1.log.error("redemptionFrames should be positive");
60
+ }
61
+ }
62
+ const concatArrays = (arrays) => {
63
+ const sizes = arrays.reduce((out, next) => {
64
+ out.push(out.at(-1) + next.length);
65
+ return out;
66
+ }, [0]);
67
+ const outArray = new Float32Array(sizes.at(-1));
68
+ arrays.forEach((arr, index) => {
69
+ const place = sizes[index];
70
+ outArray.set(arr, place);
71
+ });
72
+ return outArray;
73
+ };
74
+ class FrameProcessor {
75
+ constructor(modelProcessFunc, modelResetFunc, options) {
76
+ this.modelProcessFunc = modelProcessFunc;
77
+ this.modelResetFunc = modelResetFunc;
78
+ this.options = options;
79
+ this.speaking = false;
80
+ this.redemptionCounter = 0;
81
+ this.speechFrameCount = 0;
82
+ this.active = false;
83
+ this.speechRealStartFired = false;
84
+ this.reset = () => {
85
+ this.speaking = false;
86
+ this.speechRealStartFired = false;
87
+ this.audioBuffer = [];
88
+ this.modelResetFunc();
89
+ this.redemptionCounter = 0;
90
+ this.speechFrameCount = 0;
91
+ };
92
+ this.pause = (handleEvent) => {
93
+ this.active = false;
94
+ if (this.options.submitUserSpeechOnPause) {
95
+ this.endSegment(handleEvent);
96
+ }
97
+ else {
98
+ this.reset();
99
+ }
100
+ };
101
+ this.resume = () => {
102
+ this.active = true;
103
+ };
104
+ this.endSegment = (handleEvent) => {
105
+ const audioBuffer = this.audioBuffer;
106
+ this.audioBuffer = [];
107
+ const speaking = this.speaking;
108
+ this.reset();
109
+ if (speaking) {
110
+ const speechFrameCount = audioBuffer.reduce((acc, item) => {
111
+ return item.isSpeech ? acc + 1 : acc;
112
+ }, 0);
113
+ if (speechFrameCount >= this.options.minSpeechFrames) {
114
+ const audio = concatArrays(audioBuffer.map((item) => item.frame));
115
+ handleEvent({ msg: messages_1.Message.SpeechEnd, audio });
116
+ }
117
+ else {
118
+ handleEvent({ msg: messages_1.Message.VADMisfire });
119
+ }
120
+ }
121
+ return {};
122
+ };
123
+ this.process = async (frame, handleEvent) => {
124
+ if (!this.active) {
125
+ return;
126
+ }
127
+ const probs = await this.modelProcessFunc(frame);
128
+ const isSpeech = probs.isSpeech >= this.options.positiveSpeechThreshold;
129
+ handleEvent({ probs, msg: messages_1.Message.FrameProcessed, frame });
130
+ this.audioBuffer.push({
131
+ frame,
132
+ isSpeech,
133
+ });
134
+ if (isSpeech) {
135
+ this.speechFrameCount++;
136
+ this.redemptionCounter = 0;
137
+ }
138
+ if (isSpeech && !this.speaking) {
139
+ this.speaking = true;
140
+ handleEvent({ msg: messages_1.Message.SpeechStart });
141
+ }
142
+ if (this.speaking &&
143
+ this.speechFrameCount === this.options.minSpeechFrames &&
144
+ !this.speechRealStartFired) {
145
+ this.speechRealStartFired = true;
146
+ handleEvent({ msg: messages_1.Message.SpeechRealStart });
147
+ }
148
+ if (probs.isSpeech < this.options.negativeSpeechThreshold &&
149
+ this.speaking &&
150
+ ++this.redemptionCounter >= this.options.redemptionFrames) {
151
+ this.redemptionCounter = 0;
152
+ this.speechFrameCount = 0;
153
+ this.speaking = false;
154
+ this.speechRealStartFired = false;
155
+ const audioBuffer = this.audioBuffer;
156
+ this.audioBuffer = [];
157
+ const speechFrameCount = audioBuffer.reduce((acc, item) => {
158
+ return item.isSpeech ? acc + 1 : acc;
159
+ }, 0);
160
+ if (speechFrameCount >= this.options.minSpeechFrames) {
161
+ const audio = concatArrays(audioBuffer.map((item) => item.frame));
162
+ handleEvent({ msg: messages_1.Message.SpeechEnd, audio });
163
+ }
164
+ else {
165
+ handleEvent({ msg: messages_1.Message.VADMisfire });
166
+ }
167
+ }
168
+ if (!this.speaking) {
169
+ while (this.audioBuffer.length > this.options.preSpeechPadFrames) {
170
+ this.audioBuffer.shift();
171
+ }
172
+ this.speechFrameCount = 0;
173
+ }
174
+ };
175
+ this.audioBuffer = [];
176
+ this.reset();
177
+ }
178
+ }
179
+ exports.FrameProcessor = FrameProcessor;
180
+ //# sourceMappingURL=frame-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-processor.js","sourceRoot":"","sources":["../../src/common/frame-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import * as _utils from "./utils";
2
+ export declare const utils: {
3
+ minFramesForTargetMS: typeof _utils.minFramesForTargetMS;
4
+ arrayBufferToBase64: typeof _utils.arrayBufferToBase64;
5
+ encodeWAV: typeof _utils.encodeWAV;
6
+ };
7
+ export * from "./frame-processor";
8
+ export * from "./logging";
9
+ export * from "./messages";
10
+ export * from "./resampler";
11
+ export type { OrtOptions, OrtConfigurer, OrtModule, ModelFetcher, SpeechProbabilities, Model, ModelFactory } from "./models";
12
+ export { SileroLegacy, SileroV5 } from "./models";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAClC,eAAO,MAAM,KAAK;;;;CAIjB,CAAC;AAEF,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAG5B,YAAY,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,KAAK,EACL,YAAY,EACb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.SileroV5 = exports.SileroLegacy = exports.utils = void 0;
40
+ const _utils = __importStar(require("./utils"));
41
+ exports.utils = {
42
+ minFramesForTargetMS: _utils.minFramesForTargetMS,
43
+ arrayBufferToBase64: _utils.arrayBufferToBase64,
44
+ encodeWAV: _utils.encodeWAV,
45
+ };
46
+ __exportStar(require("./frame-processor"), exports);
47
+ __exportStar(require("./logging"), exports);
48
+ __exportStar(require("./messages"), exports);
49
+ __exportStar(require("./resampler"), exports);
50
+ var models_1 = require("./models");
51
+ Object.defineProperty(exports, "SileroLegacy", { enumerable: true, get: function () { return models_1.SileroLegacy; } });
52
+ Object.defineProperty(exports, "SileroV5", { enumerable: true, get: function () { return models_1.SileroV5; } });
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AACrB,QAAA,KAAK,GAAG;IACnB,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;IACjD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;IAC/C,SAAS,EAAE,MAAM,CAAC,SAAS;CAC5B,CAAC;AAEF,oDAAkC;AAClC,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAY5B,mCAAkD;AAAzC,sGAAA,YAAY,OAAA;AAAE,kGAAA,QAAQ,OAAA"}
@@ -0,0 +1,8 @@
1
+ export declare const LOG_PREFIX = "[VAD]";
2
+ declare const levels: readonly ["error", "debug", "warn"];
3
+ type Level = (typeof levels)[number];
4
+ type LogFn = (...args: any) => void;
5
+ type Logger = Record<Level, LogFn>;
6
+ export declare const log: Logger;
7
+ export {};
8
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/common/logging.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,UAAU,CAAC;AAElC,QAAA,MAAM,MAAM,qCAAsC,CAAC;AACnD,KAAK,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AACrC,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;AACpC,KAAK,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAanC,eAAO,MAAM,GAAG,EAAW,MAAM,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.log = exports.LOG_PREFIX = void 0;
4
+ exports.LOG_PREFIX = "[VAD]";
5
+ const levels = ["error", "debug", "warn"];
6
+ function getLog(level) {
7
+ return (...args) => {
8
+ console[level](exports.LOG_PREFIX, ...args);
9
+ };
10
+ }
11
+ const _log = levels.reduce((acc, level) => {
12
+ acc[level] = getLog(level);
13
+ return acc;
14
+ }, {});
15
+ exports.log = _log;
16
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/common/logging.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,OAAO,CAAC;AAElC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAKnD,SAAS,MAAM,CAAC,KAAY;IAC1B,OAAO,CAAC,GAAG,IAAS,EAAE,EAAE;QACtB,OAAO,CAAC,KAAK,CAAC,CAAC,kBAAU,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;IACzD,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,EAAE,CAAC,CAAC;AAEM,QAAA,GAAG,GAAG,IAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare enum Message {
2
+ AudioFrame = "AUDIO_FRAME",
3
+ SpeechStart = "SPEECH_START",
4
+ VADMisfire = "VAD_MISFIRE",
5
+ SpeechEnd = "SPEECH_END",
6
+ SpeechStop = "SPEECH_STOP",
7
+ SpeechRealStart = "SPEECH_REAL_START",
8
+ FrameProcessed = "FRAME_PROCESSED"
9
+ }
10
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/common/messages.ts"],"names":[],"mappings":"AAAA,oBAAY,OAAO;IACjB,UAAU,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;IAC1B,SAAS,eAAe;IACxB,UAAU,gBAAgB;IAC1B,eAAe,sBAAsB;IACrC,cAAc,oBAAoB;CACnC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Message = void 0;
4
+ var Message;
5
+ (function (Message) {
6
+ Message["AudioFrame"] = "AUDIO_FRAME";
7
+ Message["SpeechStart"] = "SPEECH_START";
8
+ Message["VADMisfire"] = "VAD_MISFIRE";
9
+ Message["SpeechEnd"] = "SPEECH_END";
10
+ Message["SpeechStop"] = "SPEECH_STOP";
11
+ Message["SpeechRealStart"] = "SPEECH_REAL_START";
12
+ Message["FrameProcessed"] = "FRAME_PROCESSED";
13
+ })(Message || (exports.Message = Message = {}));
14
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/common/messages.ts"],"names":[],"mappings":";;;AAAA,IAAY,OAQX;AARD,WAAY,OAAO;IACjB,qCAA0B,CAAA;IAC1B,uCAA4B,CAAA;IAC5B,qCAA0B,CAAA;IAC1B,mCAAwB,CAAA;IACxB,qCAA0B,CAAA;IAC1B,gDAAqC,CAAA;IACrC,6CAAkC,CAAA;AACpC,CAAC,EARW,OAAO,uBAAP,OAAO,QAQlB"}
@@ -0,0 +1,14 @@
1
+ import type * as ort from "onnxruntime-node";
2
+ export type ModelFetcher = () => Promise<ArrayBuffer>;
3
+ export interface SpeechProbabilities {
4
+ notSpeech: number;
5
+ isSpeech: number;
6
+ }
7
+ export type OrtConfigurer = (ortInstance: typeof ort) => any;
8
+ export type OrtModule = typeof ort;
9
+ export type ModelFactory = (ortInstance: typeof ort, modelFetcher: ModelFetcher) => Promise<Model>;
10
+ export interface Model {
11
+ reset_state: () => void;
12
+ process: (arr: Float32Array) => Promise<SpeechProbabilities>;
13
+ }
14
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/common/models/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAE7C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,OAAO,GAAG,KAAK,GAAG,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC;AAEnC,MAAM,MAAM,YAAY,GAAG,CACzB,WAAW,EAAE,OAAO,GAAG,EACvB,YAAY,EAAE,YAAY,KACvB,OAAO,CAAC,KAAK,CAAC,CAAC;AAEpB,MAAM,WAAW,KAAK;IACpB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC9D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/common/models/common.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { OrtConfigurer } from "./common";
2
+ export type { ModelFetcher, SpeechProbabilities, OrtConfigurer, OrtModule, ModelFactory, Model } from "./common";
3
+ export { SileroLegacy } from "./legacy";
4
+ export { SileroV5 } from "./v5";
5
+ export { SileroV6 } from "./v6";
6
+ export interface OrtOptions {
7
+ ortConfig?: OrtConfigurer;
8
+ }
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/models/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,KAAK,EACN,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SileroV6 = exports.SileroV5 = exports.SileroLegacy = void 0;
4
+ // Export model classes
5
+ var legacy_1 = require("./legacy");
6
+ Object.defineProperty(exports, "SileroLegacy", { enumerable: true, get: function () { return legacy_1.SileroLegacy; } });
7
+ var v5_1 = require("./v5");
8
+ Object.defineProperty(exports, "SileroV5", { enumerable: true, get: function () { return v5_1.SileroV5; } });
9
+ var v6_1 = require("./v6");
10
+ Object.defineProperty(exports, "SileroV6", { enumerable: true, get: function () { return v6_1.SileroV6; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/models/index.ts"],"names":[],"mappings":";;;AAaA,uBAAuB;AACvB,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,2BAAgC;AAAvB,8FAAA,QAAQ,OAAA;AACjB,2BAAgC;AAAvB,8FAAA,QAAQ,OAAA"}
@@ -0,0 +1,14 @@
1
+ import type * as ort from "onnxruntime-node";
2
+ import type { ModelFactory, SpeechProbabilities } from "./common";
3
+ export declare class SileroLegacy {
4
+ private ortInstance;
5
+ private _session;
6
+ private _h;
7
+ private _c;
8
+ private _sr;
9
+ constructor(ortInstance: typeof ort, _session: ort.InferenceSession, _h: ort.Tensor, _c: ort.Tensor, _sr: ort.Tensor);
10
+ static new: ModelFactory;
11
+ reset_state: () => void;
12
+ process: (audioFrame: Float32Array) => Promise<SpeechProbabilities>;
13
+ }
14
+ //# sourceMappingURL=legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../../src/common/models/legacy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAgB,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEhF,qBAAa,YAAY;IAErB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;gBAJH,WAAW,EAAE,OAAO,GAAG,EACvB,QAAQ,EAAE,GAAG,CAAC,gBAAgB,EAC9B,EAAE,EAAE,GAAG,CAAC,MAAM,EACd,EAAE,EAAE,GAAG,CAAC,MAAM,EACd,GAAG,EAAE,GAAG,CAAC,MAAM;IAGzB,MAAM,CAAC,GAAG,EAAE,YAAY,CAgBtB;IAEF,WAAW,aAIT;IAEF,OAAO,GAAU,YAAY,YAAY,KAAG,OAAO,CAAC,mBAAmB,CAAC,CAiBtE;CACH"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SileroLegacy = void 0;
5
+ const logging_1 = require("../logging");
6
+ class SileroLegacy {
7
+ constructor(ortInstance, _session, _h, _c, _sr) {
8
+ this.ortInstance = ortInstance;
9
+ this._session = _session;
10
+ this._h = _h;
11
+ this._c = _c;
12
+ this._sr = _sr;
13
+ this.reset_state = () => {
14
+ const zeroes = Array(2 * 64).fill(0);
15
+ this._h = new this.ortInstance.Tensor("float32", zeroes, [2, 1, 64]);
16
+ this._c = new this.ortInstance.Tensor("float32", zeroes, [2, 1, 64]);
17
+ };
18
+ this.process = async (audioFrame) => {
19
+ const t = new this.ortInstance.Tensor("float32", audioFrame, [
20
+ 1,
21
+ audioFrame.length,
22
+ ]);
23
+ const inputs = {
24
+ input: t,
25
+ h: this._h,
26
+ c: this._c,
27
+ sr: this._sr,
28
+ };
29
+ const out = await this._session.run(inputs);
30
+ this._h = out["hn"];
31
+ this._c = out["cn"];
32
+ const [isSpeech] = out["output"]?.data;
33
+ const notSpeech = 1 - isSpeech;
34
+ return { notSpeech, isSpeech };
35
+ };
36
+ }
37
+ }
38
+ exports.SileroLegacy = SileroLegacy;
39
+ _a = SileroLegacy;
40
+ SileroLegacy.new = async (ortInstance, modelFetcher) => {
41
+ logging_1.log.debug("initializing vad");
42
+ const modelArrayBuffer = await modelFetcher();
43
+ const _session = await ortInstance.InferenceSession.create(modelArrayBuffer);
44
+ const _sr = new ortInstance.Tensor("int64", [16000n]);
45
+ const zeroes = Array(2 * 64).fill(0);
46
+ const _h = new ortInstance.Tensor("float32", zeroes, [2, 1, 64]);
47
+ const _c = new ortInstance.Tensor("float32", zeroes, [2, 1, 64]);
48
+ logging_1.log.debug("vad is initialized");
49
+ const model = new _a(ortInstance, _session, _h, _c, _sr);
50
+ return model;
51
+ };
52
+ //# sourceMappingURL=legacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../../src/common/models/legacy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type * as ort from "onnxruntime-node";
2
+ import type { ModelFactory, SpeechProbabilities } from "./common";
3
+ export declare class SileroV5 {
4
+ private _session;
5
+ private _state;
6
+ private _sr;
7
+ private ortInstance;
8
+ constructor(_session: ort.InferenceSession, _state: ort.Tensor, _sr: ort.Tensor, ortInstance: typeof ort);
9
+ static new: ModelFactory;
10
+ reset_state: () => void;
11
+ process: (audioFrame: Float32Array) => Promise<SpeechProbabilities>;
12
+ }
13
+ //# sourceMappingURL=v5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v5.d.ts","sourceRoot":"","sources":["../../../src/common/models/v5.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAgB,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAOhF,qBAAa,QAAQ;IAEjB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,WAAW;gBAHX,QAAQ,EAAE,GAAG,CAAC,gBAAgB,EAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,WAAW,EAAE,OAAO,GAAG;IAGjC,MAAM,CAAC,GAAG,EAAE,YAAY,CAWtB;IAEF,WAAW,aAET;IAEF,OAAO,GAAU,YAAY,YAAY,KAAG,OAAO,CAAC,mBAAmB,CAAC,CAiBtE;CACH"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SileroV5 = void 0;
5
+ function getNewState(ortInstance) {
6
+ const zeroes = Array(2 * 128).fill(0);
7
+ return new ortInstance.Tensor("float32", zeroes, [2, 1, 128]);
8
+ }
9
+ class SileroV5 {
10
+ constructor(_session, _state, _sr, ortInstance) {
11
+ this._session = _session;
12
+ this._state = _state;
13
+ this._sr = _sr;
14
+ this.ortInstance = ortInstance;
15
+ this.reset_state = () => {
16
+ this._state = getNewState(this.ortInstance);
17
+ };
18
+ this.process = async (audioFrame) => {
19
+ const t = new this.ortInstance.Tensor("float32", audioFrame, [
20
+ 1,
21
+ audioFrame.length,
22
+ ]);
23
+ const inputs = {
24
+ input: t,
25
+ state: this._state,
26
+ sr: this._sr,
27
+ };
28
+ const out = await this._session.run(inputs);
29
+ this._state = out["stateN"];
30
+ const [isSpeech] = out["output"]?.data;
31
+ const notSpeech = 1 - isSpeech;
32
+ return { notSpeech, isSpeech };
33
+ };
34
+ }
35
+ }
36
+ exports.SileroV5 = SileroV5;
37
+ _a = SileroV5;
38
+ SileroV5.new = async (ortInstance, modelFetcher) => {
39
+ const modelArrayBuffer = await modelFetcher();
40
+ const _session = await ortInstance.InferenceSession.create(modelArrayBuffer);
41
+ const _sr = new ortInstance.Tensor("int64", [16000n]);
42
+ const _state = getNewState(ortInstance);
43
+ return new _a(_session, _state, _sr, ortInstance);
44
+ };
45
+ //# sourceMappingURL=v5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v5.js","sourceRoot":"","sources":["../../../src/common/models/v5.ts"],"names":[],"mappings":";;;;AAGA,SAAS,WAAW,CAAC,WAAuB;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAa,QAAQ;IACnB,YACU,QAA8B,EAC9B,MAAkB,EAClB,GAAe,EACf,WAAuB;QAHvB,aAAQ,GAAR,QAAQ,CAAsB;QAC9B,WAAM,GAAN,MAAM,CAAY;QAClB,QAAG,GAAH,GAAG,CAAY;QACf,gBAAW,GAAX,WAAW,CAAY;QAgBjC,gBAAW,GAAG,GAAG,EAAE;YACjB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,YAAO,GAAG,KAAK,EAAE,UAAwB,EAAgC,EAAE;YACzE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE;gBAC3D,CAAC;gBACD,UAAU,CAAC,MAAM;aAClB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,EAAE,EAAE,IAAI,CAAC,GAAG;aACb,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE5C,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAe,CAAC;YAE1C,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAA2B,CAAC;YAC9D,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC;YAC/B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QACjC,CAAC,CAAC;IApCC,CAAC;;AANN,4BA2CC;;AAnCQ,YAAG,GAAiB,KAAK,EAC9B,WAAuB,EACvB,YAA0B,EAC1B,EAAE;IACF,MAAM,gBAAgB,GAAG,MAAM,YAAY,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,MAAM,CACxD,gBAAgB,CACjB,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACxC,OAAO,IAAI,EAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AAC1D,CAAC,AAXS,CAWR"}
@@ -0,0 +1,22 @@
1
+ import type * as ort from "onnxruntime-node";
2
+ import type { ModelFactory, SpeechProbabilities } from "./common";
3
+ /**
4
+ * Silero VAD v6.2 model wrapper
5
+ *
6
+ * Improvements over v5:
7
+ * - 16% fewer errors on noisy real-life data
8
+ * - 11% fewer errors on multi-domain validation
9
+ * - Better handling of lower quality phone calls (telephony)
10
+ * - Improved training algorithm for robustness
11
+ */
12
+ export declare class SileroV6 {
13
+ private _session;
14
+ private _state;
15
+ private _sr;
16
+ private ortInstance;
17
+ constructor(_session: ort.InferenceSession, _state: ort.Tensor, _sr: ort.Tensor, ortInstance: typeof ort);
18
+ static new: ModelFactory;
19
+ reset_state: () => void;
20
+ process: (audioFrame: Float32Array) => Promise<SpeechProbabilities>;
21
+ }
22
+ //# sourceMappingURL=v6.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v6.d.ts","sourceRoot":"","sources":["../../../src/common/models/v6.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAgB,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAOhF;;;;;;;;GAQG;AACH,qBAAa,QAAQ;IAEjB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,WAAW;gBAHX,QAAQ,EAAE,GAAG,CAAC,gBAAgB,EAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,WAAW,EAAE,OAAO,GAAG;IAGjC,MAAM,CAAC,GAAG,EAAE,YAAY,CAWtB;IAEF,WAAW,aAET;IAEF,OAAO,GAAU,YAAY,YAAY,KAAG,OAAO,CAAC,mBAAmB,CAAC,CAiBtE;CACH"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SileroV6 = void 0;
5
+ function getNewState(ortInstance) {
6
+ const zeroes = Array(2 * 128).fill(0);
7
+ return new ortInstance.Tensor("float32", zeroes, [2, 1, 128]);
8
+ }
9
+ /**
10
+ * Silero VAD v6.2 model wrapper
11
+ *
12
+ * Improvements over v5:
13
+ * - 16% fewer errors on noisy real-life data
14
+ * - 11% fewer errors on multi-domain validation
15
+ * - Better handling of lower quality phone calls (telephony)
16
+ * - Improved training algorithm for robustness
17
+ */
18
+ class SileroV6 {
19
+ constructor(_session, _state, _sr, ortInstance) {
20
+ this._session = _session;
21
+ this._state = _state;
22
+ this._sr = _sr;
23
+ this.ortInstance = ortInstance;
24
+ this.reset_state = () => {
25
+ this._state = getNewState(this.ortInstance);
26
+ };
27
+ this.process = async (audioFrame) => {
28
+ const t = new this.ortInstance.Tensor("float32", audioFrame, [
29
+ 1,
30
+ audioFrame.length,
31
+ ]);
32
+ const inputs = {
33
+ input: t,
34
+ state: this._state,
35
+ sr: this._sr,
36
+ };
37
+ const out = await this._session.run(inputs);
38
+ this._state = out["stateN"];
39
+ const [isSpeech] = out["output"]?.data;
40
+ const notSpeech = 1 - isSpeech;
41
+ return { notSpeech, isSpeech };
42
+ };
43
+ }
44
+ }
45
+ exports.SileroV6 = SileroV6;
46
+ _a = SileroV6;
47
+ SileroV6.new = async (ortInstance, modelFetcher) => {
48
+ const modelArrayBuffer = await modelFetcher();
49
+ const _session = await ortInstance.InferenceSession.create(modelArrayBuffer);
50
+ const _sr = new ortInstance.Tensor("int64", [16000n]);
51
+ const _state = getNewState(ortInstance);
52
+ return new _a(_session, _state, _sr, ortInstance);
53
+ };
54
+ //# sourceMappingURL=v6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v6.js","sourceRoot":"","sources":["../../../src/common/models/v6.ts"],"names":[],"mappings":";;;;AAGA,SAAS,WAAW,CAAC,WAAuB;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAa,QAAQ;IACnB,YACU,QAA8B,EAC9B,MAAkB,EAClB,GAAe,EACf,WAAuB;QAHvB,aAAQ,GAAR,QAAQ,CAAsB;QAC9B,WAAM,GAAN,MAAM,CAAY;QAClB,QAAG,GAAH,GAAG,CAAY;QACf,gBAAW,GAAX,WAAW,CAAY;QAgBjC,gBAAW,GAAG,GAAG,EAAE;YACjB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,YAAO,GAAG,KAAK,EAAE,UAAwB,EAAgC,EAAE;YACzE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE;gBAC3D,CAAC;gBACD,UAAU,CAAC,MAAM;aAClB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,EAAE,EAAE,IAAI,CAAC,GAAG;aACb,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE5C,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAe,CAAC;YAE1C,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAA2B,CAAC;YAC9D,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC;YAC/B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QACjC,CAAC,CAAC;IApCC,CAAC;;AANN,4BA2CC;;AAnCQ,YAAG,GAAiB,KAAK,EAC9B,WAAuB,EACvB,YAA0B,EAC1B,EAAE;IACF,MAAM,gBAAgB,GAAG,MAAM,YAAY,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,MAAM,CACxD,gBAAgB,CACjB,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACxC,OAAO,IAAI,EAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AAC1D,CAAC,AAXS,CAWR"}