getDefaultVoice function

String? getDefaultVoice(
  1. String langCode, {
  2. VoiceGender gender = VoiceGender.female,
  3. String provider = 'deepgram',
})

Get default voice for a language and gender

Implementation

String? getDefaultVoice(
  String langCode, {
  VoiceGender gender = VoiceGender.female,
  String provider = 'deepgram',
}) {
  final normalized = normalizeLanguageCode(langCode);
  final effectiveGender =
      gender == VoiceGender.neutral ? VoiceGender.female : gender;
  final genderKey = effectiveGender == VoiceGender.male ? 'male' : 'female';

  // Multilingual providers (not language-specific)
  if (provider == 'deepgram') {
    final voices = deepgramVoices[genderKey];
    return voices?.isNotEmpty == true ? voices![0]['id'] : null;
  }

  if (provider == 'openai') {
    final voices = openAIVoices[genderKey];
    return voices?.isNotEmpty == true ? voices![0]['id'] : null;
  }

  if (provider == 'elevenlabs') {
    final voices = elevenLabsVoices[genderKey];
    return voices?.isNotEmpty == true ? voices![0]['id'] : null;
  }

  // Language-specific voice maps
  if (provider == 'azure') {
    final langVoices = azureNeuralVoices[normalized];
    if (langVoices == null) return null;
    final genderVoices = langVoices[genderKey] ?? langVoices['female'];
    return genderVoices?.isNotEmpty == true ? genderVoices![0] : null;
  }

  // Default fallback to Deepgram
  final voices = deepgramVoices[genderKey] ?? deepgramVoices['female'];
  return voices?.isNotEmpty == true ? voices![0]['id'] : null;
}