Archive for the ‘raspberrypi’ Category

4 Comments

Trying out DeepSpeech on a Raspberry Pi 4

Friday, January 3rd, 2020

Deep Speech is an open speech-to-text engine by Mozilla. Speech synthesis and Speech to text are fun to try out, and I read that it could run on a Raspberry Pi4 with ease on one core, so I decided to give it a try.

The Raspberry Pi version is using Google’s TensorFlow Lite for an implementation of Baidu’s DeepSpeech architecture.

Installing it on a Raspberry 4 Buster distribution was not straightforward. First I read instructions on the Github page and tried to download and install the git version and, but I ran into problems. It was taking ages and I ran into the famous `wheels` problem.

Failed building wheel for scipy

After tweaking and trying a few times, i gave up on the Github version and tried the instructions here, but also that was a bumpy road. But success waits in the end.

Let’s go, how to install DeepSpeech on the RPI4

Create a dev directory:

mkdir dev
cd dev

Create a Python Virtual environment.

python3 -m venv deepspeech-train-venv

Activate the virtual environment

source dev/deepspeech-train-venv/bin/activate

Create the deepspeech directory

mkdir deepspeech
cd deepspeech

Install deepspeech

pip install deepspeech

Download pre-trained English model

curl -LO https://github.com/mozilla/DeepSpeech/releases/download/v0.6.0/deepspeech-0.6.0-models.tar.gz
tar xvf deepspeech-0.6.0-models.tar.gz

Download example audio files

curl -LO https://github.com/mozilla/DeepSpeech/releases/download/v0.6.0/audio-0.6.0.tar.gz
tar xvf audio-0.6.0.tar.gz

Done, run, well , eh, I tried to run the example on the instruction page

deepspeech --model deepspeech-0.6.0-models/output_graph.pbmm --lm deepspeech-0.6.0-models/lm.binary --trie deepspeech-0.6.0-models/trie --audio audio/2830-3980-0043.wav

Errors!?!  I installed a missing dependency:

sudo apt install libatlas3-base

Still errors

ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'

So I check if I had numpy installed

pip install numpy
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: numpy in /home/pi/dev/deepspeech-train-venv/lib/python3.7/site-packages (1.15.4)

I decided to update numpy:

pip install --upgrade numpy
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting numpy
Using cached https://www.piwheels.org/simple/numpy/numpy-1.18.0-cp37-cp37m-linux_armv7l.whl
tensorboard 2.0.2 has requirement setuptools>=41.0.0, but you'll have setuptools 40.8.0 which is incompatible.
Installing collected packages: numpy
Found existing installation: numpy 1.15.4
Uninstalling numpy-1.15.4:
Successfully uninstalled numpy-1.15.4
Successfully installed numpy-1.18.0

So i decided to update setuptools too:

pip install --upgrade setuptools
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting setuptools
Using cached https://files.pythonhosted.org/packages/f9/d3/955738b20d3832dfa3cd3d9b07e29a8162edb480bf988332f5e6e48ca444/setuptools-44.0.0-py2.py3-none-any.whl
Installing collected packages: setuptools
Found existing installation: setuptools 40.8.0
Uninstalling setuptools-40.8.0:
Successfully uninstalled setuptools-40.8.0
Successfully installed setuptools-44.0.0

I tried to run the example on the instruction page again
# Transcribe an audio file

deepspeech --model deepspeech-0.6.0-models/output_graph.pbmm --lm deepspeech-0.6.0-models/lm.binary --trie deepspeech-0.6.0-models/trie --audio audio/2830-3980-0043.wav

Another error

Loading model from file deepspeech-0.6.0-models/output_graph.pbmm
TensorFlow: v1.14.0-21-ge77504a
DeepSpeech: v0.6.0-0-g6d43e21
ERROR: Model provided has model identifier '='+;', should be 'TFL3'

Didn’t work. I needed to change the model to `tflite`

deepspeech --model deepspeech-0.6.0-models/output_graph.tflite --lm deepspeech-0.6.0-models/lm.binary --trie deepspeech-0.6.0-models/trie --audio audio/2830-3980-0043.wav

Success in the end!

Loading model from file deepspeech-0.6.0-models/output_graph.tflite
TensorFlow: v1.14.0-21-ge77504a
DeepSpeech: v0.6.0-0-g6d43e21
INFO: Initialized TensorFlow Lite runtime.
Loaded model in 0.0019s.
Running inference.
why should one hault on the way
Inference took 4.091s for 2.735s audio file.

Then I played the audio-file:

aplay audio/4507-16021-0012.wav

Must say DeepSpeech is much smarter then me, I couldn’t understand it:
why should one hault on the way

BTW good question. No I need another engine to answer that!

Way to go, folks.

1 Comment

4 ways to connect your Raspberry Pi 4 to the internet

Wednesday, June 26th, 2019

The just introduced Raspberry Pi 4 has delivered some much wished features: faster internet/network, a gigabit Ethernet connection, and faster USB, 2 USB 3.0 ports. This will open the door to a Raspberry Pi driven NAS solution that will offer high speed in combination with the new USB3 ports.

This post is about exploring the USB OTG  (On The Go) feature of the Raspberry Pi 4. We will find out if it’s possible to power and connect a RPI4 with just a USB cable.

Ethernet is easiest way to connect internet, the second is wireless, using WiFi. The new RPI4 offers dual-band 802.11ac wireless networking. Not as fast as the gigabit Ethernet internet, but it will offer speeds like 100 Mbps, around a 100Mb Ethernet connection. That’s quite speedy too.

The third way is using Bluetooth. Like connecting your laptop to a Bluetooth hot-spot on your phone. That will be a bit slower. Will try that later.

The fourth way is using a trick we know from the smallest Raspberry Pi, the Raspberry Zero. The Raspberry Pi 4 has a USB-C power connector, but that USB-C port is also an USB OTG connector, so the Raspberry Pi can be used as a USB Gadget: the USB port can switch USB states (MASTER/SLAVE or HOST/DEVICE) and be used like a keyboard or mouse, or USB Ethernet modem.

Actually you can power and connect to a Raspberry Pi 4 with just an USB-cable. I tried it with the new Raspbian Buster and it’s working fine. I used the same Samsung cable I used for my Zero (and phone), added an 1 euro micro-USB to USB-C adapter, and it’s just working fine. It seems my laptop is offering enough power for a headless, and armless Pi.

To enable OTG networking, add this to `/boot/config.txt`:

# enable USB OTG
dtoverlay=dwc2

Then add this to `/boot/cmdline.txt` after rootwait:

modules-load=dwc2,g_ether

Reboot your Raspberry pi and convert the new wired connection to `shared` in the connection manager on your laptop (e.g. Ubuntu 18.04), and connect to your new Raspberry Pi 4.

It will have an IP like: 10.42.0.xxx.

If you have added  a empty file `ssh` to the boot sector of your SD card touch /boot/ssh, the Pi will start with SSH enabled.

So you can connect from your laptop with:

ssh pi@raspberrypi.local

For more details, see these posts Connecting to a Raspberry Pi Zero with just an USB cable (I) or Connecting to a Raspberry Pi Zero with just an USB cable (II)

I wonder if it will be possible to boot the Raspberry Pi 4 entirely over USB, without a SD card, like the RPI Zero. Not at the moment though.

No Comments

How to Make the Music Player Daemon (MPD) Autoplay on a Raspberry Pi

Tuesday, November 13th, 2018

Music Player Daemon (MPD) is a terrific open source music player and maintains a good organized library of your music in an efficient database. MPD is a server so you need a client. That can be your laptop, to your phone, your browser, your whatever, or you can run a client on your Rpi locally (mpc). Or all together.

It does run fine on the cheapest raspberry pi, so your ready to go for 5 euro. The Pi only has a high quality HDMI output, for older Hifi systems with analogue connections  you need something like the HifiBerry.

MPD uses much less CPU then running Kodi, 4% instead of 40% on the original Raspberry Pi.

Furthermore you can put your music on an external USB stick or  NAS with Linux NFS or the slightly inferior Microsoft Windows Samba shares.

If you haven’t installed MPC yet, do that first:

sudo apt install mpc

Normally MPD will resume play after shutting down, but to make MPD auto-play always simply add this to your systemd.service  file:

ExecStartPost=/usr/bin/mpc play

How to do that? Just edit the file:

sudo vi  /etc/systemd/system/multi-user.target.wants/mpd.service

And add it under the line starting with `ExecStart`

...
[Service]
EnvironmentFile=/etc/default/mpd
ExecStart=/usr/bin/mpd --no-daemon $MPDCONF
ExecStartPost=/usr/bin/mpc play
....

Save it, stop MPD, and reboot your pi. And the music will play 😉

37 Comments

How to run or boot Raspbian on a Raspberry Pi Zero without an SD-card.

Thursday, March 22nd, 2018

In an earlier post I explained how you can run and connect to a Raspberry Pi Zero with just an USB cable. Still the RPI Zero was using a micro SD card.

Luckily the great minds of the Raspberry Pi Foundation developed new boot modes: ethernet boot and USB Mass Storage Device (MSD) boot for the Raspberry Pi 3.

Now they came up with USBBoot, a tiny program that pushes the bootcode over the USB to the Raspberry Pi Zero (Raspberry Pi model A, Compute Module, Compute module 3 and Raspberry Pi Zero and Raspberry Pi Zero W), so it can boot without a micro SD-card.

Boot a RPI Zero from your laptop without SD card

In this post we will boot the Zero with the latest Raspbian Stretch (lite) from an common Ubuntu laptop, running 16.04LTS. It is surprisingly comfortable once you’ve set it up. And remember we’re running the Zero without any SD card, which costs are higher then a Raspberry Pi Zero. You do not need an SD card at all.

Yes, we use a standard USB cable to power,  connect, provide internet-access, an OS and storage for the Pi Zero.

So we gonna run the poor Raspberry Pi headless (=no monitor), armless (=no keyboard or mouse) and brainless (=no memorycard). And you know what? Back to the basics make the little gem shine!!

(more…)

11 Comments

Connecting to a Raspberry Pi Zero with just an USB cable (II)

Monday, October 2nd, 2017

This tutorial assumes you’re using Raspbian Strectch, and a Linux (16.04LTS) laptop, but it should also work on Raspbian Jesse for the Zero and any Linux Laptop. So it’s for everybody. Nearly every laptop can run Linux freely, (that’s not the case with Windows (Microsoft) or MacOS/OSX (Apple) that’s paid and not free software). You can always run Linux in a virtual machine, if you’re afraid to dump proprietary stuff or install Linux side a side.

In part 1 we explained how you can connect to a Raspberry Zero computer with an ordinary USB cable to power, connect (SSH) and provide internet access for the Pi with higher speeds than most WIFI connections.

That’s all been made possible with the smart USB OTG functionality that enables the Pi Zero to switch USB host/device mode and mimic an ethernet device (or webcam, or keyboard).

We showed you how to connect from a Linux laptop to the Pi by setting the connection type to Link-Local only. (more…)

5 Comments

Connecting to a Raspberry Pi Zero with just an USB cable (I)

Monday, October 2nd, 2017

The goal of this post is to explain how you can power, connect  and share internet with your Raspberry Pi Zero from your laptop with just one USB cable. After you’ve set it up correctly, connect the cable, let the Pi boot,  ssh to your Pi with this simple command ssh pi0 or update your pi with this oneliner ssh pi0 "sudo apt update && sudo apt dist-upgrade -y".Your Raspberry Pi Zero will have internet access over USB with higher speeds than most WIFI connections. (more…)