getAvailableVoices function

Map<String, List<VoiceOption>> getAvailableVoices(
  1. String langCode, {
  2. String provider = 'deepgram',
})

Get all available voices for a language

Implementation

Map<String, List<VoiceOption>> getAvailableVoices(
  String langCode, {
  String provider = 'deepgram',
}) {
  final normalized = normalizeLanguageCode(langCode);
  final providerLower = provider.toLowerCase();

  if (providerLower == 'azure') {
    final langVoices = azureNeuralVoices[normalized];
    if (langVoices == null) return {'male': [], 'female': []};

    List<VoiceOption> toOptions(List<String>? ids, VoiceGender gender) {
      return ids
              ?.map((id) => VoiceOption(
                    id: id,
                    name: id,
                    gender: gender,
                    provider: 'azure',
                    language: normalized,
                  ))
              .toList() ??
          [];
    }

    return {
      'male': toOptions(langVoices['male'], VoiceGender.male),
      'female': toOptions(langVoices['female'], VoiceGender.female),
    };
  }

  return _getStaticVoices(provider);
}