This drove me nuts, so I thought I'd document the answer here.
To choose a voice, you give -[NSSpeechSynthesizer initWithVoice] the identifier in reverse-DNS format, e.g. com.apple.speech.synthesis.voice.Agnes But if a user downloads one, such as Paolo, you can't get to it the same way.