@vkontakte/calls-audio-effects 1.3.0 → 1.4.1

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.
@@ -0,0 +1,44 @@
1
+ import { type EffectVadAiOptions } from '../effects/EffectVadAi';
2
+ export interface VadControllerOptions extends EffectVadAiOptions {
3
+ /** Speech probability threshold for enabling track. Default: 0.66 */
4
+ threshold?: number;
5
+ /** How many ms after last "speech" to keep enabled=true. Default: 300 */
6
+ hangoverMs?: number;
7
+ /** Log changes to the isSpeaking state. Default: false */
8
+ logSpeakingState?: boolean;
9
+ }
10
+ export interface VadLib {
11
+ VadController: typeof VadController;
12
+ }
13
+ export declare class VadController {
14
+ private _effect;
15
+ private _sendTrack;
16
+ private _vadInputTrack;
17
+ private _threshold;
18
+ private _hangoverMs;
19
+ private _logSpeakingState;
20
+ private _effectOptions;
21
+ private _isSpeaking;
22
+ private _lastSpeechAt;
23
+ private _hangoverTimer;
24
+ private _watchdogTimer;
25
+ private _destroyed;
26
+ private _loggerFn;
27
+ private _logger;
28
+ constructor(sendTrack?: MediaStreamTrack | null, options?: VadControllerOptions);
29
+ setOptions(options: VadControllerOptions): void;
30
+ private _applyEffectOptions;
31
+ setLogger(loggerFunction: (type: string, ...args: unknown[]) => void, loggerName?: string): void;
32
+ init(): Promise<void>;
33
+ setSendTrack(track: MediaStreamTrack | null): void;
34
+ pause(): void;
35
+ resume(): void;
36
+ get isSpeaking(): boolean;
37
+ destroy(): void;
38
+ private _applySendTrack;
39
+ private _onProbs;
40
+ private _armHangover;
41
+ private _setSpeaking;
42
+ private _scheduleWatchdog;
43
+ private _replaceVadInputTrack;
44
+ }
@@ -0,0 +1,33 @@
1
+ import { DataProcessing } from '../processor/AudioProcessor';
2
+ import { WorkerAudioProcessor } from '../processor/WorkerAudioProcessor';
3
+ export type VadModelType = 'onnx' | 'tflite';
4
+ export declare const DEFAULT_VAD_AI_URLS: {
5
+ readonly modelUrl: "https://calls-sdk.cdn-vk.ru/models/bcresnet_no_center_mult2_20ms.onnx";
6
+ readonly modelDataUrl: "https://calls-sdk.cdn-vk.ru/models/bcresnet_no_center_mult2_20ms.onnx.data";
7
+ readonly ortWasmUrl: "https://calls-sdk.cdn-vk.ru/vendor/onnxruntime-web/ort-wasm-simd-threaded.wasm";
8
+ readonly ortMjsUrl: "https://calls-sdk.cdn-vk.ru/vendor/onnxruntime-web/ort-wasm-simd-threaded.mjs";
9
+ };
10
+ export interface EffectVadAiOptions {
11
+ modelType?: VadModelType;
12
+ modelUrl?: string;
13
+ modelDataUrl?: string;
14
+ ortWasmUrl?: string;
15
+ ortMjsUrl?: string;
16
+ }
17
+ export interface VadProbs {
18
+ speechProb: number;
19
+ silenceProb: number;
20
+ }
21
+ export declare class EffectVadAi extends WorkerAudioProcessor implements DataProcessing {
22
+ onData: (probs: VadProbs) => void;
23
+ private readonly _modelType;
24
+ private readonly _modelUrl;
25
+ private readonly _modelDataUrl;
26
+ private readonly _ortWasmUrl;
27
+ private readonly _ortMjsUrl;
28
+ constructor(options?: EffectVadAiOptions);
29
+ init(): Promise<void>;
30
+ protected onWorkletData(data: ArrayBuffer): void;
31
+ protected onWorkerData(probs: VadProbs): void;
32
+ static isSupported(): boolean;
33
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-audio-effects",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
4
4
  "author": "vk.com",
5
5
  "description": "Audio effects library for video calls based on the vk.com platform",
6
6
  "homepage": "https://vk.com",
@@ -14,6 +14,7 @@
14
14
  "**/*.d.ts"
15
15
  ],
16
16
  "dependencies": {
17
- "@vkontakte/audio-processing": "0.0.8"
17
+ "@vkontakte/audio-processing": "0.0.9",
18
+ "onnxruntime-web": "^1.26.0"
18
19
  }
19
20
  }
@@ -0,0 +1,7 @@
1
+ import type { Tensor } from 'onnxruntime-web';
2
+ export type StateTensors = Record<string, Tensor>;
3
+ export interface VadWorkerRequest {
4
+ data: ArrayBuffer;
5
+ }
6
+ declare const _default: (modelUrl: string, modelDataUrl: string, ortWasmUrl: string, ortMjsUrl: string) => void;
7
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import wav2lip from '@vkontakte/audio-processing';
2
+ export interface VadWorkerRequest {
3
+ data: ArrayBuffer;
4
+ }
5
+ declare const _default: (createWav2lipModule: typeof wav2lip, urlResolver: (url: string) => string) => void;
6
+ export default _default;