Moira C1 - Open Source Hardware (OSH) design for Mycroft

NOTE: The Moira C1 is in beta/review phase. Please see the Status section below.

Moira C1

The Moira C1 is an Open Source Hardware (OSH) design for the Mycroft software appliance.


Upon release the following will be available:

  • Scripts to update Pycroft to set up hardware drivers and define default settings and preferences (GitHub)
  • Final parts list, pricing, and component retail locations (GitHub)
  • 3D printer ready models in STL (Thingiverse)
  • 3D CAD files for editing (TBD)

Design

The Moira C1 is designed to make the most out of the selected components without incurring high costs. The average component cost minus shipping and PLA/ABS will likely be around $70 USD. Features of the design include:

  • Enclosed chamber system for the speaker
  • Upward firing design to spread audio 360 degrees
  • Bottom weight distribution for a solid foundation
  • Vented grill flush wrapped in speaker cloth
  • Beveled overlapping edges to match the finish of a Google Home
  • Dual microphones
  • RBG LED indicator that glows through the top of the case

Hardware

The following hardware is the recommended selections and what the Moira C1 has been designed around.

  • ReSpeaker 2-Mics Pi HAT
  • Adafruit MAX98357 I2S Class-D mono amp
  • 2.244" GF0573 8Ohm 3/5W 450Hz ~ 21kHz 92DB speaker
  • RBG clear common cathode LED
  • Micro USB interface board for power
  • Gray speaker grill cloth
  • Raspberry Pi 3/4B
  • PLA or ABS for printing

What’s in a name?

Moira was selected as the name as it is a female name that sounds like Mycroft and will be the default trained wake word along with a female voice once the software setup scripts are complete (completely optional in setup).

C1 stands for Cylinder 1, or the design/shape of the device.

Status

I’m announcing this project because I would like feedback before I start printing betas and figuring out all the little bits that are going to break as it’s being assembled, etc. The 3D modeling is complete, but there is always room for improvement. As I am new to Microft there may be other hardware related elements I haven’t considered yet, as well. So please, engage below in what you think is good, and what you think should change!

Upcoming Moira hardware designs

  • Moira C2WB - A waterproof and battery operated cylindrical Mycroft client
7 Likes

Great project and fantastic design!

While working on my Mark-IIR a major problem I had was sourcing all the parts from the BOM as some vendors do not deliver from US to EU (or if they do the shipping cost would be ridiculous high). Maybe community members from all over the world can help checking availability of parts in their country? (I can offer to this for Germany)

1 Like

Thanks! And thanks for the insight! I’m in the US, but I do know Adafruit has the Mouser arm, then DigiKey ships to what… 170 countries? The only thing I don’t know about is Seeedstudio, so I’m not sure about the ReSpeaker 2. Also for the amp, I’m curious if the ReSpeaker 2’s 1W would be enough. Granted, the 3W amp is only $5.

Love the project! I was a bit disappointed when I first read that Mark 2 perhaps finally would have a square shape factor. I prefer round/cilinder forms.

I have some questions ideas:

  • do the microphones work well when they are placed upon the speaker? I mean, can the user speak to the C1 when there is sound? I guess ReSpeaker has noise cancelation, but just wondering.
  • LED light is just a dot? it would be great if it would were a “line” on the border around the top and/or bottom of the speaker, a la Alexa ( I like their design of that light)
  • Hardware buttons, don’t see any, but what about 4: power, vol +, vol - and play|pause . Buttons should be placed on top and be part of the enclosure, without standing out from it.
  • Dark color option! I found black more elegant and “clean” than white or clear colors
1 Like

Can you drop STLs here so we can take a peek?

A couple things we’ve learned:

  1. The power needs to be extremely clean and grounding needs to be well thought out or the speaker will buzz.
  2. The mic and speaker should be in physically separated.
  3. The Re-Speaker stuff makes us of a proprietary binary for noise cancellation. This may or may not work with the 2 mic setup ( I don’t know because I haven’t tested ).
  4. The grill can be printed with FDM, but it is very hard to get it right. The retract on the FDM can cause issues with alignment and make prints difficult.
  5. Making textiles work on a plastic speaker is more difficult than you might think.
  6. Heat. Pay attention to how air gets in/out of the microprocessor chamber.
  7. Hardware buttons are important. Precise works…(ish)…but in a loud enviroment it may become impossible to control the speaker which leads people to unplug it…which corrupts the CF…which bricks it until it is re-flashed.
  8. The timing between the wake word detection and dropping the volume via the Adafruit amp can be a problem.
  9. Noise canceling mic arrays need to be co-planer. They don’t work as designed under a dome.

There are probably a few more gotchas, but I’m glad to see you’re working on it. If you share the STLs I’m happy to take a look ( or print/make one if you’re happy with the results ).

3 Likes

Maybe it’s time to crowd source the mark II? Lots of talented people in the community, plenty of individual hw testing happening (speakers, microphones, noise cancelling, displays, etc.)

1 Like

We had a meeting about getting people in the community more involved in the hardware ( and software ) development process. More news on this to come, but…yes…we are going to start involving the community more in both the decision making and implementation.

I don’t want to hijack this thread tho, so we’ll have that discussion in a new thread soon.

2 Likes

Wow, thanks for all the feedback! There is some super-helpful stuff in here.

@malevolent

do the microphones work well when they are placed upon the speaker? I mean, can the user speak to the C1 when there is sound? I guess ReSpeaker has noise cancelation, but just wondering.

That is a very good question. See below. :wink:

LED light is just a dot? it would be great if it would were a “line” on the border around the top and/or bottom of the speaker, a la Alexa ( I like their design of that light)

It is just a single LED (for now). I’m trying to make this design simple for the community to print and assemble at home, but aRBG is something I’ve considered.

Hardware buttons, don’t see any, but what about 4: power, vol +, vol - and play|pause . Buttons should be placed on top and be part of the enclosure, without standing out from it.

See below on this one, too!

Dark color option! I found black more elegant and “clean” than white or clear colors

This will be completely up to the user. I don’t currently plan to distribute this, just to provide it to the community. If there is enough interest I would investigate a group-buy of professionally printed parts, though.

@J_Montgomery_Mycroft

Can you drop STLs here so we can take a peek?

I would love to get some feedback from you since you’ve been so intimately familiar with designing these things, but I’m rather enjoying designing on my own without influence from a whole bunch of people so I can continue to learn :wink: Would you be OK if I DM them directly to you?

The power needs to be extremely clean and grounding needs to be well thought out or the speaker will buzz.

Do you have any specific suggestions here?

The mic and speaker should be in physically separated.

Noise canceling mic arrays need to be co-planer. They don’t work as designed under a dome.

Hrm, this may require a redesign of sorts to make things wider then. The second item also seems like two separate ideas. So you’re saying I need to lay the mic array flat (co-planar) but also don’t put it underneath the lid (dome)? Just trying to follow the thought process.

The Re-Speaker stuff makes us of a proprietary binary for noise cancellation. This may or may not work with the 2 mic setup ( I don’t know because I haven’t tested ).

Is there another hardware suggestion you would recommend?

The grill can be printed with FDM, but it is very hard to get it right. The retract on the FDM can cause issues with alignment and make prints difficult.

The “printed” grill is really a frame to wrap in speaker cloth. It’s a tiny bit narrower than the top and bottom which overlap the edges. It’s also why there is a gap across the back, to make it easier for assemblers to pull the cloth inside the cylinder and then attach it. I’ve actually already redesigned that some to simplify construction (removing the need for supports) and make the holes bigger.

Making textiles work on a plastic speaker is more difficult than you might think.

I’ve done a lot of speaker design/construction in the past (I’ve designed crossovers that were balanced flat for a room/etc) however this will be my first time laying cloth onto plastic. I am also curious how this will go, but I think I’ve got a working idea with the pull-through attachment method.

Heat. Pay attention to how air gets in/out of the microprocessor chamber.

This was why I put the Pi inside the speaker cloth area. I’m hoping there will be enough ventilation that way.

Hardware buttons are important. Precise works…(ish)…but in a loud enviroment it may become impossible to control the speaker which leads people to unplug it…which corrupts the CF…which bricks it until it is re-flashed.

Yea, 2 votes already for hardware buttons. This is something that I’ll certainly find a way to implement, but maybe in v2.0 so I can get this thing out to the world more quickly. I started to look into capaciive buttons that I could lay under cloth like how the Google Home Mini works.

The timing between the wake word detection and dropping the volume via the Adafruit amp can be a problem.

Good to know. Same question as above, any hardware suggestion?

We had a meeting about getting people in the community more involved in the hardware ( and software ) development process. More news on this to come, but…yes…we are going to start involving the community more in both the decision making and implementation.

I don’t want to hijack this thread tho, so we’ll have that discussion in a new thread soon.

Please post a link in here when it comes so we (I) can find it :wink:

On a good note, the test print (rough) came out as expected:

testprint

3 Likes

The Respeaker 2Mic-Pi-Hat is a very simplistic mic board. The Mic-Array-v2 and the USB-Mic-Array are more sophisticated with hardware-suppported audio processing for echo-cancellation etc.

Hi

Can you list what 3D printer and accessories you used or what you suggest using for prototyping the Moira cylinder and parts?

Well, I like the look of that Mic-Array-v2, however the price is way up there compared to the 2Mic. I don’t want to put this out of the price range of what some people may want to pay, so I’ll need to do some research on benefits. Thanks for pointing it out!

Not yet, sorry. My test prints are just rough cuts using PLA on a Monoprice Maker Select v2. Once the design is complete and final hardware is selected, I will probably make slightly oversized versions of the SLTs, too, so that ABS can be used and smoothed with acetone vapors. That would make for a nice clean finish with at-home prints.

I will be posting all of this type of progress here as time goes on. Thanks!

Very interesting thread. Will follow the development.

As soon as the final part list is available, i will support them within MycroftOS similar as the Mark-2 device.

4 Likes

@J_Montgomery_Mycroft Hey, don’t want to hound you, and I know there is a lot up there, but I’m on hold with the design until I hear back on this:

Any chance you could address that one part? Does the array need to be “open air” at the top, or can it be under cover (dome) just flat at the top separated from the speaker?

So I’ve decided to go with the ReSpeaker 6-mic array to stay in line with the feature set on the new hardware. It’s more pricey, but I have a feeling this group would prefer functionality over price.

1 Like

Poll for the group. With the new 6-mic array, the device will need to be wider, and can thus be a bit shorter. That being said, I have two options I can go down for audio. The “Google Home” model or the “Alexa v1” model.

The first is dual full-range speakers. These would likely be 2" full-rangers that could get down to (potentially) around 175hz, most likely one of the popular Peerless models. These would be outward facing, similar to the Google Home to give a bit of “surround” presence.

The second is a single 2-way speaker design. This would consist of a 3" woofer and <1" tweeter, likely adding clarity in higher volumes and may be able to get down below 100hz. So while this setup would be mono, it may actually “sound better”.

Thoughts?

This does not really hooks into your poll, but is more my view / idea /wish for an enclosure.


Why not flipping the enclosure 90 degrees into a soundbar type of form factor. Then you can use the top and bottom, which are now the left and right side of the enclosure for two speakers.

With the soundbar form factor you can use the 4-mic lineair from respeaker at the front for the mics and leds;
https://wiki.seeedstudio.com/ReSpeaker_4-Mic_Linear_Array_Kit_for_Raspberry_Pi/

But to really kick ass (IMHO) you use below screen as the front of the soundbar formfactor;
https://www.waveshare.com/product/raspberry-pi/displays/7.9inch-hdmi-lcd.htm
Witth, the 4-mic lineair as top (or just above the screen) and as described two nice speakers left and right. You could even use the back of the soundbar formfactor enclosure for proper openings / airflow etc.

With the right design, you could make the screen a option. If no screen, you just provide a (fabric) type of insert/wrap.

(Really no clue if above makes sense for your guys? Hard to speak about something that is visual in your brain. If I could draw it I would…)

Edit; BTW no clue why that ribbon connector is at the front, but the one from voicen (same company i believe) has it at the back;
https://wiki.voicen.io/hardware/

1 Like

Depends on your goal - is Moira a voice assistant that can play some music (like Amazon Echo device) or is Moira a music player with voice assistant capabilities (e.g. Sonos)?

Anyway some knowledge in acoustics desing should be helpful here…

Hey @Fmstrat great design. I like the clean form. Here are some quick thoughts. I don’t have much experience with the 6 microphone array, but it looks like it uses a software solution for the Audio Front End (Librespeaker). We have been relying on a hardware solution for the Audio Front End (Respeaker Mic Array v2.0 with Xmos XVF-3000). The drawback of using a software solution is that it could impact the performance since they’re both using the Rpi for resources, but I’ve been curious about some of the software solutions out there and how they perform. We have really only heavily evaluated one software based Audio Front End by Alango.

It was a good idea to move your speaker drivers to an outward firing design because upward firing would likely impact your barge-in performance. Having the speakers pointed at the microphones would impact the Acoustic Echo Cancellation.

For a lot of the hardware-based Audio Front End solutions the designs are dependent on the microphones being planar with as little obstruction as possible. That is why you see a lot of designs with a flat top. You also want to get the mics as close to exterior as possible.

Lastly, use some strategies to reduce vibration between the acoustic chamber and the microphones. For example, we mount everything on either foam tape or silicone. We are also using a separate enclosure for the acoustic chamber. All of this improves barge-in performance.

Great project!

We are using a dual driver setup with two TC5FC07-04 that are rated at 146hz. We will drive these with 5W continous (7W peak) per channel or 10W continous (14W peak) total. I’ve found that loudspeaker designs are very subjective, it might be worth experimenting with a few different set ups and seeing how they sound. We went through almost a dozen different configurations before landing on the dual TC5FC07-04 drivers.

The software EC works really well due to diversification of process.
The actual EC algorithm only runs when audio is playing, so soon as your VAD or KWS kicks in and stops audio play essentially there is no load until media starts again.

The Respeaker USB products are not that great the firmware isn’t really capable on multi mic and respeaker admit its better to use the single channel firmware.
Also the audio out isn’t all that good, seems to be plenty of complaints.

The 2mic is a great piece of hardware but the drivers suck slightly, well for me a lot, don’t like at all seemed to had all sorts of conflicts my 2 mic now gathers dust.

The software EC works well on both Pi3 & pi4 and think it does a slight better job on the Pi4 which makes me think its just fiiting into the Pi3 load.
Many of the microphones are planar but that is due to DOA (Direction of Arrival) and the beamforming you can produce.
As that part in software as far as I am aware (Beamforming) doesn’t exist in a good working form.

The respeaker USB stuff doesn’t make a lot of sense for price.
Anker do a Jabra challenger https://www.amazon.co.uk/Anker-Speakerphone-Microphones-Conference-Compatible-Black/dp/B07ZNT7PRL
Which £69 free delivery from Amazon makes it cheaper and its far better than a respeaker.

Personally I have found with barge in you can do it with any usb sound card and the EC software that works reasonably well that doesn’t give a Mycroft Gump that refuses to stop that it does without.

There is an Edimax stereo mic USB card that first thing to do is break that great little pcb out of its butt plug housing and link up 2x active mics.
The modules are really cheap mems or electret and have AGC and programmable gain by GPIO.
https://www.scan.co.uk/products/enermax-ap001e-dreambass-usb-soundcard-plus-earphones-genie-with-integrated-80-hz-plus6-db-bass-boos

The noise/buzz can often be solved with a DC blocking capacitor approx 4.7uF inline to your amp, but again there are amps that have a standby pull to Gnd that a transistor on GPIO could activate.
Also on the input a relatively small for audio standards capacitor can help.

TPA3116 has a wide array of configs and this one was my budget one with standby https://www.ebay.co.uk/itm/TPA3116-2x50W-Mono-100W-Digital-Audio-Power-Amplifier-Board-Module-12V-24V-AMP/172479863207

I went the other way round with the speaker with a 4 Ohm 8cm 30watt from tectonic as the BMR are supposed to have far less directional audio with this freaky radiator design.
The problems of isolating mics which makes a huge difference was I mounted the speaker in the base facing downwards and the fixing screws became pillars to raise a gap for sideways audio dispersal (approx 10mm or above seems to work great).
https://www.tectonicaudiolabs.com/audio-components/bmr-speakers/

I didn’t print a thing as used PVC tube which I have learnt order, receive and measure as the outside dimension will always be correct but the internal always seems to vary.
Its really cheap and easy to get acrylic disks cut via ebay that I taped underside ran a bit of epoxy around the join and created an airtight seal.
I used some hex spacers for the next level pulled the speaker cable through with a bit of flex left and also sealed that.
I dremmeled an access slot again hex pillars and a final disk of the outside diameter went on the top.
Mics where planar as they where easier to fit the top disk was clear in fact they all where as it made the order easier and also had one with the speaket cutout also.
Mic could of gone on the sides with no DOA beamforming choice is yours and never got round to testing effects on sensitivity.
4" or 5" pipe makes a relatively low profile puck than a tube, so actually don’t need access to 3Dprint.
I was supposed to draw up some vinyl cutouts and add some leds but it was just a test.

If you can cope with the rather ropey 3.5mm Pi audio out you can also just add x2 I2S as adafruit do drivers and have a howto on their site.
You could also add a hdmi2hdmi+audio and use with x2 I2S mics as the are less than $10 google hdmi audio extractor and yeah the cheap china ones are relatively decent.

The active mics on a soundcard are far more sensitive and you could put multiples on an input if that floats your boat.

My s-pipe Mycroft got disassembled with me just playing with hardware and Pi’s both the Pi3A+ and Pi4-2gb are best value.
Pi0W just doesn’t make the grade for me anymore but there is a Zero priced RockPi-S RK3308 Pi3 equivalent with built in audio codec that maybe I might get round to doing some work with but sort of lost interest and been a bit lax of late.

With heat a 12v 3cm fan on 5v works surprisingly well and is extremely silent, which a 5v running at full speed will definitely not.
If I had access to 3dprint I would prob make an access cover for my dremeled port, maybe make some internal mic housings and really go to town on mic isolation, but that would prob be it.
The denser more solid PVC is miles better with higher wattage audio as from what I have seen of some of the 3dprints they are likely to flex and rattle and detract from audio quality as they often look extremely thin and the filament material is often low density.

But just to throw in a swerve ball the speaker can go on the bottom and it still sounds sweet.

There is also a Syba USB stereo mic soundcard and I have purchased x2 and both turned up as fakes with a c-media mono mic input, but mono can be ok and as said its choice how many mics you feed it.

I don’t really see beamforming and far field as much loss as they work extremely well in either distributed noise with predominant volume voice or a quiet background.
If they have to compete with another single predominant noise source they can quickly return this vocoded synthetic noise that is bad for recognition.
In industry the beamformers prob work great but domestic wise hifi or TV depending on position to you can often totally negate its effectiveness.

A couple of I2S mics and 3.5mm of the Pi is just a couple of $ with software EC.
Soundcard and active mic modules £15 same approx for hdmi2hdmi+audio and I2S which gives you an upgrade from the 3.5mm but soundcard and active mics is prob way to go if you did not get i2s mics.
My opinion with Respeaker is there is always gotchas or snakeoil and why I don’t like them I think its very much the latter.
The Anker is supposed to be a great piece of kit but haven’t tried myself.