3D-printable speaker enclosures for building a custom voice assistant using ReSpeaker boards, a quality full-range driver, and external amplification. Designed as an Echo Studio replacement with Home Assistant integration.
This project provides parametric OpenSCAD designs for building a high-quality voice assistant speaker. Four enclosure variants are included to match different ReSpeaker boards and aesthetic preferences.
Features:
- High-quality audio from a proper full-range driver (not tiny onboard speakers)
- External amplification for room-filling sound
- 360° or directional sound options
- Fully parametric designs — customize dimensions easily
- Designed for FDM 3D printing
| Design | Board | Form Factor | Dimensions | Sound Pattern |
|---|---|---|---|---|
enclosure_cube_refined.scad |
ReSpeaker Lite | Cube | 120×120×145mm | Front-firing |
enclosure_cylinder_downfiring.scad |
ReSpeaker Lite | Cylinder | Ø125×175mm | 360° dispersion |
enclosure_xvf3800_cube.scad |
ReSpeaker XVF3800 | Cube | 130×130×150mm | Front-firing |
enclosure_xvf3800_cylinder.scad |
ReSpeaker XVF3800 | Cylinder | Ø130×180mm | 360° dispersion |
ReSpeaker Lite (~$25) — Budget-friendly, 2-mic linear array, good for smaller rooms
- Cube: Best for desk use, directional listening
- Cylinder: Room-filling sound, Echo-style aesthetic
ReSpeaker XVF3800 (~$55) — Premium 4-mic circular array with beamforming, 12 LED ring
- Cube: Conference use, noisy environments
- Cylinder ⭐: Best match — circular board + cylinder = true 360° experience
| Component | Model | Notes |
|---|---|---|
| Mic Array | ReSpeaker Lite or ReSpeaker XVF3800 | With XIAO ESP32-S3 for Home Assistant |
| Driver | Dayton Audio ND91-4 | 3.5" full-range, 4Ω, 30W RMS |
| Amplifier | TPA3116D2 board | 2×50W Class D, ~$8-12 |
| Buck Converter | MP1584 | Adjustable, set to 5.0V |
| Power Supply | 12V 3A barrel jack | 5.5×2.1mm |
- Outer diameter: 104mm
- Cutout diameter: 86mm
- Mounting depth: 63mm
- Bolt circle: 95mm (M3 screws)
- Recommended sealed volume: 0.5–1.5L
- Frequency response: 65Hz–17kHz
| Item | Qty | Est. Cost |
|---|---|---|
| ReSpeaker Lite + XIAO ESP32-S3 | 1 | $25 |
| — or ReSpeaker XVF3800 + XIAO | 1 | $55 |
| Dayton Audio ND91-4 | 1 | $28 |
| TPA3116D2 Amp Board | 1 | $10 |
| MP1584 Buck Converter | 1 | $2 |
| 12V 3A Power Adapter | 1 | $8 |
| Panel-mount Barrel Jack | 1 | $2 |
| 3.5mm Audio Cable (short) | 1 | $3 |
| M3 Screws + Heat-set Inserts | — | $5 |
| Speaker Wire (18-22 AWG) | 1m | $2 |
| Polyfill Damping Material | — | $3 |
| Total | ~$88–118 |
┌─────────────────────────────────────┐
│ 12V 3A Power Supply │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────┐
│ Barrel Jack │
│ (panel mount) │
└────────┬────────┘
│
┌─────────────┴─────────────┐
│ │
▼ ▼
┌───────────────┐ ┌─────────────────┐
│ TPA3116D2 │ │ MP1584 Buck │
│ Amp Board │ │ Converter │
│ │ │ │
│ VIN: 12V │ │ IN: 12V │
│ │ │ OUT: 5.0V ⚠️ │
└───────┬───────┘ └────────┬────────┘
│ │
│ ▼
│ ┌─────────────────┐
│ │ ReSpeaker │
│◄── 3.5mm ───────│ Lite/XVF3800 │
│ Audio │ │
│ │ 5V pad │
▼ └─────────────────┘
┌───────────────┐
│ ND91-4 │
│ Speaker │
│ (4Ω) │
└───────────────┘
⚠️ IMPORTANT: Adjust the MP1584 buck converter to exactly 5.0V using a multimeter before connecting to the ReSpeaker. The ESP32-S3 is not tolerant of overvoltage.
| Parameter | Main Body | Top Plate | Baffle |
|---|---|---|---|
| Layer Height | 0.2mm | 0.2mm | 0.2mm |
| Infill | 25-30% | 20% | 40% |
| Walls | 4 perimeters | 3 perimeters | 4 perimeters |
| Supports | Tree (minimal) | Yes (buttons) | None |
| Material | PLA/PETG | PLA/PETG | PLA/PETG |
- Cube Main Body: Print upside-down (driver opening facing up)
- Cylinder Main Body: Print upright (feet on build plate)
- Top Plates: Print face-down for best surface finish
- Driver Baffle (cylinder): Print flat
- Seal interior with acrylic spray for better acoustics
- Add polyfill damping material (20-30g)
- Use gasket tape around driver for airtight seal
- Optional: Sand and paint exterior
- Prepare buck converter: Adjust output to 5.0V, verify with multimeter
- Mount amplifier: Secure TPA3116D2 to internal standoffs with M3 screws
- Install power jack: Mount barrel jack in rear panel
- Wire power: 12V to amp VIN and buck converter input
- Wire 5V: Buck converter output to ReSpeaker 5V pad
- Connect audio: 3.5mm cable from ReSpeaker to amp input
- Install driver: Mount ND91-4 with gasket tape and M3 screws
- Connect speaker: Amp output to driver (observe polarity)
- Add damping: Place polyfill in acoustic chamber
- Mount ReSpeaker: Place board in top plate pocket
- Final assembly: Attach top plate with M3 screws
These enclosures are designed for use with ESPHome and Home Assistant.
The XIAO ESP32-S3 on the ReSpeaker boards can run ESPHome firmware for:
- Wake word detection (microWakeWord)
- Voice command processing
- Music playback via Music Assistant
- LED status indication
See the ESPHome documentation for:
All designs are fully parametric. Key parameters to adjust in OpenSCAD:
// External dimensions
ext_width = 120;
ext_depth = 120;
ext_height = 145;
// Driver (change for different speaker)
driver_cutout = 86;
driver_od = 104;
driver_screw_circle = 95;
// Aesthetics
corner_r = 12; // Corner radius
base_chamfer = 8; // Base taper- Update
driver_cutout,driver_od, anddriver_screw_circle - Adjust enclosure volume if needed (sealed box calculator recommended)
- Verify mounting depth fits within enclosure
├── docs
│ └── index.html # Visual comparison (interactive)
├── enclosure_lite_cube.scad # ReSpeaker Lite - Cube
├── enclosure_lite_cylinder.scad # ReSpeaker Lite - Cylinder
├── enclosure_xvf3800_cube.scad # ReSpeaker XVF3800 - Cube
├── enclosure_xvf3800_cylinder.scad # ReSpeaker XVF3800 - Cylinder
├── LICENSE
└── README.md
MIT License — feel free to modify and share.
- Seeed Studio for the ReSpeaker boards
- Dayton Audio for affordable quality drivers
- ESPHome and Home Assistant communities
Built to replace an Echo Studio with something open, customizable, and actually repairable.