@vkontakte/calls-audio-effects 1.2.9 → 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-audio-effects",
3
- "version": "1.2.9",
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,6 +0,0 @@
1
- import wav2lip from '@vkontakte/audio-processing';
2
- export interface VmojiLmarksAiWorkerRequest {
3
- data: ArrayBuffer;
4
- }
5
- declare const _default: (createWav2lipModule: typeof wav2lip, urlResolver: (url: string) => string) => void;
6
- export default _default;
@@ -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,5 +0,0 @@
1
- /**
2
- * Простой ворклет, пересылающий входящие семплы по своему порту в формате ArrayBuffer.
3
- * Никак не изменяет исходящие семплы.
4
- */
5
- export declare function pureWorkletFunction(): void;
@@ -1,6 +0,0 @@
1
- /**
2
- * Ворклет, рассчитывающий точки для отрисовки анимации Vmoji
3
- * на основе громкости (амплитуды) входящих семплов.
4
- * Никак не изменяет исходящие семплы.
5
- */
6
- export declare function vmojiLmarksVolumeWorkletFunction(): void;
@@ -1,6 +0,0 @@
1
- /**
2
- * Ворклет, передающий входящие семплы по своему порту
3
- * и подставляющий входящие по порту семплы в качестве исходящих для аудио контекста.
4
- * Используется для внешней обработки входящих семплов.
5
- */
6
- export declare function voiceChangeWorkletFunction(): void;