Since 1.16.0 there is...
SpeechSynthesizer.GetVoicesAsync(string locale)
var config = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");
using var synthesizer = new SpeechSynthesizer(config, null as AudioConfig);
using var result = await synthesizer.GetVoicesAsync();
if (result.Reason == ResultReason.VoicesListRetrieved)
{
Debug.WriteLine($"Found {result.Voices.Count} voices");
}
There is a working example SynthesisGetAvailableVoicesAsync() method in the Azure-Samples github respository... there is a direct link to the Text-to-Speech samples at the top of the Text-to-speech quickstart page.