Most Arduinos don't have enough horsepower to run a full assistant stack. They're designed as limited resource microcontrollers.
Basically, here are some choices, depending on what your priority is:
- Run Micropython on the board. This gives you python, but no assistant.
- Run a microcontroller with limited wakeword recognition, as a front for an assistant service running elsewhere: https://www.home-assistant.io/voice_control/s3_box_voice_assistant/
- Run a more performant system like ESP-IDF which is based on FreeRTOS: https://github.com/espressif/esp-skainet (these get you closer to an assistant, but don't get you python, though)
- Train a model separately, then run it on a Micropython with pytorch bindings: https://luvsheth.com/p/running-a-pytorch-machine-learning
- Alternate version: upytorch - https://github.com/ljk53/upytorch
- Lastly, an integration between Tensorflow-Lite and Micropython: https://github.com/mocleiri/tensorflow-micropython-examples (python and ML but not Arduino).
Depending on what you want to do, I'd suggest the easiest is #2, as a frontend to HomeAssistant, with the assistant running either on a beefy server or on the cloud.
Edit: "Arduino" actually can reference three different things:
- the branded boards from arduino.cc
- the software stack with C/C++ bindings running on top of a range of microcontrollers, or
- the company called Arduino.
If you have a classic Arduino board, they usually have very limited power and run on a basic Atmel processor. An ESP-32 processor is a bit beefier and can run Arduino software (as well as FreeRTOS). And to make things even more confusing, Arduino the company sells an Arduino-branded board that runs the Arduino software stack, but on top of different processors, including an ESP-32: https://docs.arduino.cc/hardware/nano-esp32/
You may want to watch out which version of "Arduino" you want to work with.