wawa-lipsync
Version:
A simple and easy-to-use library for real-time lipsyncing with JS and web audio API.
91 lines (87 loc) • 2.29 kB
TypeScript
declare interface Feature {
bands: number[];
deltaBands: number[];
volume: number;
centroid: number;
}
export declare class Lipsync {
features: Feature | null;
viseme: VISEMES;
private audioContext;
private analyser;
private dataArray;
private history;
private historySize;
private sampleRate;
private binWidth;
private bands;
private audioSource?;
private state;
constructor(params?: {
fftSize: number;
historySize: number;
});
connectAudio(audio: HTMLMediaElement): void;
connectMicrophone(): Promise<MediaStreamAudioSourceNode>;
extractFeatures(): {
bands: number[];
deltaBands: number[];
volume: number;
centroid: number;
};
getAveragedFeatures(): Feature;
detectState(): void;
computeVisemeScores(current: Feature, avg: Feature, dVolume: number, dCentroid: number): {
viseme_sil: number;
viseme_PP: number;
viseme_FF: number;
viseme_TH: number;
viseme_DD: number;
viseme_kk: number;
viseme_CH: number;
viseme_SS: number;
viseme_nn: number;
viseme_RR: number;
viseme_aa: number;
viseme_E: number;
viseme_I: number;
viseme_O: number;
viseme_U: number;
};
adjustScoresForConsistency(scores: Record<VISEMES, number>): {
viseme_sil: number;
viseme_PP: number;
viseme_FF: number;
viseme_TH: number;
viseme_DD: number;
viseme_kk: number;
viseme_CH: number;
viseme_SS: number;
viseme_nn: number;
viseme_RR: number;
viseme_aa: number;
viseme_E: number;
viseme_I: number;
viseme_O: number;
viseme_U: number;
};
processAudio(): void;
}
export declare enum VISEMES {
sil = "viseme_sil",
PP = "viseme_PP",
FF = "viseme_FF",
TH = "viseme_TH",
DD = "viseme_DD",
kk = "viseme_kk",
CH = "viseme_CH",
SS = "viseme_SS",
nn = "viseme_nn",
RR = "viseme_RR",
aa = "viseme_aa",
E = "viseme_E",
I = "viseme_I",
O = "viseme_O",
U = "viseme_U"
}
export { }