Sign inSign up

kai5263499/diy-jarvis-text-processor

By kai5263499

Updated about 6 years ago

Text processor for DIY Jarvis system

Image
0

332

kai5263499/diy-jarvis-text-processor repository overview

diy-jarvis

This repo contains the services that make up a simple DIY voice assistant framework. The components of this framework are broken up into docker images for easier development. These images are

ImageDescriptionParameters
diy-jarvis-builderUsed for development and as the build container in our CI/CD pipeline
diy-jarvis-mic-captureCaptures a number of seconds of microphone data (determined by the DURATION environment variable)DURATION controls how much audio to collect before sending it on to the processor
diy-jarvis-deepspeechUses the Mozilla Deep Speech library to transform raw wave files into text
diy-jarvis-wav-slicerSlices up a wav FILE and feeds the chunks to the audio processor engineFILE is the full path of the file (in the container) to process

Designs

To get a better idea of how this system is organized, here are a few diagrams in the spirit of the 4+1 architechure view model pattern (paper).

Usecases

Scenerio view

Process

Process sequence view

Process view

Getting started

Usage

The quickest way to get the diy-jarvis system running is to use the docker-compose.yml at the root of our project to pull and execute the component service images. The simplest setup includes the following

docker-compose up
Developing

The diy-jarvis-builder image includes all of the tooling required to build the various services in the diy-jarvis ecosystem.


# Build the builder image from scratch using
make builder-image

# Run the builder image with pulse configured for localhost and
# mounted development directories using
make exec-interactive

Containerized development with PulseAudio

We've found that working in a containerized development environment helps us make our finished product more portable. In order to do that, we need to run pulseaudio on the host and connect it to the container.

# First, we need to check if pulse audio is running on the host
pulseaudio --check -v

# Most likely, its not running so we'll need to start pulse audio daemon on the host allowing anonymous connections from the docker ip range, assuming it's 172.17.0.0/24 which appears to be the default for Docker Desktop on my mac
pulseaudio --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1;172.17.0.0/24 auth-anonymous=1" --exit-idle-time=-1 --daemon

# On mac hosts, we can run a basic container that has pulseaudio installed to test our audio setup
docker run -it -e PULSE_SERVER=docker.for.mac.localhost -v ~/.config/pulse:/home/pulseaudio/.config/pulse --entrypoint bash --rm jess/pulseaudio

# We can also run a mic check with a 2 second delay from our selected default source (in) to default sink (out) to make sure everything's in order
pacat -r | pacat -p --latency-msec=2000

For further reference on pulse audio commands to list and set default sources and sinks, see this reference.

Tag summary

Content type

Image

Digest

Size

32.3 MB

Last updated

about 6 years ago

docker pull kai5263499/diy-jarvis-text-processor