Hi Katie!
I think adding chrome.tts.onVoicesChanged would be fine -- it seems very inline with the rest of the API and, as you point out, shouldn't have any security or privacy implications that we can think of. Especially in terms of allowing for a path forward for these extensions to migrate to MV3, that sounds fine to me. Generally we don't like to provide these kind of "mirroring" APIs (we don't want separate implementations for a web API and an extension API), but in this case, I think we can allow it because:
a) The event fits in very well with the rest of the tts API as it is (that is, we're not introducing a fully new API that mirrors web functionality)
b) The implementation should be very straightforward (there should be very little technical cost to adding and maintaining it).
More broadly, though, do you know if there's a reason the SpeechSynthesis object is restricted to window contexts? Could it be exposed to workers, as well? That would solve the issue more fully, and could benefit both extension and web-based service workers.
Cheers,
Devlin