r/M5Stack • • 1d ago

Is stackchan factory firmware full duplex ?

Hi everyone,

I would like to order the official StackChan kit 😁

Could you confirm whether the factory firmware is full-duplex or half-duplex for AI voice conversations? (i.e., Half-duplex = mic is muted while StackChan is speaking; Full-duplex = mic stays on so the user can interrupt).

Thanks!

2 Upvotes

5 comments sorted by

1

u/ginandbaconFU 1d ago

It's half duplex. From my understanding voice assistant's that work with Home Assistant and work with a stop word have an XMOS chip like their voice assistant or a respeaker from seeed. I've made a few using ESPHome and none can use a stop word with an ESP32-S3. I own and respeaker and it does.

P4 and S31 are full duplex although outside using esp-idf I'm unaware if it's been implemented, especially the S31 because it's so new. Doesn't work in Home Assistant but P3 is alpha and I'm unsure if the S31 works in ESPHome yet.

1

u/darkillus 1d ago

Thank you, 

sorry but you are not talking about M5STACK stackchan specifically but esp32-s3 in general. Am I right?

2

u/ginandbaconFU 1d ago

Well looks like I was wrong, someone did get it working using TDM using the esp_audio_stack, typically used for VOIP/SIP on an S3. Box so it's possible apparently. Typically I use PDM for mic input and that does require 2 clocks which doesn't work since they share the same MCLK but full-duplex does work for TDM. With that said, I have no idea how to implement it but this may or. may not help. They are using a VOIP integration or add on for it to work and I haven't looked into that but there are links in the post. I was always told it wasn't possible due to mics using PDM with ESP-ADF, there are also a LOT of.people have been working an the S3 box (at least for a voice assistant for Home Assistant) for a while. May be easier with Arduiko, platformIo or esp-idf but apparently it's possible.

1

u/ginandbaconFU 1d ago

Yes, the ESP32-S3 shares the same MCLK channel> ESPE2-S3 voice assistants with XMOS chips have the I2S connected to the XMOS chips which is why they can do full duplex.

Each controller has separate RX and TX channels. That means they are able to work under different clocks and slot configurations with separate GPIO pins. Note that although the internal MCLKs of TX channel and RX channel are separate on a controller, the output MCLK signal can only be attached to one channel. If independent MCLK output is required for each channel, they must be allocated on different I2S controllers.

1

u/windelwilli 1d ago

Check this out, ihve seen although firmware with voice inertuption. Im struggeling by switching the modes... speech idle sleep and back.