Skip to the content
PCBKitNew board
2 layers70 × 50 mmRPI4B Dual SPH0645 RevA, the printed circuit board in 3D

RPI4B Dual SPH0645 RevA

notgate/sph0645f_asr

Dual-SPH0645 Raspberry Pi prototype with audio capture, FFT signal processing, PCB design, and offline LLM inference.

Size
70 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
20
Nets
9
Pads
49
Tracks, vias
50, 5
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
21 Aug 2026
Updated
23 Aug 2026

Overview

RPI4B Dual SPH0645 RevA is an open-source printed circuit board by notgate, from the notgate/sph0645f_asr repository on GitHub. It is a 2-layer board of 70 × 50 mm with 20 parts on 9 nets, routed with 50 tracks and 5 vias.

Its parts include 3 resistors, 3 connectors, 2 ICs and 1 capacitor. It belongs with the audio and music boards of this library.

README

README.md

Hardware-ASR HID Prototype

Raspberry Pi 4 project: microphone input, local transcription tests, and keyboard-style output.

Offline voice input pipeline

Purpose

Original point of the project was to design a headset which can have more clarity on microphone input and restructure the output using a local speech recognition LLM called faster whisper.

The proof of concept combines embedded Linux, I²S audio hardware, local speech recognition, and Bluetooth HID keyboard output. Two MEMS microphones provide digital audio input and a way to compare microphone signals for cleaner offline transcription.

I would have chosen Optical MEMS over MEMS because its more precise using lasers over capacitate but only company which I looked into has it behind closed doors and not consumer available.

Hardware setup

  • Raspberry Pi 4B with 2 GB RAM
  • Two SPH0645-style I²S MEMS microphone breakouts
  • MAX98357A I²S amplifier and small speaker for prototype audio/output testing
  • Breadboard and jumper-wire prototype
  • KiCad schematic, PCB layout, and Raspberry Pi wiring

Software pipeline

  1. Record or load microphone audio from a WAV file.
  2. Decode, combine the channels, and resample for a 16 kHz recognizer input.
  3. Use push-to-record to capture a complete phrase.
  4. Run local speech-to-text with faster-whisper on the Raspberry Pi.
  5. Clean up punctuation and casing in the recognized text.
  6. Send the final text to a phone or computer as Bluetooth keyboard input.

Backend code

The hardware-facing audio path is written in Rust rather than Python. It keeps capture and signal handling in compiled code while still producing standard WAV files for the recognizer.

  • Capture — reads a fixed amount of stereo audio from the default input device.
  • Split audio — returns overlapping borrowed slices without copying each chunk.
  • Decode and resample — reads WAV input, combines channels, and writes 16 kHz mono WAV output.
  • Compare channels — applies a Hann window, calculates the Fourier transforms, compares the spectra, and estimates a bounded sample delay. The FFT theory maps the equations to the Rust functions.
text
cd backend
cargo test
cargo run -- prepare input.wav ready.wav
cargo run -- capture captured.wav 3000

The automated tests use generated WAV data. The default-device capture path is implemented, but Raspberry Pi ALSA operation and capture latency have not been measured in this repository.

Hardware design

The Model 1 KiCad carrier brings the two microphone breakouts, Raspberry Pi harness, channel-select jumpers, clock-damping positions, and signal test points into one editable design. Both microphones share the I²S clock and data lines while opposite SELECT states place them in separate left and right slots.

  • KiCad 10 ERC: 0 errors / 0 warnings
  • KiCad 10 DRC: 0 violations / 0 unconnected pads
3D viewPCB routing
3d viewTwo-layer PCB routing

Prototype

Raspberry Pi and dual MEMS microphone breadboard prototypePrototype testing setup
Raspberry Pi and microphone wiringPrototype testing setup

What I learned

  • The ASR model is only one part of the problem. Bad audio makes the rest of the pipeline look worse than it really is.
  • A project like this needs measurable tests: microphone distance, background noise, latency, and transcription error rate.
  • Voice Activity Detection can negatively affect transcription from microphone input; push-to-record improved accuracy during the proof of concept.
  • Writing down the wiring and sample layout made the project easier to explain and debug.

Project files

What did I make?

I built a Raspberry Pi automatic speech to text recognition proof-of-concept model with the intention of proving signal processing strategies using Fourier Transform. By using Rust for low latency response transcriptions from input, the MEMS microphones and a complimentary PCB design I incorporated several aspects of embedded, software and electrical engineering towards this project.

Primary references

Parts

20
QtyValueFootprintReferences
4M3MountingHole:MountingHole_3.2mm_M3MH1, MH2, MH3, MH4
233RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2
1100k DNPResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR3
110uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1
13V3TestPoint:TestPoint_Loop_D2.50mm_Drill1.0mm_LowProfileTP1
1BCLKTestPoint:TestPoint_Loop_D2.50mm_Drill1.0mm_LowProfileTP3
1DOUTTestPoint:TestPoint_Loop_D2.50mm_Drill1.0mm_LowProfileTP5
1GNDTestPoint:TestPoint_Loop_D2.50mm_Drill1.0mm_LowProfileTP2
1LEFT_SELECTConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2
1LRCLKTestPoint:TestPoint_Loop_D2.50mm_Drill1.0mm_LowProfileTP4
1PI_GPIO_KEYED_8PConnector_JST:JST_XH_B8B-XH-A_1x08_P2.50mm_VerticalJ1
1RIGHT_SELECTConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1SEL_ATestPoint:TestPoint_Loop_D2.50mm_Drill1.0mm_LowProfileTP6
1SEL_BTestPoint:TestPoint_Loop_D2.50mm_Drill1.0mm_LowProfileTP7
1SPH0645 Breakout LEFTASR_HP_Wispr:Adafruit_SPH0645_Breakout_1x06U1
1SPH0645 Breakout RIGHTASR_HP_Wispr:Adafruit_SPH0645_Breakout_1x06U2

Questions

How big is the RPI4B Dual SPH0645 RevA PCB?

It measures 70 × 50 mm and has 2 copper layers, 1.6 mm thick.

What parts does the RPI4B Dual SPH0645 RevA use?

20 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the RPI4B Dual SPH0645 RevA KiCad files?

From the notgate/sph0645f_asr repository on GitHub, at the commit this page was made from: the board is kicad/RPI4B_Dual_SPH0645_RevA/RPI4B_Dual_SPH0645_RevA.kicad_pcb and its schematic kicad/RPI4B_Dual_SPH0645_RevA/RPI4B_Dual_SPH0645_RevA.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the RPI4B Dual SPH0645 RevA design in my own project?

Its repository states no licence, so its author keeps all rights: ask notgate before reusing the design.

Similar boards

  • 2 layers66.9 × 74.5 mmDeskHop Rev1, the printed circuit board in 3D

    DeskHop Rev1

    hrvach/deskhop

    Fast Desktop Switching Device

    20 parts7.9kGPL-3.0
  • 2 layers86.4 × 64.8 mmSlot machine, the printed circuit board in 3D

    Slot machine

    google/google-ctf

    Google CTF

    20 parts5.1kApache-2.0
  • 2 layers36.2 × 26.8 mmEsp32 minimal, the printed circuit board in 3D

    Esp32 minimal

    atopile/atopile

    Design circuit boards with code! ✨ Get software-like design reuse 🚀, validation, version control and collaboration in hardware; starting with electronics ⚡️

    20 parts4kMIT
  • 2 layers108.1 × 393.8 mmSweep compact ble, the printed circuit board in 3D

    Sweep compact ble

    davidphilipbarr/Sweep

    Sweep - a small promicro based keyboard inspired by the Ferris.

    20 parts2.1k
  • 2 layers26 × 15.9 mmTPS54340 Buck Regulator, the printed circuit board in 3D

    TPS54340 Buck Regulator

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    20 parts1.2k
  • 2 layers67.6 × 30.5 mmRgb to hdmi, the printed circuit board in 3D

    Rgb to hdmi

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    20 parts1kGPL-3.0
  • 2 layers44.3 × 28.7 mmLin bus adapter esp32, the printed circuit board in 3D

    Lin bus adapter esp32

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    20 parts915
  • 2 layers89.5 × 61.6 mmFreeDeck TH 2020-02, the printed circuit board in 3D

    FreeDeck TH 2020-02

    FreeYourStream/freedeck-hardware

    all the stuff you need to build your own FreeDeck

    20 parts772