@vkontakte/calls-audio-effects 1.2.8 → 1.2.10-dev.76a536b4.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 +5307 -6
- package/audio-effects.esm.js +5297 -6
- package/package.json +3 -2
- package/AudioEffects.d.ts +0 -4
- package/effects/EffectVmojiLmarksAi.d.ts +0 -17
- package/effects/EffectVmojiLmarksVolume.d.ts +0 -14
- package/effects/EffectVoiceChange.d.ts +0 -47
- package/processor/AudioProcessor.d.ts +0 -58
- package/processor/WorkerAudioProcessor.d.ts +0 -41
- package/utils/Logger.d.ts +0 -9
- package/utils/PerformanceMonitor.d.ts +0 -58
- package/utils/Utils.d.ts +0 -1
- package/workers/VmojiLmarksAiWorker.d.ts +0 -6
- package/workers/VoiceChangeWorker.d.ts +0 -12
- package/worklets/PureWorklet.d.ts +0 -5
- package/worklets/VmojiLmarksVolumeWorklet.d.ts +0 -6
- package/worklets/VoiceChangeWorklet.d.ts +0 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/calls-audio-effects",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.10-dev.76a536b4.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,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.8",
|
|
18
|
+
"onnxruntime-web": "^1.26.0"
|
|
18
19
|
}
|
|
19
20
|
}
|
package/AudioEffects.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { EffectVmojiLmarksVolume } from './effects/EffectVmojiLmarksVolume';
|
|
2
|
-
export { EffectVmojiLmarksAi } from './effects/EffectVmojiLmarksAi';
|
|
3
|
-
export { EffectVoiceChange, EffectVoiceChangeMode, VoiceChangeEffectType } from './effects/EffectVoiceChange';
|
|
4
|
-
export { PerformanceMonitorMode } from './utils/PerformanceMonitor';
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { DataProcessing } from '../processor/AudioProcessor';
|
|
2
|
-
import { WorkerAudioProcessor } from '../processor/WorkerAudioProcessor';
|
|
3
|
-
/**
|
|
4
|
-
* Эффект, генерирующий точки для отрисовки анимации Vmoji
|
|
5
|
-
* из входящего аудиопотока с использованием воркера с нейронкой в wasm-модуле wav2lip.
|
|
6
|
-
*/
|
|
7
|
-
export declare class EffectVmojiLmarksAi extends WorkerAudioProcessor implements DataProcessing {
|
|
8
|
-
/**
|
|
9
|
-
* Коллбек, вызывающийся при генерации очередной серии точек Vmoji
|
|
10
|
-
* @param {ArrayBuffer} data - точки Vmoji
|
|
11
|
-
*/
|
|
12
|
-
onData: (data: ArrayBuffer) => void;
|
|
13
|
-
init(): Promise<void>;
|
|
14
|
-
protected onWorkletData(data: ArrayBuffer): void;
|
|
15
|
-
protected onWorkerData(data: ArrayBuffer): void;
|
|
16
|
-
static isSupported(): boolean;
|
|
17
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { AudioProcessor, DataProcessing } from '../processor/AudioProcessor';
|
|
2
|
-
/**
|
|
3
|
-
* Эффект, генерирующий точки для отрисовки анимации Vmoji
|
|
4
|
-
* из входящего аудиопотока на основе громкости аудио (plain js).
|
|
5
|
-
*/
|
|
6
|
-
export declare class EffectVmojiLmarksVolume extends AudioProcessor implements DataProcessing {
|
|
7
|
-
/**
|
|
8
|
-
* Коллбек, вызывающийся при генерации очередной серии точек Vmoji
|
|
9
|
-
* @param {ArrayBuffer} data - точки Vmoji
|
|
10
|
-
*/
|
|
11
|
-
onData: (data: ArrayBuffer) => void;
|
|
12
|
-
init(): Promise<void>;
|
|
13
|
-
protected onWorkletData(data: ArrayBuffer): void;
|
|
14
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { WorkerAudioProcessor } from '../processor/WorkerAudioProcessor';
|
|
2
|
-
import { PerformanceMonitorOptions } from '../utils/PerformanceMonitor';
|
|
3
|
-
export interface VoiceChangeWorkletRequest {
|
|
4
|
-
data: ArrayBuffer;
|
|
5
|
-
}
|
|
6
|
-
export declare enum EffectVoiceChangeMode {
|
|
7
|
-
/** режим проигрывания обработанного аудио через стандартный аудио выход */
|
|
8
|
-
PLAYBACK = "playback",
|
|
9
|
-
/** режим вывода обработанного аудио в outputStream */
|
|
10
|
-
OUTPUT_STREAM = "output_stream"
|
|
11
|
-
}
|
|
12
|
-
export declare const enum VoiceChangeEffectType {
|
|
13
|
-
BALLOON = "balloon",
|
|
14
|
-
CATHEDRAL = "cathedral",
|
|
15
|
-
CHORUS = "chorus",
|
|
16
|
-
DISTORTION = "distortion",
|
|
17
|
-
ECHO = "echo",
|
|
18
|
-
EVIL = "evil",
|
|
19
|
-
GIANT = "giant",
|
|
20
|
-
HALL = "hall",
|
|
21
|
-
PHASER = "phaser",
|
|
22
|
-
ROBOT = "robot",
|
|
23
|
-
SQUIRELL = "squirell",
|
|
24
|
-
DENOISE = "denoise"
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Эффект, изменяющий голос из входящего аудиопотока
|
|
28
|
-
* с использованием wasm-модуля wav2lip и направляющий
|
|
29
|
-
* обработанный голос на стандартный выход (динамик) или в отдельный MediaStream.
|
|
30
|
-
*/
|
|
31
|
-
export declare class EffectVoiceChange extends WorkerAudioProcessor {
|
|
32
|
-
private mode;
|
|
33
|
-
/**
|
|
34
|
-
* @typedef {string} EffectVoiceChangeMode
|
|
35
|
-
* @typedef {Object} PerformanceMonitorOptions
|
|
36
|
-
* @param {EffectVoiceChangeMode} mode - Режим вывода: аудио выход или MediaStream
|
|
37
|
-
* @param {PerformanceMonitorOptions} [performanceMonitorSettings] - Настройки мониторинга производительности.
|
|
38
|
-
* Для применения настроек по-умолчанию следует передать пустой объект.
|
|
39
|
-
* Если не определены, мониторинг не будет производиться.
|
|
40
|
-
*/
|
|
41
|
-
constructor(mode?: EffectVoiceChangeMode, performanceMonitorSettings?: PerformanceMonitorOptions);
|
|
42
|
-
init(): Promise<void>;
|
|
43
|
-
setEffects(effects: string[], isPreset?: false): void;
|
|
44
|
-
setEffects(effects: VoiceChangeEffectType[], isPreset: true): void;
|
|
45
|
-
protected onWorkletData(data: ArrayBuffer): void;
|
|
46
|
-
protected onWorkerData(data: ArrayBuffer): void;
|
|
47
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Logger } from '../utils/Logger';
|
|
2
|
-
export interface AudioProcessorParams {
|
|
3
|
-
sampleRate?: number;
|
|
4
|
-
isOutputAudio?: boolean;
|
|
5
|
-
isOutputStream?: boolean;
|
|
6
|
-
workletFunction: Function;
|
|
7
|
-
workletName: string;
|
|
8
|
-
}
|
|
9
|
-
export declare const enum WorkletResponseType {
|
|
10
|
-
INIT = "init",
|
|
11
|
-
DATA = "data"
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Интерфейс, добавляющий классу AudioProcessor коллбек для передачи данных наружу.
|
|
15
|
-
*/
|
|
16
|
-
export interface DataProcessing {
|
|
17
|
-
onData: (data: any) => void;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Базовый класс аудиопроцессинга,
|
|
21
|
-
* подразумевающий использование определенного AudioWorklet
|
|
22
|
-
* для обработки входящего аудио.
|
|
23
|
-
*/
|
|
24
|
-
export declare abstract class AudioProcessor {
|
|
25
|
-
/**
|
|
26
|
-
* MediaStream, в который производится вывод результата
|
|
27
|
-
* обработки аудио, если при инициализации был установлен флаг isOutputStream.
|
|
28
|
-
*/
|
|
29
|
-
outputStream: MediaStream | null;
|
|
30
|
-
isInitialized: boolean;
|
|
31
|
-
protected audioContext: AudioContext | null;
|
|
32
|
-
protected workletNode: AudioWorkletNode | null;
|
|
33
|
-
private sourceNode;
|
|
34
|
-
protected logger: Logger;
|
|
35
|
-
/**
|
|
36
|
-
* @typedef {Object} AudioProcessorParams
|
|
37
|
-
* @param {AudioProcessorParams} params
|
|
38
|
-
* @param {number} [params.sampleRate] - Специфичный sampleRate для создания AudioContext.
|
|
39
|
-
* По-умолчанию используется значение на основе использумого аудио оборудования.
|
|
40
|
-
* @param {boolean} [params.isOutputAudio=false] - Выводить ли результат работы AudioWorklet
|
|
41
|
-
* на стандартный выход AudioContext (динамик).
|
|
42
|
-
* @param {boolean} [params.isOutputStream=false] - Выводить ли результат работы AudioWorklet
|
|
43
|
-
* в отдельный MediaStream outputStream, доступный публично.
|
|
44
|
-
* @param {Function} params.workletFunction - Функция, объявляющая и регистрирующая класс ворклета.
|
|
45
|
-
* @param {string} params.workletName - Зарегистрированное имя ворклета.
|
|
46
|
-
*/
|
|
47
|
-
init({ sampleRate, isOutputAudio, isOutputStream, workletFunction, workletName, }: AudioProcessorParams): Promise<void>;
|
|
48
|
-
setSource(source: MediaStream | MediaStreamTrack | null): void;
|
|
49
|
-
destroy(): void;
|
|
50
|
-
resume(): void;
|
|
51
|
-
pause(): void;
|
|
52
|
-
setLogger(loggerFunction?: Function, loggerName?: string): void;
|
|
53
|
-
static isSupported(): boolean;
|
|
54
|
-
private createAudioContext;
|
|
55
|
-
private createWorklet;
|
|
56
|
-
protected abstract onWorkletData(data: unknown): void;
|
|
57
|
-
protected sendDataToWorklet(data: any, transfer?: any[]): void;
|
|
58
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { PerformanceMonitor } from '../utils/PerformanceMonitor';
|
|
2
|
-
import { AudioProcessor, AudioProcessorParams } from './AudioProcessor';
|
|
3
|
-
export interface WorkerAudioProcessorParams extends AudioProcessorParams {
|
|
4
|
-
workerFunctionString: string;
|
|
5
|
-
workerArgs: unknown[];
|
|
6
|
-
}
|
|
7
|
-
export declare const enum WorkerResponseType {
|
|
8
|
-
INIT = "init",
|
|
9
|
-
DATA = "data",
|
|
10
|
-
ERROR = "error",
|
|
11
|
-
DEBUG = "debug"
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Аудиопроцесс, добавляющий в цепочку обработки аудио определенный воркер
|
|
15
|
-
* и функции для обмена данных с ним.
|
|
16
|
-
*/
|
|
17
|
-
export declare abstract class WorkerAudioProcessor extends AudioProcessor {
|
|
18
|
-
private worker;
|
|
19
|
-
protected performanceMonitor: PerformanceMonitor | null;
|
|
20
|
-
/**
|
|
21
|
-
* @typedef {Object} WorkerAudioProcessorParams
|
|
22
|
-
* @param {WorkerAudioProcessorParams} params
|
|
23
|
-
* @param {number} [params.sampleRate] - Специфичный sampleRate для создания AudioContext.
|
|
24
|
-
* По-умолчанию используется значение на основе использумого аудио оборудования.
|
|
25
|
-
* @param {boolean} [params.isOutputAudio=false] - Выводить ли результат работы AudioWorklet
|
|
26
|
-
* на стандартный выход AudioContext (динамик).
|
|
27
|
-
* @param {Function} params.workletFunction - Функция, объявляющая и регистрирующая класс ворклета.
|
|
28
|
-
* @param {string} params.workletName - Зарегистрированное имя ворклета.
|
|
29
|
-
* @param {Function} params.workerFunction - Функция воркера.
|
|
30
|
-
* @param {*[]} params.workerArgs - Параметры для передачи в функцию воркера при его инциализации.
|
|
31
|
-
*/
|
|
32
|
-
init(params: WorkerAudioProcessorParams): Promise<void>;
|
|
33
|
-
resume(): void;
|
|
34
|
-
pause(): void;
|
|
35
|
-
setLogger(loggerFunction?: Function, loggerName?: string): void;
|
|
36
|
-
destroy(): void;
|
|
37
|
-
protected abstract onWorkerData(data: unknown): void;
|
|
38
|
-
protected sendDataToWorker(data: any, transfer?: any[]): void;
|
|
39
|
-
static isSupported(): boolean;
|
|
40
|
-
private createWorker;
|
|
41
|
-
}
|
package/utils/Logger.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export declare class Logger {
|
|
2
|
-
private loggerName;
|
|
3
|
-
private loggerFunction;
|
|
4
|
-
constructor(loggerFunction: Function, loggerName?: string);
|
|
5
|
-
debug(...args: any[]): void;
|
|
6
|
-
log(...args: any[]): void;
|
|
7
|
-
warn(...args: any[]): void;
|
|
8
|
-
error(...args: any[]): void;
|
|
9
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Logger } from './Logger';
|
|
2
|
-
export declare const enum PerformanceMonitorMode {
|
|
3
|
-
PEAK = "peak",
|
|
4
|
-
AVG = "avg"
|
|
5
|
-
}
|
|
6
|
-
export interface PerformanceMonitorOptions {
|
|
7
|
-
badPerformanceThreshold?: number;
|
|
8
|
-
measureIntervalMs?: number;
|
|
9
|
-
mode?: PerformanceMonitorMode;
|
|
10
|
-
logPerformanceChecks?: boolean;
|
|
11
|
-
maxCountBadPerformanceBeforeCb?: number;
|
|
12
|
-
onBadPerformanceCb: Function;
|
|
13
|
-
onCheckPerformanceCb?: Function;
|
|
14
|
-
}
|
|
15
|
-
export declare class PerformanceMonitor {
|
|
16
|
-
private readonly threshold;
|
|
17
|
-
private readonly intervalMs;
|
|
18
|
-
private readonly mode;
|
|
19
|
-
private readonly logPerformanceChecks;
|
|
20
|
-
private readonly maxCountBadPerformanceBeforeCb;
|
|
21
|
-
private readonly onBadPerformanceCb;
|
|
22
|
-
private readonly onCheckPerformanceCb?;
|
|
23
|
-
private logger;
|
|
24
|
-
private interval;
|
|
25
|
-
private countBadPerformanceBeforeCb;
|
|
26
|
-
private beginMarkTs;
|
|
27
|
-
private performanceMeasures;
|
|
28
|
-
/**
|
|
29
|
-
* @typedef {Object} PerformanceMonitorOptions
|
|
30
|
-
* @param {PerformanceMonitorOptions} params
|
|
31
|
-
* @param {number} [params.badPerformanceThreshold=1.4] - Порог низкого значения производительности в мс,
|
|
32
|
-
* при котором происходит вызов callback.
|
|
33
|
-
* По-умолчанию - 1.4 мс.
|
|
34
|
-
* @param {number} [params.measureIntervalMs=1000] - Частота проверок проверок производительности в мс.
|
|
35
|
-
* При значении mode = 'avg', также является периодом агрегации значений.
|
|
36
|
-
* По-умолчанию - 1000 мс.
|
|
37
|
-
* @param {string} [params.mode='avg'] - Режим работы.
|
|
38
|
-
* 'avg' - проверка производительности по среднему значению за период.
|
|
39
|
-
* 'peak' - проверка производительности по максимальному значению за период.
|
|
40
|
-
* По-умолчанию - 'avg'.
|
|
41
|
-
* @param {boolean} [params.logPerformanceChecks=false] - Логировать ли проверки производительности
|
|
42
|
-
* со значениями для проверки.
|
|
43
|
-
* По-умолчанию - false.
|
|
44
|
-
* @param {number} [params.maxCountBadPerformanceBeforeCb] - Количество определенного спада производительности перед тем, как сработает коллбек.
|
|
45
|
-
* По-умолчанию - 1.
|
|
46
|
-
* @param {Function} params.onBadPerformanceCb - Коллбек для вызова при достижения значений "плохой" производительности.
|
|
47
|
-
* Вызывается с передачей "плохого" значения первым аргументом.
|
|
48
|
-
* @param {Function} params.onCheckPerformanceCb - Коллбек для вызова при проверке производительности.
|
|
49
|
-
* Вызывается с передачей значения измерения первым аргументом.
|
|
50
|
-
*/
|
|
51
|
-
constructor({ badPerformanceThreshold, measureIntervalMs, mode, logPerformanceChecks, maxCountBadPerformanceBeforeCb, onBadPerformanceCb, onCheckPerformanceCb, }: PerformanceMonitorOptions);
|
|
52
|
-
private check;
|
|
53
|
-
markBegin(): void;
|
|
54
|
-
markEnd(): void;
|
|
55
|
-
start(): void;
|
|
56
|
-
stop(): void;
|
|
57
|
-
setLogger(logger: Logger): void;
|
|
58
|
-
}
|
package/utils/Utils.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function createBlobObject(functionData: Function | string, args?: unknown[]): string;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import wav2lip from '@vkontakte/audio-processing';
|
|
2
|
-
export declare const enum VoiceChangeWorkerRequestType {
|
|
3
|
-
SET_EFFECTS = "set_effects",
|
|
4
|
-
DATA = "data"
|
|
5
|
-
}
|
|
6
|
-
export interface VoiceEffect {
|
|
7
|
-
configInput: wav2lip.ConfigInput;
|
|
8
|
-
config: wav2lip.Config;
|
|
9
|
-
effect: wav2lip.Effect;
|
|
10
|
-
}
|
|
11
|
-
declare const _default: (createWav2lipModule: typeof wav2lip, urlResolver: (url: string) => string) => void;
|
|
12
|
-
export default _default;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ворклет, передающий входящие семплы по своему порту
|
|
3
|
-
* и подставляющий входящие по порту семплы в качестве исходящих для аудио контекста.
|
|
4
|
-
* Используется для внешней обработки входящих семплов.
|
|
5
|
-
*/
|
|
6
|
-
export declare function voiceChangeWorkletFunction(): void;
|