<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.vrchat.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Usr+034f590b-9002-4221-80f8-fab6c7740c0f</id>
	<title>VRChat Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.vrchat.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Usr+034f590b-9002-4221-80f8-fab6c7740c0f"/>
	<link rel="alternate" type="text/html" href="https://wiki.vrchat.com/wiki/Special:Contributions/Usr_034f590b-9002-4221-80f8-fab6c7740c0f"/>
	<updated>2026-06-04T01:09:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki.vrchat.com/index.php?title=Visemes&amp;diff=51531</id>
		<title>Visemes</title>
		<link rel="alternate" type="text/html" href="https://wiki.vrchat.com/index.php?title=Visemes&amp;diff=51531"/>
		<updated>2025-11-05T21:36:32Z</updated>

		<summary type="html">&lt;p&gt;Usr 034f590b-9002-4221-80f8-fab6c7740c0f: /* Resources */ Replaced defunct Meta Developer viseme reference (images removed) with archived mirror from lackofbindings.github.io/Viseme-Reference to preserve original research content.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Noticebox/Community}}{{Noticebox/Stub}}&lt;br /&gt;
&#039;&#039;&#039;Visemes&#039;&#039;&#039; (pormanteau for &#039;&#039;visual phonemes&#039;&#039;) are an [[Avatars|avatar]] feature that mimics lip and mouth movement, when synchronized with human speech. &lt;br /&gt;
&lt;br /&gt;
Within Unity, visemes are a type of, or set of shapekey(s) that can be programmed onto an avatar. In the Oculus LipSync Library, there are 15 mouth‑shape targets that can be used while you speak.&lt;br /&gt;
&lt;br /&gt;
VRChat converts your live microphone audio through that library, converts the sound into a single integer (&amp;lt;code&amp;gt;0‑14&amp;lt;/code&amp;gt;) every video frame, and writes it into the built‑in Animator parameter &#039;&#039;&#039;&amp;lt;code&amp;gt;Viseme&amp;lt;/code&amp;gt; (often shown in the docs as &amp;quot;VisemeOculus&amp;quot;)&#039;&#039;&#039;. Your avatar&#039;s FX layer (or the [[VRChat SDK|VRChat SDK&#039;s]] default layer) turns that number into blend‑shape or bone animation so the mouth appears to pronounce your words in real time.&lt;br /&gt;
&lt;br /&gt;
=== Viseme Slots ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Index&lt;br /&gt;
!Name&lt;br /&gt;
!Phonemes&lt;br /&gt;
!Examples&lt;br /&gt;
!Mouth description&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|&#039;&#039;&#039;sil&#039;&#039;&#039;&lt;br /&gt;
|(silence)&lt;br /&gt;
|&lt;br /&gt;
|Neutral, lips relaxed&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&#039;&#039;&#039;pp&#039;&#039;&#039;&lt;br /&gt;
|p, b, m&lt;br /&gt;
|put, bat, mat&lt;br /&gt;
|Lips fully closed, slight pout&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|&#039;&#039;&#039;ff&#039;&#039;&#039;&lt;br /&gt;
|f, v&lt;br /&gt;
|fat, vat&lt;br /&gt;
|Lower lip touches upper teeth&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&#039;&#039;&#039;th&#039;&#039;&#039;&lt;br /&gt;
|th&lt;br /&gt;
|that&lt;br /&gt;
|Tongue between teeth&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&#039;&#039;&#039;dd&#039;&#039;&#039;&lt;br /&gt;
|t, d&lt;br /&gt;
|tip, dip&lt;br /&gt;
|Tip of tongue touches ridge&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|&#039;&#039;&#039;kk&#039;&#039;&#039;&lt;br /&gt;
|k, g&lt;br /&gt;
|call, gas&lt;br /&gt;
|Back of tongue touches palate&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|&#039;&#039;&#039;ch&#039;&#039;&#039;&lt;br /&gt;
|ch, sh, ts, dz, j&lt;br /&gt;
|chair, she, its, join&lt;br /&gt;
|Lips rounded, jaw slightly down&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|&#039;&#039;&#039;ss&#039;&#039;&#039;&lt;br /&gt;
|s, z&lt;br /&gt;
|sit, zoom&lt;br /&gt;
|Teeth almost together, lips wide&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|&#039;&#039;&#039;nn&#039;&#039;&#039;&lt;br /&gt;
|n, l&lt;br /&gt;
|lot, not&lt;br /&gt;
|Tongue presses ridge, lips apart&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|&#039;&#039;&#039;rr&#039;&#039;&#039;&lt;br /&gt;
|r&lt;br /&gt;
|red&lt;br /&gt;
|Lips slightly rounded, cheeks firm&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|&#039;&#039;&#039;aa&#039;&#039;&#039;&lt;br /&gt;
|ah, aw&lt;br /&gt;
|fast, father&lt;br /&gt;
|Jaw open, oval mouth&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|&#039;&#039;&#039;e&#039;&#039;&#039;&lt;br /&gt;
|eh&lt;br /&gt;
|men&lt;br /&gt;
|Mouth wider, mid‑open&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|&#039;&#039;&#039;i&#039;&#039;&#039;&lt;br /&gt;
|ih, ee&lt;br /&gt;
|tip, tea&lt;br /&gt;
|Lips stretched, jaw higher&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|&#039;&#039;&#039;o&#039;&#039;&#039;&lt;br /&gt;
|oh&lt;br /&gt;
|toe&lt;br /&gt;
|Lips rounded, jaw mid‑open&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|&#039;&#039;&#039;u &#039;&#039;&#039;&lt;br /&gt;
|ou&lt;br /&gt;
|boot&lt;br /&gt;
|Lips rounded, slightly forward&lt;br /&gt;
|}&lt;br /&gt;
[https://developers.meta.com/horizon/blog/tech-note-enhancing-oculus-lipsync-with-deep-learning/?utm_source=chatgpt.com Oculus Docs] use the longer spellings &#039;&#039;ih/oh/ou&#039;&#039;; [https://creators.vrchat.com/avatars/animator-parameters/#viseme-values VRChat&#039;s parameter list] trims them to &#039;&#039;i/o/u&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Wiring Avatar ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Add blend‑shapes (shape keys) or a jaw bone.&#039;&#039;&#039;  Each shapekey should be named exactly like the codes above (case‑sensitive in Unity). Keep the &#039;&#039;sil&#039;&#039; key—even if it only moves one vertex—to stop Unity deleting it on import.&lt;br /&gt;
# &#039;&#039;&#039;Set the Avatar Descriptor’s › Lip‑Sync mode to “Viseme Blend Shape”.&#039;&#039;&#039;  Hit &#039;&#039;&#039;Auto Detect!&#039;&#039;&#039; first; if the SDK guesses wrong, pick the correct shapekey for every slot in the dropdown.&lt;br /&gt;
# &#039;&#039;&#039;Test in‑editor:&#039;&#039;&#039; play the scene, enable the &#039;&#039;&#039;Lip Sync&#039;&#039;&#039; preview on the descriptor, or simply talk into your mic while the Game view is active.&lt;br /&gt;
# &#039;&#039;&#039;Fine‑tune in your FX Animator (optional).&#039;&#039;&#039;  The int parameter &#039;&#039;&#039;&amp;lt;code&amp;gt;Viseme&amp;lt;/code&amp;gt;&#039;&#039;&#039; updates every frame; you can:&lt;br /&gt;
#* Drive a 15‑way BlendTree that weights each shapekey.&lt;br /&gt;
#* Branch to custom mouth animations (e.g., a “big scream” version of &amp;lt;code&amp;gt;aa&amp;lt;/code&amp;gt;) when volume is high by also reading the &amp;lt;code&amp;gt;Voice&amp;lt;/code&amp;gt; float (0‑1).&lt;br /&gt;
# &#039;&#039;&#039;Performance tip:&#039;&#039;&#039; keep viseme blend‑shapes on a separate head mesh; the GPU only has to update the vertices it actually changes.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting quick‑hits ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Symptom&lt;br /&gt;
!Likely cause&lt;br /&gt;
!Fix&lt;br /&gt;
|-&lt;br /&gt;
|Mouth never moves&lt;br /&gt;
|Lip‑Sync mode still on &#039;&#039;Jaw Flap&#039;&#039; or &#039;&#039;Default&#039;&#039;&lt;br /&gt;
|Switch to &#039;&#039;Viseme Blend Shape&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Wrong shapes (e.g., “th” looks like “ff”)&lt;br /&gt;
|Mis‑matched dropdown slots&lt;br /&gt;
|Re‑assign each viseme in the Descriptor&lt;br /&gt;
|-&lt;br /&gt;
|Shapes snap instead of blend&lt;br /&gt;
|Using an &#039;&#039;Int&#039;&#039; blend‑tree with thresholds too close&lt;br /&gt;
|Use a &#039;&#039;1D float&#039;&#039; tree driven by 0‑14 or add smoothing&lt;br /&gt;
|-&lt;br /&gt;
|Shapes missing on Quest&lt;br /&gt;
|Head mesh not included in the Android build&lt;br /&gt;
|In Build tab, mark head mesh for both PC &amp;amp; Android&lt;br /&gt;
|}&lt;br /&gt;
==== Take‑away ====&lt;br /&gt;
&#039;&#039;Visemes are simply numbered mouth cues.&#039;&#039; Name 15 blend‑shapes (or equivalent bone poses) to match the Oculus set, point your Avatar Descriptor at them, and VRChat’s built‑in &amp;lt;code&amp;gt;Viseme&amp;lt;/code&amp;gt; parameter will make your character lip‑sync automatically—no extra scripts required.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* [https://creators.vrchat.com/avatars/animator-parameters/#viseme-values Animation Parameters] on VRChat&#039;s Creator Documentation&lt;br /&gt;
* &amp;lt;s&amp;gt;[https://developers.meta.com/horizon/documentation/unity/audio-ovrlipsync-viseme-reference Viseme Reference] on Meta Developers&#039; Documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
* [https://lackofbindings.github.io/Viseme-Reference/ Viseme Reference] on github.io&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Avatars]]&lt;br /&gt;
* [[Blendshapes]]&lt;br /&gt;
* [[VRChat Creator Companion]]&lt;br /&gt;
* [[VRChat SDK]]&lt;/div&gt;</summary>
		<author><name>Usr 034f590b-9002-4221-80f8-fab6c7740c0f</name></author>
	</entry>
</feed>