https://github.com/MattMatic/micropython-longwave/
It allows you to play much longer WAV files than memory can allow. I've tested it with 32kHz mono WAV files, happily playing many minutes of audio.
Just added simple restart mechanisms so I can hook in events (e.g. the accelerometer's tilt detection) to trigger audio events

Ideally I'd like this to work from a DAC or DMA callback, rather than a linked timer. Additionally, it would be excellent to be able to vary the rate of DMA playback without having to restart or work out where we've got to. With both those facilities you can link the accelerometer into speed of playback - for engine noises etc

To do:
* Add circular playback of the whole file
* Add additional status info to know how much has been played.
Please excuse any poor Python coding... am new to Python (but not coding!) So any recommended restructuring gratefully accepted!

Matt