top of page

Giving AI a Wooden Home: Building an Accessible Companion for Seniors

Oct 4
2 min read

The idea came from Sarthak when we are brainstorming social isolation among the elderly in Hong Kong.




Description

Woody  is a screen-free, voice-activated AI companion and safety monitor built into a warm wooden enclosure, powered by a Raspberry Pi to help seniors stay independent, safe, and connected without dealing with complex digital interfaces.


This journal is where we're tracking the build as it comes together. The main pieces are simple enough: a SBC Raspberry Pi 5, Waveshare USB-to-Audio Module, buttons, USB Logitech Camera.


Part

Job in the Device

SBC Raspberry Pi 5

Core single-board computer running the AI, voice recognition, and computer vision models

Waveshare USB-to-Audio Module

Handles audio input (microphone) and output (speaker) for conversational AI and voice notes

Buttons

Tactile hardware interface providing minimalist two-button controls (Press-to-Talk and Listen)

USB Logitech Camera

Captures living-room video feed for computer vision, fall detection, and mobility analytics




Oct 3


Audio Input & Output Setup

We began by configuring the Waveshare USB-to-Audio Module to handle the device's hardware-level microphone input and speaker output. Using standard Linux ALSA commands, we tested audio recording and playback directly from the terminal.


# Record 10 seconds of CD-quality audio

arecord -D plughw:2,0 -f cd -d 10 test.wav


# Play back the recorded audio file

aplay -D plughw:2,0 test.wav


# Chain recording and immediate playback

arecord -D plughw:2,0 -f cd -d 10 test.wav && aplay -D plughw:2,0 test.wav




We ran into an initial roadblock when the recording commands failed to capture any input. After inspecting the hardware devices connected to the Raspberry Pi, we realized we were addressing the wrong audio index. Switching the target hardware address to plughw:2,0 resolved the issue and restored full audio routing through the USB module.


# Set up and activate virtual environment

sudo apt install python3-venv -y

python3 -m venv SeniorBox

source SeniorBox/bin/activate


# Download and unpack the Vosk STT model

wget https://alphacephei.com/vosk/models/vosk-model-small-en-us-0.15.zip

unzip vosk-model-small-en-us-0.15.zip



Speech-to-Text Pipeline

With the hardware working, the next phase was converting raw spoken audio into text locally on the Pi. We opted for Vosk due to its lightweight footprint and reliable offline capability.

To keep dependencies clean, we built a dedicated Python virtual environment and pulled down the English recognition model:


# Set up and activate virtual environment

sudo apt install python3-venv -y

python3 -m venv SeniorBox

source SeniorBox/bin/activate


# Download and unpack the Vosk STT model


Script Testing

Finally, we put together a Python script leveraging sounddevice to stream raw audio directly into Vosk via a thread-safe queue.


import queue

import sounddevice as sd

import json

from vosk import Model, KaldiRecognizer


q = queue.Queue()

model = Model("vosk-model-small-en-us-0.15")

rec = KaldiRecognizer(model, 16000)


def callback(indata, frames, time, status):

if status:

print(status)

q.put(bytes(indata))


with sd.RawInputStream(samplerate=16000, blocksize=8000, dtype='int16',

channels=1, callback=callback):

print("Speak...")

while True:

data = q.get()

if rec.AcceptWaveform(data):

print(json.loads(rec.Result())["text"])




 
 
 

Comments


bottom of page