@vkontakte/calls-audio-effects 1.4.2-dev.cbbd651d.0 → 1.5.1-dev.6a83256f.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/audio-effects.cjs.js +132 -23
- package/audio-effects.esm.js +132 -23
- package/controllers/VadController.d.ts +20 -0
- package/effects/EffectVadAi.d.ts +7 -0
- package/package.json +2 -2
- package/processor/WorkerAudioProcessor.d.ts +23 -1
- package/utils/ModelLoader.d.ts +12 -1
- package/utils/Utils.d.ts +4 -0
- package/utils/WasmMemoryReport.d.ts +5 -0
- package/workers/VadTfliteWorker.d.ts +1 -1
- package/workers/VoiceChangeWorker.d.ts +2 -0
|
@@ -11,6 +11,26 @@ export interface VadLib {
|
|
|
11
11
|
VadController: typeof VadController;
|
|
12
12
|
}
|
|
13
13
|
export declare class VadController {
|
|
14
|
+
/**
|
|
15
|
+
* Коллбек, вызывающийся, когда ML-модель VAD скачана и готова к работе.
|
|
16
|
+
* Вызывается при каждом init().
|
|
17
|
+
* @param {string} model - Файл модели.
|
|
18
|
+
* @param {number} duration - Время скачивания файлов модели, мс.
|
|
19
|
+
*/
|
|
20
|
+
onModelReady: (model: string, duration: number) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Коллбек, вызывающийся при ошибке ML-модели VAD:
|
|
23
|
+
* модель не скачалась, не создалась, упала в работе или не загрузилась за минуту (timeout).
|
|
24
|
+
* @param {string} model - Файл модели.
|
|
25
|
+
* @param {string} error - Текст ошибки.
|
|
26
|
+
*/
|
|
27
|
+
onModelError: (model: string, error: string) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Коллбек, вызывающийся после каждого запуска модели VAD (раз в 20 мс).
|
|
30
|
+
* @param {number} duration - Время одного запуска модели, мс.
|
|
31
|
+
* Без загрузки модели и ожидания следующего блока звука.
|
|
32
|
+
*/
|
|
33
|
+
onInference: (duration: number) => void;
|
|
14
34
|
private _effect;
|
|
15
35
|
private _sendTrack;
|
|
16
36
|
private _vadInputTrack;
|
package/effects/EffectVadAi.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export interface EffectVadAiOptions {
|
|
|
17
17
|
export interface VadProbs {
|
|
18
18
|
speechProb: number;
|
|
19
19
|
silenceProb: number;
|
|
20
|
+
/** Время одного запуска модели, мс */
|
|
21
|
+
inferenceDuration: number;
|
|
20
22
|
}
|
|
21
23
|
export declare class EffectVadAi extends WorkerAudioProcessor implements DataProcessing {
|
|
22
24
|
onData: (probs: VadProbs) => void;
|
|
@@ -25,9 +27,14 @@ export declare class EffectVadAi extends WorkerAudioProcessor implements DataPro
|
|
|
25
27
|
private readonly _modelDataUrl;
|
|
26
28
|
private readonly _ortWasmUrl;
|
|
27
29
|
private readonly _ortMjsUrl;
|
|
30
|
+
private _modelLoadTimeout;
|
|
28
31
|
constructor(options?: EffectVadAiOptions);
|
|
32
|
+
/** Файл модели, на которой работает эффект */
|
|
33
|
+
get model(): string;
|
|
29
34
|
init(): Promise<void>;
|
|
35
|
+
destroy(): void;
|
|
30
36
|
protected onWorkletData(data: ArrayBuffer): void;
|
|
31
37
|
protected onWorkerData(probs: VadProbs): void;
|
|
32
38
|
static isSupported(): boolean;
|
|
39
|
+
private _stopModelLoadTimeout;
|
|
33
40
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/calls-audio-effects",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1-dev.6a83256f.0",
|
|
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,7 +14,7 @@
|
|
|
14
14
|
"**/*.d.ts"
|
|
15
15
|
],
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@vkontakte/audio-processing": "0.0.10
|
|
17
|
+
"@vkontakte/audio-processing": "0.0.10",
|
|
18
18
|
"onnxruntime-web": "^1.26.0"
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -3,18 +3,38 @@ import { AudioProcessor, AudioProcessorParams } from './AudioProcessor';
|
|
|
3
3
|
export interface WorkerAudioProcessorParams extends AudioProcessorParams {
|
|
4
4
|
workerFunctionString: string;
|
|
5
5
|
workerArgs: unknown[];
|
|
6
|
+
workerName?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Файл модели, на которой работает весь воркер.
|
|
9
|
+
* Неперехваченные ошибки такого воркера считаются ошибками модели.
|
|
10
|
+
*/
|
|
11
|
+
workerModel?: string;
|
|
6
12
|
}
|
|
7
13
|
export declare const enum WorkerResponseType {
|
|
8
14
|
INIT = "init",
|
|
9
15
|
DATA = "data",
|
|
10
16
|
ERROR = "error",
|
|
11
|
-
DEBUG = "debug"
|
|
17
|
+
DEBUG = "debug",
|
|
18
|
+
MODEL_READY = "model_ready"
|
|
12
19
|
}
|
|
13
20
|
/**
|
|
14
21
|
* Аудиопроцесс, добавляющий в цепочку обработки аудио определенный воркер
|
|
15
22
|
* и функции для обмена данных с ним.
|
|
16
23
|
*/
|
|
17
24
|
export declare abstract class WorkerAudioProcessor extends AudioProcessor {
|
|
25
|
+
/**
|
|
26
|
+
* Коллбек, вызывающийся, когда ML-модель эффекта скачана и готова к работе.
|
|
27
|
+
* @param {string} model - Файл модели.
|
|
28
|
+
* @param {number} duration - Время скачивания файлов модели, мс.
|
|
29
|
+
*/
|
|
30
|
+
onModelReady: (model: string, duration: number) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Коллбек, вызывающийся при ошибке ML-модели эффекта:
|
|
33
|
+
* модель не скачалась, не создалась или упала в работе.
|
|
34
|
+
* @param {string} model - Файл модели.
|
|
35
|
+
* @param {string} error - Текст ошибки.
|
|
36
|
+
*/
|
|
37
|
+
onModelError: (model: string, error: string) => void;
|
|
18
38
|
private worker;
|
|
19
39
|
protected performanceMonitor: PerformanceMonitor | null;
|
|
20
40
|
/**
|
|
@@ -28,6 +48,8 @@ export declare abstract class WorkerAudioProcessor extends AudioProcessor {
|
|
|
28
48
|
* @param {string} params.workletName - Зарегистрированное имя ворклета.
|
|
29
49
|
* @param {Function} params.workerFunction - Функция воркера.
|
|
30
50
|
* @param {*[]} params.workerArgs - Параметры для передачи в функцию воркера при его инциализации.
|
|
51
|
+
* @param {string} [params.workerName] - Имя воркера, под которым он виден в DevTools.
|
|
52
|
+
* @param {string} [params.workerModel] - Файл модели, на которой работает весь воркер.
|
|
31
53
|
*/
|
|
32
54
|
init(params: WorkerAudioProcessorParams): Promise<void>;
|
|
33
55
|
resume(): void;
|
package/utils/ModelLoader.d.ts
CHANGED
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
import wav2lip from '@vkontakte/audio-processing';
|
|
2
|
+
/**
|
|
3
|
+
* Скачивает файл модели.
|
|
4
|
+
*/
|
|
5
|
+
export declare function downloadModelFile(url: string): Promise<Uint8Array>;
|
|
2
6
|
/**
|
|
3
7
|
* Скачивает файл модели и кладёт его в файловую систему wasm-модуля.
|
|
4
8
|
* Должен быть вызван до создания алгоритма, который читает модель.
|
|
9
|
+
* @returns время скачивания, мс
|
|
5
10
|
*/
|
|
6
|
-
export declare function loadModelFile(module: wav2lip.Wav2lipModule, urlResolver: (url: string) => string, fileName: string): Promise<
|
|
11
|
+
export declare function loadModelFile(module: wav2lip.Wav2lipModule, urlResolver: (url: string) => string, fileName: string): Promise<number>;
|
|
7
12
|
/**
|
|
8
13
|
* Удаляет файл модели из файловой системы wasm-модуля.
|
|
9
14
|
* Созданный алгоритм хранит веса у себя, файл ему больше не нужен.
|
|
10
15
|
*/
|
|
11
16
|
export declare function unloadModelFile(module: wav2lip.Wav2lipModule, fileName: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* Сообщает из воркера, что модель скачана и готова к работе.
|
|
19
|
+
* @param model - файл модели
|
|
20
|
+
* @param duration - время скачивания файлов модели, мс
|
|
21
|
+
*/
|
|
22
|
+
export declare function postModelReady(model: string, duration: number): void;
|
package/utils/Utils.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import wav2lip from '@vkontakte/audio-processing';
|
|
|
2
2
|
export interface VadWorkerRequest {
|
|
3
3
|
data: ArrayBuffer;
|
|
4
4
|
}
|
|
5
|
-
declare const _default: (createWav2lipModule: typeof wav2lip, urlResolver: (url: string) => string) => void;
|
|
5
|
+
declare const _default: (createWav2lipModule: typeof wav2lip, urlResolver: (url: string) => string, modelFile: string) => void;
|
|
6
6
|
export default _default;
|
|
@@ -7,6 +7,8 @@ export interface VoiceEffect {
|
|
|
7
7
|
configInput: wav2lip.ConfigInput;
|
|
8
8
|
config: wav2lip.Config;
|
|
9
9
|
effect: wav2lip.Effect;
|
|
10
|
+
/** Файл ML-модели, на которой работает эффект */
|
|
11
|
+
model?: string;
|
|
10
12
|
}
|
|
11
13
|
declare const _default: (createWav2lipModule: typeof wav2lip, urlResolver: (url: string) => string) => void;
|
|
12
14
|
export default _default;
|