I found out that the config sync has nothing to do with the actual issue. It was actually due to all processing being done server side so the client decides nothing. Hindsite, I should have realised this initially. So my new approach is to send a packet on login and config change that tells the server which voice to use. It will be stored in the player NBT data. Then, whenever a voice line is played, it looks at the NBT data. I doubt this is the right, or even a good, way to do this but it works.