YOU CAN TURN A THRIFT-STORE BILLY BASS INTO AN AI THAT TALKS BACK

A classic singing Billy Bass fish that answers questions and moves its mouth in time with every reply an AI speaks.

by Cian Gallagher

FULL CAD BOM FIRMWARE DOCS

HomeAI

Built withESP323D printing

difficulty
●●●○○
time
a weekend
license
MIT
repo
repo ACTIVE20 stars
1
Jump to section

COMPAREE VERDICT

This is a clean weekend build if you already run Home Assistant and are comfortable soldering to motor tabs inside a vintage toy. The creator kept Billy's original speaker and motors and replaced the old circuitry with an ESP32-S3, an L298N motor driver, a MAX98357A amplifier and an INMP441 microphone on a 3D-printed backplate. ESPHome listens for a custom 'Hey Billy' wake word and moves the mouth and tail in sync with the audio level of the replies, which come from Home Assistant's voice pipeline with OpenAI handling the conversation. The hardest part is not the code or the print: it is routing wires inside a cramped fish body without breaking old motor tabs, and tuning the thresholds so the mouth closes when the AI stops talking. If you do not already have Home Assistant running or do not want to pay for API calls every time someone asks Billy a question, budget extra setup time.

GOOD TO KNOW

  • —MIT licence, commercial use allowed.
  • —The 3D-printed backplate is Thom Koopman's design, published on MakerWorld and linked from the blog; it is not in this repo.
  • —ESPHome YAML configuration is present, with clear comments.
  • —Build write-up on the creator's blog is detailed and includes wiring diagrams.
  • —No parts list in the repo, but the blog names every module: ESP32-S3 (an ESP32-WROOM config is also in the repo), L298N dual H-bridge, MAX98357A I2S amplifier and INMP441 I2S microphone, with a GPIO wiring table.
  • —Requires a running Home Assistant instance with voice assistant configured and an OpenAI API account (paid service).

Parts to buy

7 items

From our check of the build. Exact quantities and part numbers are in the creator’s BOM.

  • Big Mouth Billy BassFind
  • ESP32-S3 (or ESP32-WROOM with the repo's alternative config)Find
  • L298N dual H-bridge motor driverFind
  • MAX98357A I2S amplifierFind
  • INMP441 I2S microphoneFind
  • Hook-up wireFind
  • ScrewsFind

BUILDS OF THE WEEK

Five open-source builds worth your weekend, every week.

Checked like this one: what’s really in the repo, what it costs, how hard it is. One email, unsubscribe anytime.

Can I build this?

PrintOne back plate to mount the ESP32, motor driver and speaker inside the fish.
BuyBig Mouth Billy Bass, ESP32-S3 (or ESP32-WROOM with the repo's alternative config), L298N dual H-bridge motor driver, MAX98357A I2S amplifier, INMP441 I2S microphone, hook-up wire, screws. Billy's original speaker is reused.
ToolsSoldering iron, screwdriver, wire strippers, 3D printer (PLA is fine), a running Home Assistant instance, OpenAI API account.
SkillsIntermediate: soldering to fragile motor tabs, ESPHome configuration, Home Assistant voice pipeline setup. No custom firmware compile needed.
TimeA weekend if Home Assistant is already running; add another weekend if you are setting it up from scratch.
Cost$$: the ESP32-S3, motor driver, amplifier and microphone are the hardware costs; on top of that you pay OpenAI per use for the conversation step
SafetyLow voltage only: a shared 5V supply feeds the ESP32, amplifier and motor driver. No mains and no lithium cells to charge. Ordinary electronics care.

Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.

Videos

Cian's full step-by-step build video on his KeenOnTech channel: 'Turning Billy Bass into a Smart Home Assistant' (https://youtu.be/favga4OUhY8).

More builds like this

All projects

Gallery

Start here

Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.

  1. 1.Check you have Home Assistant running and can configure ESPHome devices.(If you do not, set it up first — the voice pipeline configuration is a separate learning curve.)
  2. 2.Read the build write-up on ciangallagher.me.(The blog post has the parts list and the GPIO wiring table; the mouth-sync thresholds are in the repo README.)
  3. 3.Print the back plate and gather the electronics before disassembling the fish. (The backplate is Thom Koopman's MakerWorld model, linked from the blog. It is designed around the ESP32 and L298N, so check your board and driver match before printing.)
  4. 4.Flash the ESPHome YAML to the ESP32 and test the motors on the bench before final assembly.(Easier to tune the motor timings when the fish is not sealed up.)

KNOWN ISSUES

  • The repo README does not list parts; use the module list and GPIO wiring table in the blog post and the wiring schematics in the repo, and match your board to the S3 or WROOM YAML config.
  • The original motor tabs are fragile; if you overheat them or pull too hard while soldering, they snap and the fish is done.
  • Motor timing is trial-and-error: if the mouth does not close when the AI stops talking, you adjust delays in the YAML and reflash.
  • This build requires a Home Assistant instance with the voice assistant pipeline configured and an OpenAI API account (paid, per-call billing). If you want offline voice or do not want recurring API costs, you will need to rewrite the integration.
  • The fish body is cramped — routing wires and fitting the speaker without blocking the motors takes patience.
  • If your Home Assistant network is unstable or your internet drops, Billy stops responding. There is no local fallback.

Can I use a different voice assistant or run this offline?

Speech-to-text (Whisper) and text-to-speech (Piper) already run through Home Assistant in this build; only the conversation step calls OpenAI. To go fully offline you would point Home Assistant's conversation agent at a local model instead, which is a separate project not covered in the build guide.

Does the fish need to be a Big Mouth Billy Bass, or will any animatronic work?

The 3D-printed back plate and motor timings are specific to Billy Bass. A different animatronic would need a new mount and different YAML timings.

How much do the OpenAI API calls cost?

The build guide does not give a cost figure. You pay OpenAI per use for the conversation step, so the bill depends on the model you configure in Home Assistant and how often Billy is asked questions; check OpenAI's current pricing.

Can I use a different motor driver than the L298N?

Any dual H-bridge driver that runs on 5V and can handle the current of the Billy Bass motors will work (a DRV8833 is a smaller option), but you may need to adjust the wiring and ESPHome pin assignments.

Community builds

No community builds yet — be the first, we feature the best ones.

Discussion1

FROM THE COMPAREE TEAM

Billy's original DC motors still do all the moving, driven by a cheap L298N H-bridge, and the mouth follows the audio level of the speaker stream. If you have built this or are planning to, did you keep the stock thresholds for mouth open and close, or tune them by ear?

CompareeTEAM12d agoedited

Practical notes from our verification: the repository contains the ESPHome YAML configs for an ESP32-S3 and an ESP32-WROOM, the speaker_tap component that syncs the mouth to the audio, the 'hey billy' wake-word model and wiring schematics for both boards (its BUILD.md is still a placeholder). The 3D-printed backplate is not in the repo; it is Thom Koopman's model on MakerWorld. The creator's blog names the parts: an ESP32-S3, an L298N dual H-bridge for the toy's original motors, a MAX98357A I2S amplifier driving Billy's own speaker and an INMP441 microphone. The README links the full step-by-step build video. The repo was created in August 2025, with the last push in March 2026. The biggest hidden cost is not the hardware but the Home Assistant setup if you do not already run it; the voice pipeline goes Whisper for speech-to-text, OpenAI for the answer and Piper for the voice, so the OpenAI usage is the part that costs money if Billy gets chatty. Correction (4 October 2026): we re-checked this page line by line against the project's own repository, documentation and videos, and fixed errors in earlier versions.

Cian Gallagher

Cian Gallagher (KeenOnTech) builds smart home projects and shares detailed write-ups on his blog. He kept Billy Bass's original mechanics intact and gave it a new brain that syncs mouth movement to AI-generated speech through Home Assistant.

GitHub Web

Star the project on GitHub

DISCLAIMER

  • Comparee is not the author of the projects featured here. All rights to each project belong to its creator — every page links to the original source, and we never host creators’ files.
  • Information is provided without warranty and may become outdated as projects evolve. Prices are indicative bands only — always check the creator’s parts list for current costs.
  • Building and operating any project is at your own responsibility. Protective equipment, safe workshop practice and compliance with local regulations are the builder’s responsibility.