/** * Audio-driven mouth animation addon for xrblocks. The primary export, * `LipsyncMouth`, is a small `xb.Script` that pulls audio from a * `MediaStream`, runs an FFT + formant-based viseme mapper on it every * frame, and writes the viseme weights to a `setVisemes`-compatible * target — typically the `face` on a netblocks `RemoteUserAvatar`, or * a standalone `xb.StylizedFace` for non-multiplayer use. * * The face primitive itself (`StylizedFace`) and the viseme contract * type (`VisemeWeights`) live in xrblocks core so neither addon has * to depend on the other. * * @see {@link LipsyncMouth} */ export { LipsyncMouth } from './LipsyncMouth'; export type { LipsyncMouthOptions, VisemeTarget } from './LipsyncMouth'; export { FormantVisemeMapper } from './FormantVisemeMapper'; export type { AudioFeatures, FormantVisemeMapperOptions, } from './FormantVisemeMapper'; export { MfccExtractor, NUM_MFCC } from './MfccExtractor'; export type { MfccExtractorOptions } from './MfccExtractor'; export { ARKIT_BLENDSHAPE_NAMES, blendshapesToVisemes, ZERO_VISEME, } from './BlendshapeReducer'; export type { VisemeWeights } from './BlendshapeReducer'; export { computeAudioFeatures } from './computeAudioFeatures'; export type { AudioFeatureInputs } from './computeAudioFeatures';