Dog Trainer
===========

A device that allows dogs to speak. Click on the picture to see the video with the `dog-trainer` in action

[![dog-trainer-photo](assets/dog-trainer-photo.png)](https://peertube.virtonline.eu/w/2MXWQPC1zd2pgms5HQE1Ma)

Hardware
--------
Connect buttons to the Rarspberry pi GPIO as shown in the schema to debounce noisy buttons

![dog-trainer-schema](assets/dog-trainer-schema.png)


Operating system
----------------
Install `Raspberry Pi Imager` into your notebook. Launch it and choose `Raspberry Pi OS Lite` to write into the microSD card

Power on the Raspberry pi and finish the installation process. Log into its console using either:
- ethernet/wifi from your notebook: `ssh pi@raspberrypi`
- connected keyboard and monitor
- serial port

How to install
--------------

Once you are logged into the `Raspberry pi` console clone the `dog-trainer` source code into your home directory
> `git clone https://gitea.virtonline.eu/2HoursProject/dog-trainer.git --depth 1`

Go into the newly created directory
> `cd ~/dog-trainer`

Dependencies
------------

The recordings must be edited a little bit so some audio processing tool is needed. Install `ffmpeg` which will do the job  
> `apt install -y ffmpeg`

Configuration
-------------

If your sound device is other then USB type then modify and adapt the line `hw:CARD=USB,DEV=0` in ALSA config
> `nano .asoundrc`

Install the ALSA config file
> `mv .asoundrc ~/`

Run it!
-------

Just run
> `python3 dog-trainer.py`

Pres `Ctrl+c` to exit

Make it a service to automaticaly run in the backgroud
------------------------------------------------------

If your `$HOME` directory is other then `/home/pi` then modify the systemd service file
> `sed -i "s#/home/pi#$HOME#g" dog-trainer.service`

If your username and group is other then `pi` and `pi` then also run
> `sed -i "s#User=pi#User=$USER#" dog-trainer.service`  
`sed -i "s#Group=pi#Group=$(id -gn)#" dog-trainer.service`

Install the systemd service file
> `sudo mv dog-trainer.service /etc/systemd/system/`

Reload systemd manager configuration
> `systemctl daemon-reload`

Enable the `dog-trainer` service at boot time and also run it
> `systemctl enable --now dog-trainer`

If it does not work check logs
> `journalctl -f -u dog-trainer`

Set volume for playback and recording 
-------------------------------------

Launch soundcard mixer
> `alsamixer`

Press F6 to select a soundcard. Find your USB sound device in the list e.g. `Jabra Speak 410 USB`. Press F4 and use up/down arrow keys to set recording volume and repeat also for the playback (F3). Press ESC fo exit.