Since Google released the Google Assistant SDK for Raspberry Pi 3, and other ARMv7 boards, I thought I should it try myself on one of the tiny headless boards I have, as you just need audio output and a microphone. I first planed to use NanoPi NEO board with NanoHAT PCM5102A audio board, a cheap USB microphone, and pair of speakers, but this morning, I’ve come across Orange Pi Zero Set 6 kit that looks perfect for this applications and sells for just $12.95 plus shipping ($18.27 in total for me) with Orange Pi Zero board, Orange Pi Zero interface board, and a case.
Orange Pi Zero board is powered by Allwinner H2+ quad core Cortex A7 processor with 512MB RAM, and can run the required Ubuntu/Debian distribution using one of the Armbian images, and connected to the Internet over Ethernet or WiFi, however if you want to use the latter, be aware that stability and performance issues have been reported.
Microphone and audio output are added using Orange Pi Zero Interface Board V1.1 which adds one built-in microphone, and a 3.5mm audio jack where you should be able to connect your speakers. You’ll also get two extra USB host ports.
All you need to complete the hardware setup is a micro SD card, a pair of speakers, and a USB power supply. I’ve seen some demo requiring that you press a button before speaking. That will not be possible with this kit unless you add some button connected through USB or GPIO, but hopefully it’s possible to use the “hot word” technique to avoid adding that extra button.
The instructions on Google developer website for ARM boards seem clear enough, but since Aliexpress lists over 3,000 orders for that “Set 6” kit, I assumed somebody already tried that and wrote some specific instructions. Sadly, I had no luck finding such instructions, but I noticed somebody did something similar with Orange Pi PC board that includes a microphone and audio jack, and he uses a jar as an enclosure.
Ficus Online also posted the instructions on his blog, where he explains how to use a hotword too, so in theory you would not need any button. You may want to check their full website, as they use this Smart Jar as a home automation gateway with other purposes than just Google Assistant. If alternatively, you have some 96Boards on hand, there’s a specific Google Assistant project being worked on. If you prefer Amazon Alexa, there’s a project for Orange Pi + Alexa on Github, but it has not been updated for a year.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
7 Replies to “$13 Orange Pi Zero Set 6 Kit Could Make an Inexpensive DIY Google Home Alternative”
I guess you can do the same with a nanoPI NEO or NEO2 and a USB audio dongle (those can be found for a few dollars on ebay)
neo+acryllic case +dongle would probably be even a bit cheaper
Some of the PCM2704 dongles start to produce audible noise if you use them 24/7 without resetting every day. Might be a driver issue. The lower quality dongles aren’t worth it.
Ah ok, didn’t know that. Mine has never been on for such a long time.
For $10+shipping, FriendlyArm has a TI PCM5102A hat that uses I2S for communication. I just ordered one. Should be at least as good as a USB dongles that go for 2x the price.
The array mics are a critical piece of cloning a Home/Echo. They work to remove noise and make speech recognition possible. Without the array mic voice commands work will only work for a couple of feet away. You can make the noise removal work with only two mics but more is better.
The way this works is by finding the hot word in the mic input. The algorithm needs to locate the hot work in both mic input streams. Once it locates both copies of the hot word it computes a phase delay between them. That phase delay is used to remove all other audio that does not have the same phase delay. For example something making noise (TV) at another location in the room will have a different phase delay and it will get removed from the input data. With more mics you can make this process better. With one mic you can’t do it at all.
You can buy dedicated array mic chips that do all of this for you. It is also possible to use the two ADC inputs of an ESP32 to implement a two channel array mic. The CPU on the ESP32 is powerful enough to do this.
This is a very good use of an ESP32. It can listen for hot words or wifi activity while a main CPU is powered off saving huge amounts of battery.
I wonder if this has already been tried, to pair a Zero with a ESP32 with 2 mics, for this purpose?
and about the software side? is there any code out there ready to try?
Espressif has built internally, I don’t believe it has been released yet. There are licensing issues with the hot word detection.
Google for array mic algorithms they are easy to find. The hot word detection is harder. It generally works by implementing a neural network and then training it.
This is free to hack with