For a basic VRM mouth animation, calculate the RMS of the audio being played, map it to a 0–1 weight, smooth that weight, and apply it to the avatar’s aa expression. This makes the mouth open and close with audio intensity; it does not identify vowels or produce phoneme-accurate lip sync. The result depends on audio-specific calibration, the avatar’s authored expressions, and how you handle silence and overlapping expressions.
What RMS-driven `aa` lip sync can—and cannot—do
RMS, or root mean square, estimates the signal strength of a short window of audio samples. Driving one VRM expression with that value is a compact way to make a mouth move while speech is audible, without a transcript or separate timing track. The implementation article describes this as a sound-driven opening and closing approach: implementation and tuning notes.
As an Amazon Associate I earn from qualifying purchases.
It is not a phoneme detector. With only aa, every sound—including an “i” vowel—uses the same mouth shape. RMS alone also cannot reliably time consonant closures or infer articulation. The implementation article names cases such as closure before “m,” “n,” geminate “tsu,” and devoiced vowels as difficult for amplitude-based movement. If those distinctions matter, use a separate articulation estimator or derive viseme timing from text and audio rather than expecting RMS to supply it.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Minimal implementation pattern
The following pseudocode shows the essential mapping. It assumes an audio-analysis path is already receiving samples from the audio being played, and that clamp limits a value to the stated range.
#1 Best Overall
- IDEAL COLLECTIBLE SIZE - At approximately 3.75 inches (9.5 cm) tall, this vinyl mini figurine complements other collectable merchandise and fits perfectly in your display case or on your desk.
- PREMIUM VINYL MATERIAL - Made from high-quality, durable vinyl, this collectible is built to last and withstand daily wear, ensuring long-lasting enjoyment for fans and collectors alike.
- PERFECT GIFT FOR AVATAR: The WAY OF WATER FANS - Ideal for holidays, birthdays, or special occasions and as a present this exclusive figurine is a must-have addition to any Avatar: The Way Of Water merchandise collection
- EXPAND YOUR COLLECTION - Add this unique Jake Sully vinyl display piece to your growing assortment of Funko Pop! figures, and seek out other rare and exclusive collectible items for a complete set
- LEADING POP CULTURE BRAND - Trust in the expertise of Funko, the premier creator of pop culture merchandise that includes vinyl figures, action figures, plush, apparel, board games, and more.
rms = sqrt(sum(sample * sample for sample in samples) / sampleCount)
level = clamp((rms - floor) / (reference - floor), 0, 1)
target = playbackIsActive ? sqrt(level) : 0
opening += (target - opening) * follow
vrm.expressionManager.setValue('aa', opening)
Squaring samples before averaging prevents positive and negative waveform values from canceling as they would in a plain arithmetic mean. The square-root curve is optional: use level directly for a linear response, or sqrt(level) to make weaker inputs more visible. The mapping and smoothing pattern comes from the implementation article; it is a starting point, not a universal calibration.
Choose a floor and reference from the actual audio
Set floor to the level below which the mouth should remain closed, and reference to the level that should produce full opening. The reference must be greater than the floor. Values copied from another project are not reliable defaults: speech volume varies with TTS voice, microphone, gain, and playback level. Check quiet as well as loud passages so the mouth neither disappears during soft speech nor stays saturated through much of the recording.
Rank #2
- WARRIOR GIRL: Lead the warriors of Kyoshi Island with Suki
- MINI-FIGURE: 4-inch mini figure is based on the first book of Avatar: The Last Airbender
- KAWAII STYLE: Mini-figure is specially made in a cute kawaii style
- DYNAMIC POSE: Features dynamic pose with shield and fan plus display base
- COLLECT MORE: Look out for more Avatar mini figures and collectibles
Smooth toward the target
The expression should approach the current target rather than jump directly to it. The common update opening += (target - opening) * follow is simple, but a fixed per-frame coefficient behaves differently at different frame rates. For a production animation, base smoothing on elapsed time if frame rate can vary. More smoothing reduces jitter but can make the mouth lag; less smoothing follows changes more closely but can look unsteady.
Apply weights in a deliberate order
Set the aa value alongside the runtime’s normal VRM update sequence. If another subsystem can set ih, ou, ee, or oh, clear or coordinate those values so they do not conflict with the RMS-driven expression. When playback ends, set the target to zero and close the mouth explicitly. Disconnect or dispose of analysis resources during cleanup.
Rank #3
- FIRE BENDER: Master the element of fire with Zuko (Book Three)
- BOOK THREE: 6.5-inch scale figure is based on “Book Three” of Avatar: The Last Airbender
- SOFT TUNIC: Features 22 points of articulation and a soft good tunic
- ACCESSORIES: Includes five swappable hands one alternate faceplate
- FIRE EFFECT: Also includes fire bending effect to recreate iconic battles
The implementation article describes branching an analysis path from playback without adding a second connection to the audio destination, because its acoustic echo cancellation reference relies on the existing HTML <audio> playback path. Treat that as a constraint of the described playback and AEC setup, not as a universal Web Audio rule. See the audio-graph discussion for that specific arrangement.
Tune for a natural-looking result
Inspect the input distribution, not just its average
Review representative quiet and loud speech, or inspect percentiles of the frame-level RMS values. An average can hide weak movement in quiet passages or excessive saturation in loud ones. Watch the avatar at both ends of the range while adjusting floor and reference.
Rank #4
- THE AVATAR: Master all four elements with Aang (Book Three)
- BOOK THREE: 6.5-inch scale figure is based on “Book Three” of Avatar: The Last Airbender
- SOFT TUNIC: Features 22 points of articulation and a soft goods tunic
- ACCESSORIES: Includes four swappable hands one alternate faceplate
- AIR EFFECT: Also includes a staff and an air bending effect to recreate iconic battles
Choose the response curve by eye
A linear mapping preserves normalized amplitude changes. A square-root curve lifts weaker values and compresses the difference between low and high openings; it may also increase how often the expression reaches its maximum. Neither curve is inherently more natural. Compare them on the actual audio and avatar.
For context, the implementation article reports one author’s comparison on a particular TTS/on-device setup: linear mapping produced an average maximum weight of 0.537, a bottom-quartile weight of 0.375, and 3.5% saturation; square-root mapping produced 0.647, 0.531, and 6.1%, respectively. The same article says its comparison did not evaluate the exact aa-only code shown earlier. These figures are an example of how a response curve can be compared, not expected outcomes for another project. See the author’s reported RMS distribution and curve comparison.
Best Value
- WINGED LEMUR: Join team Avatar with Momo!
- MINI-FIGURE: 4-inch mini figure is based on the hit series Avatar: The Last Airbender
- KAWAII STYLE: Mini-figure is specially made in a cute kawaii style
- DYNAMIC POSE: Features dynamic pose and unique scenery with display base
- COLLECT MORE: Look out for more Avatar mini figures and collectibles
Check the avatar’s actual mouth deformation
VRM standardizes expression keys and weights, not a single universal mouth shape. The appearance of aa depends on the avatar’s configured blend shapes. UniVRM documents how blend shapes can be combined into an expression: UniVRM blend-shape documentation. The VRM 1.0 specification defines the procedural lip-sync keys aa, ih, ou, ee, and oh: VRM 1.0 expression specification.
Prevent emotion expressions from over-opening the mouth
Expression weights can interact. The VRM 1.0 specification warns that applying aa while happy also opens the mouth can make it open too far or look strange, and advises not to lip-sync during happy. Its overrideMouth behavior can block or attenuate procedural lip-sync presets when an emotion is active. Coordinate the emotion and mouth expressions rather than treating each weight as independent; consult the specification’s override guidance.
When to move beyond one expression
| Approach | What it estimates | Benefits | Limits |
|---|---|---|---|
RMS driving aa |
Signal strength mapped to one mouth-opening shape | Small implementation; responds to audio amplitude without phoneme or text timing | No vowel identification; weak consonant closure and phoneme timing; needs audio-specific calibration and visual tuning. Implementation article. |
| Multi-viseme software path | Multiple vowel visemes estimated from audio | More mouth shapes; the documented library uses MFCC vowel classification and writes aa, ih, ou, ee, and oh |
More integration work; a vowel set does not guarantee accurate consonant articulation. Check API and version compatibility and whether the avatar supports the shapes. Library README. |
A text-timed viseme system is another possible direction if transcript timing is available, but the sources cited here do not establish a particular package or method for it.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteOptional library route
The three-vrm-lip-sync README documents inputs including audio-file URLs, AudioBuffer, HTML <audio>, microphone, and MediaStream. Its examples use an MFCC-based vowel classifier, write the five VRM viseme expressions, and include stop and dispose calls. The README demonstrates updating the animation mixer, then lip-sync weights, then calling vrm.update. This describes the repository’s documented usage, not an independently verified guarantee; check compatibility with the versions in your project before adopting it.
Quick Recap
References
- RMS implementation and tuning article
- VRM 1.0 expression specification
- UniVRM blend-shape documentation
- three-vrm-lip-sync README
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




