World's First Evil Talking Labubu

About the project

Labubus have invaded every sidewalk we can think of. So much so that it started dragging around its own urban legend : Labubus are reincarnation of the mezopotamian god Pazuzu. So I tried to see what that would actually look like with a bit of engineering.

Project info

Difficulty: Easy

Platforms: Raspberry Pi

Estimated time: 1 day

License: GNU General Public License, version 3 or later (GPL3+)

Items used in this project

Hardware components

MEMS microphone MEMS microphone x 1
DAC DAC x 1
Coin-sized speaker Coin-sized speaker x 1
Raspberry Pi Zero 2 W Raspberry Pi Zero 2 W x 1
Mini vibration motor Mini vibration motor x 1
500 mAh battery 500 mAh battery x 1
Tiny Battery Charger Tiny Battery Charger x 1
Bunch of Wires Bunch of Wires x 1
Resistors & Capacitors Resistors & Capacitors x 1

View all

Software apps and online services

Raspberry Pi OS Raspberry Pi OS
Python Venv Python Venv
Required libraries on the github Required libraries on the github
OpenAI Whisper API & TTS API OpenAI Whisper API & TTS API
AI of your choice for answer generation AI of your choice for answer generation

Hand tools and fabrication machines

Cutter Cutter x 1
Soldering Iron Soldering Iron x 1
Cable stripper/cutter Cable stripper/cutter x 1

Story

Everyone sensitive enough to the climate cause and critical enough of our overconsumption, dislikes the exponential rise of the Labubu. Dressing up third-world country exploitation in a creepy-cute aka "kimo-kawaii" doll filled to the brim with microplastics is the exact thing that we need less of. However, it's already too late, $1B worth of units have been sold and the ecological impact has already been added to our ever-growing carbon debt. So why not make fun of it?

The Labubu's rise to glory was accompanied with concerned parents, religious groups and communities. The doll's appearance, method of wearing and name is considered to be suspiciously close to the mesopotamian demon Pazuzu.Pazuzu and Labubu side by side


Finding that this would be a good angle for my project, I jumped head first, and equipped my newly-purchased doll with speaking and vibrating capabilities. I struggled quite a bit making everything fit in it. The battery had to be much smaller than originally expected, so did the microcontroller, and the movement circuit. I originally though i could use the Seeed Studio Xiao Sense for this because of its surprisingly small form factor, its on-board Mems microphone and its spectacular power efficiency. But by that point, I already knew I really wanted to equip the doll with a wake-word activation software to make the interaction as seamless as possible. And the service i ended using : Picovoice, wasn't compatible with ESP-32 based micro-controllers. So I gave up that idea and opted for the Raspberry Pi Zero 2.

Now in possession of a Labubu with sound and movement capabilities, I needed to get some code running in there. Now, the Raspberry Pi Zero 2 is a tough cookie but it's pretty far from being able to run an AI model by itself... So in comes the multi-billion venture capitals backed company... OpenAI. Despite their obvious disregard for artists, creatives and the environment, their tech team is absolutely top-notch making their API... ridiculously easy to use. Ultimately, I practically set up my whole first prototype on their services. Record the voice, wait for a long enough silence, send the wav file to OpenAI Whisper (STT), process the returned text with GPT-5, get that answer through OpenAI TTS and play if from the on-board speaker and there we go. 

But this whole thing was really anticlimactic, the response was flat and uninteresting, the speed was acceptable but not blazing fast and no matter the system prompt, I couldn't get it anywhere close to being interesting...

So it was time to move away from OpenAI and pimp my doll (like the show, not like the other type of pimp). I looked through hugging face for uncensored models and ended up finding a gem: 

The Dolphin-Mistral-24B-Venice-Edition. 

I have used dolphin models in the past to run them locally so I was always pretty limited because there's no way I can run any thing larger than a 7B model on my toaster of a computer... But this one had a full fledged API, reasonably priced and more than reasonably fast! So I set that up with the OpenAI python library (that's pretty cool actually), wrote a VILE system prompt mentioning heavily that the character I wanted was the mesopotamian demon Pazuzu trapped in the body of this Labubu doll and took it for a spin.
The results are in the video :)




Notes: If. you want to reproduce anything similar, note that a DAC amplifier and a MEMS microphone cannot work simultaneously if you only have one i2S bus on your microprocessor. The way I did it is i connected both the DAC and the mic to the same pins. And deactivated one before activating the other. The only downside to this was the speaker making a sound when the mic was turned on and off.

Schematics, diagrams and documents

the circuit

I'm sorry, i don't do schematics but roughly you have all the elements I mentioned in the hardware parts. All connected to the pi zero 2 through GPIO pins

Code

Github repo

The whole code is here, venice.py is what you want to run

Credits

Leave your feedback...