gitwtfhub

wtf is pipecat-visemes?

jptaylor/pipecat-visemes — explained in plain English

Analysis updated 2026-05-18

0PythonAudience · developerComplexity · 4/5Setup · moderate

TL;DR

Adds server-side lip sync to Pipecat voice bots by analyzing TTS audio and sending mouth-shape timing to clients.

Mindmap

mindmap
  root((pipecat visemes))
    What it does
      Server side lip sync
      Works with any TTS
      Playout timed keyframes
    Tech stack
      Python
      Pipecat
      React
      WebRTC
    Use cases
      Animated voice bot avatars
      Lip sync accuracy testing
      WebRTC client demos
    Audience
      Voice AI developers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Animate a talking avatar's mouth in sync with any TTS provider's voice bot audio.

REASON 2

Add lip sync to a Pipecat voice bot without forking the framework.

REASON 3

Benchmark lip-sync accuracy against Praat reference recordings.

REASON 4

Prototype a WebRTC voice bot client that renders real-time mouth animation.

What's in the stack?

PythonPipecatReactWebRTCNumPy

How it stacks up

jptaylor/pipecat-visemes0xallam/my-recipe0xhassaan/nn-from-scratch
Stars00
LanguagePythonPythonPython
Last pushed2022-11-22
MaintenanceDormant
Setup difficultymoderatemoderatemoderate
Complexity4/52/54/5
Audiencedevelopergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Needs API keys for Deepgram, OpenAI, and Cartesia plus uv and npm to run the server and client.

Wtf does this do

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.

Yoink these prompts

Prompt 1
Help me wire LipsyncProcessor into my existing Pipecat bot.py voice bot.
Prompt 2
Explain how pipecat-visemes keeps mouth animation in sync when the bot gets interrupted.
Prompt 3
Show me how to run the accuracy benchmark against the baseline in server/benchmarks.
Prompt 4
Walk me through connecting the React client to a running pipecat-visemes bot over WebRTC.

Frequently asked questions

wtf is pipecat-visemes?

Adds server-side lip sync to Pipecat voice bots by analyzing TTS audio and sending mouth-shape timing to clients.

What language is pipecat-visemes written in?

Mainly Python. The stack also includes Python, Pipecat, React.

How hard is pipecat-visemes to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is pipecat-visemes for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.