I started the local application and developed tangible controls, guest flows and output handling across later shared API variants. The work spans what a guest selects, what is generated and how a result is played and shared.
Choices become a request
Physical controls and interface selectors feed the generation settings. My changes include reading the current vocal-selection knob at generation time, rather than relying on an older stored choice.
Generation takes time
The interface has to keep track of an asynchronous process and respond when results become available. I worked on guest state, playback and polling-error handling.
A result the guest can keep
Upload and QR-sharing flows connect generation to a usable output. Local and API-based versions have different integrations; they are not all the same implementation.