jptaylor/pipecat-visemes — explained in plain English
Analysis updated 2026-05-18
Animate a talking avatar's mouth in sync with any TTS provider's voice bot audio.
Add lip sync to a Pipecat voice bot without forking the framework.
Benchmark lip-sync accuracy against Praat reference recordings.
Prototype a WebRTC voice bot client that renders real-time mouth animation.
| jptaylor/pipecat-visemes | 0xallam/my-recipe | 0xhassaan/nn-from-scratch | |
|---|---|---|---|
| Stars | 0 | — | 0 |
| Language | Python | Python | Python |
| Last pushed | — | 2022-11-22 | — |
| Maintenance | — | Dormant | — |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 4/5 | 2/5 | 4/5 |
| Audience | developer | general | developer |
Figures from each repo's GitHub metadata at analysis time.
Needs API keys for Deepgram, OpenAI, and Cartesia plus uv and npm to run the server and client.
pipecat-visemes adds server-side lip sync to voice bots built with Pipecat, a framework for building voice AI applications. Instead of asking the browser to analyze audio, or relying on a particular text to speech provider's timing information, the server itself listens to the audio being streamed out and works out how a mouth should move while speaking it, then sends that timing data to the client so it can animate an avatar's mouth in sync with the sound. The project is designed to work with any text to speech service Pipecat supports, since the analysis runs directly on the raw audio rather than depending on any one provider's word or phoneme timestamps. It is built entirely on top of the officially released Pipecat package using its normal extension points, so it does not require a custom fork. A processor sits between the text to speech step and the audio output, analyzing the sound using signal processing techniques borrowed from speech science, such as tracking formants and pitch, and produces short batches of mouth shape data. A second component then delivers those batches to the connected client at the right moment, timed to match when the matching audio actually plays, and drops any batches that become irrelevant if the bot is interrupted mid sentence. The repository includes a working example bot, a small web client built with React that connects over WebRTC and shows the animated mouth along with debugging tools, a test suite, and a benchmark that scores how accurate the lip sync is against reference recordings analyzed with the speech tool Praat. The current analyzer is described as the first of several planned tiers, with future versions meant to use provider supplied viseme events, timestamp based phoneme lookup, or a dedicated audio recognition model, while keeping the same output format so client code never has to change.
Adds server-side lip sync to Pipecat voice bots by analyzing TTS audio and sending mouth-shape timing to clients.
Mainly Python. The stack also includes Python, Pipecat, React.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.