Spaces:
Running
Running
Upload 7 files
Browse files- app.py +352 -142
- get_voices.py +115 -0
- header.py +25 -25
- output/new_audio.mp3 +0 -0
- output/new_audio.wav +0 -0
- requirements.txt +1 -2
- voices.json +1422 -0
app.py
CHANGED
|
@@ -1,142 +1,352 @@
|
|
| 1 |
-
import subprocess
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
def remove_silence(input_file, output_file):
|
| 49 |
-
audio = AudioSegment.from_wav(input_file)
|
| 50 |
-
|
| 51 |
-
# Encontra os segmentos de áudio que não são silêncio
|
| 52 |
-
segments = split_on_silence(audio, min_silence_len=500, silence_thresh=-40)
|
| 53 |
-
|
| 54 |
-
# Concatena os segmentos de áudio não silenciosos
|
| 55 |
-
non_silent_audio = AudioSegment.silent(duration=0)
|
| 56 |
-
for segment in segments:
|
| 57 |
-
non_silent_audio += segment
|
| 58 |
-
|
| 59 |
-
# Salva o áudio sem as partes de silêncio
|
| 60 |
-
non_silent_audio.export(output_file, format="wav")
|
| 61 |
-
|
| 62 |
-
def controlador_generate_audio(audio_input, voice_model_input, speed_input, checkbox_cortar_silencio):
|
| 63 |
-
# Gerar áudio
|
| 64 |
-
audio_file = generate_audio(audio_input, voice_model_input, speed_input)
|
| 65 |
-
if audio_file:
|
| 66 |
-
print("Áudio gerado com sucesso:", audio_file)
|
| 67 |
-
# Verificar se o checkbox de cortar silêncio está marcado
|
| 68 |
-
if checkbox_cortar_silencio:
|
| 69 |
-
print("Cortando silêncio...")
|
| 70 |
-
# Remover silêncio do áudio
|
| 71 |
-
remove_silence(audio_file, audio_file)
|
| 72 |
-
print("Silêncio removido com sucesso!")
|
| 73 |
-
else:
|
| 74 |
-
print("Erro ao gerar áudio.")
|
| 75 |
-
return audio_file # Retornar o caminho do arquivo de áudio
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import subprocess
|
| 2 |
+
import os
|
| 3 |
+
import json
|
| 4 |
+
import gradio as gr
|
| 5 |
+
from pydub import AudioSegment
|
| 6 |
+
from header import badges, description
|
| 7 |
+
from pydub.silence import split_on_silence
|
| 8 |
+
from get_voices import get_voices
|
| 9 |
+
#from adjust import remove_silence, controlador_generate_audio, generate_audio
|
| 10 |
+
|
| 11 |
+
# Load voices from JSON file
|
| 12 |
+
def load_voices():
|
| 13 |
+
with open('voices.json', 'r', encoding='utf-8') as f:
|
| 14 |
+
return json.load(f)
|
| 15 |
+
|
| 16 |
+
# Get formatted voice options for specific language
|
| 17 |
+
def get_voice_options(language, voices_data):
|
| 18 |
+
if language in voices_data:
|
| 19 |
+
return [f"{voice['name']} | {voice['gender']}" for voice in voices_data[language]]
|
| 20 |
+
return []
|
| 21 |
+
|
| 22 |
+
# Extract voice name from formatted string
|
| 23 |
+
def extract_voice_name(formatted_voice):
|
| 24 |
+
return formatted_voice.split(" | ")[0]
|
| 25 |
+
|
| 26 |
+
def update_voice_options(language):
|
| 27 |
+
voices_data = load_voices()
|
| 28 |
+
voice_options = get_voice_options(language, voices_data)
|
| 29 |
+
# Retorna apenas a lista de opções e o primeiro valor
|
| 30 |
+
if voice_options:
|
| 31 |
+
return gr.Dropdown(choices=voice_options, value=voice_options[0])
|
| 32 |
+
return gr.Dropdown(choices=[], value=None)
|
| 33 |
+
|
| 34 |
+
def update_voices_and_refresh():
|
| 35 |
+
# Execute get_voices to update the voices.json file
|
| 36 |
+
get_voices()
|
| 37 |
+
# Reload the voices data
|
| 38 |
+
voices_data = load_voices()
|
| 39 |
+
available_languages = list(voices_data.keys())
|
| 40 |
+
# Get initial voices for the first language
|
| 41 |
+
initial_voices = get_voice_options(available_languages[0], voices_data) if available_languages else []
|
| 42 |
+
|
| 43 |
+
return (
|
| 44 |
+
gr.Dropdown(choices=available_languages, value=available_languages[0] if available_languages else None),
|
| 45 |
+
gr.Dropdown(choices=initial_voices, value=initial_voices[0] if initial_voices else None)
|
| 46 |
+
)
|
| 47 |
+
|
| 48 |
+
def remove_silence(input_file, output_file):
|
| 49 |
+
audio = AudioSegment.from_wav(input_file)
|
| 50 |
+
|
| 51 |
+
# Encontra os segmentos de áudio que não são silêncio
|
| 52 |
+
segments = split_on_silence(audio, min_silence_len=500, silence_thresh=-40)
|
| 53 |
+
|
| 54 |
+
# Concatena os segmentos de áudio não silenciosos
|
| 55 |
+
non_silent_audio = AudioSegment.silent(duration=0)
|
| 56 |
+
for segment in segments:
|
| 57 |
+
non_silent_audio += segment
|
| 58 |
+
|
| 59 |
+
# Salva o áudio sem as partes de silêncio
|
| 60 |
+
non_silent_audio.export(output_file, format="wav")
|
| 61 |
+
|
| 62 |
+
def controlador_generate_audio(audio_input, voice_model_input, speed_input, pitch_input, volume_input, checkbox_cortar_silencio):
|
| 63 |
+
# Gerar áudio
|
| 64 |
+
audio_file = generate_audio(audio_input, voice_model_input, speed_input, pitch_input, volume_input)
|
| 65 |
+
if audio_file:
|
| 66 |
+
print("Áudio gerado com sucesso:", audio_file)
|
| 67 |
+
# Verificar se o checkbox de cortar silêncio está marcado
|
| 68 |
+
if checkbox_cortar_silencio:
|
| 69 |
+
print("Cortando silêncio...")
|
| 70 |
+
# Remover silêncio do áudio
|
| 71 |
+
remove_silence(audio_file, audio_file)
|
| 72 |
+
print("Silêncio removido com sucesso!")
|
| 73 |
+
else:
|
| 74 |
+
print("Erro ao gerar áudio.")
|
| 75 |
+
return audio_file # Retornar o caminho do arquivo de áudio
|
| 76 |
+
|
| 77 |
+
def generate_audio(texto, modelo_de_voz, velocidade, tom, volume):
|
| 78 |
+
# Extract actual voice name from formatted string if necessary
|
| 79 |
+
actual_voice = extract_voice_name(modelo_de_voz)
|
| 80 |
+
|
| 81 |
+
# Format parameters with proper signs
|
| 82 |
+
if velocidade >= 0:
|
| 83 |
+
rate_str = f"+{velocidade}%"
|
| 84 |
+
else:
|
| 85 |
+
rate_str = f"{velocidade}%"
|
| 86 |
+
|
| 87 |
+
if tom >= 0:
|
| 88 |
+
pitch_str = f"+{tom}Hz"
|
| 89 |
+
else:
|
| 90 |
+
pitch_str = f"{tom}Hz"
|
| 91 |
+
|
| 92 |
+
if volume >= 0:
|
| 93 |
+
volume_str = f"+{volume}%"
|
| 94 |
+
else:
|
| 95 |
+
volume_str = f"{volume}%"
|
| 96 |
+
|
| 97 |
+
output_dir = "output"
|
| 98 |
+
os.makedirs(output_dir, exist_ok=True)
|
| 99 |
+
mp3_output_file = os.path.join(output_dir, "new_audio.mp3")
|
| 100 |
+
|
| 101 |
+
cmd = [
|
| 102 |
+
"edge-tts",
|
| 103 |
+
"--rate=" + rate_str,
|
| 104 |
+
"--pitch=" + pitch_str,
|
| 105 |
+
"--volume=" + volume_str,
|
| 106 |
+
"-v", actual_voice,
|
| 107 |
+
"-t", texto,
|
| 108 |
+
"--write-media", mp3_output_file
|
| 109 |
+
]
|
| 110 |
+
|
| 111 |
+
print("Gerando áudio...")
|
| 112 |
+
try:
|
| 113 |
+
subprocess.run(cmd, check=True)
|
| 114 |
+
except subprocess.CalledProcessError as e:
|
| 115 |
+
print("Erro ao gerar áudio:", e)
|
| 116 |
+
return None
|
| 117 |
+
|
| 118 |
+
print("Áudio gerado com sucesso!")
|
| 119 |
+
wav_output_file = os.path.join(output_dir, "new_audio.wav")
|
| 120 |
+
audio = AudioSegment.from_mp3(mp3_output_file)
|
| 121 |
+
audio.export(wav_output_file, format="wav")
|
| 122 |
+
return wav_output_file
|
| 123 |
+
|
| 124 |
+
def generate_audio_from_file(file_path, modelo_de_voz, velocidade, tom, volume):
|
| 125 |
+
# Extrai o nome real da voz formatada, se necessário
|
| 126 |
+
actual_voice = extract_voice_name(modelo_de_voz)
|
| 127 |
+
|
| 128 |
+
# Formatação dos parâmetros com sinais adequados
|
| 129 |
+
rate_str = f"+{velocidade}%" if velocidade >= 0 else f"{velocidade}%"
|
| 130 |
+
pitch_str = f"+{tom}Hz" if tom >= 0 else f"{tom}Hz"
|
| 131 |
+
volume_str = f"+{volume}%" if volume >= 0 else f"{volume}%"
|
| 132 |
+
|
| 133 |
+
output_dir = "output"
|
| 134 |
+
os.makedirs(output_dir, exist_ok=True)
|
| 135 |
+
mp3_output_file = os.path.join(output_dir, "new_audio.mp3")
|
| 136 |
+
|
| 137 |
+
# Usar -f FILE para passar o caminho do arquivo de texto
|
| 138 |
+
cmd = [
|
| 139 |
+
"edge-tts",
|
| 140 |
+
"-f", file_path, # Certificar que o conteúdo do arquivo seja texto puro
|
| 141 |
+
"--rate=" + rate_str,
|
| 142 |
+
"--pitch=" + pitch_str,
|
| 143 |
+
"--volume=" + volume_str,
|
| 144 |
+
"-v", actual_voice,
|
| 145 |
+
"--write-media", mp3_output_file
|
| 146 |
+
]
|
| 147 |
+
|
| 148 |
+
print("Gerando áudio do arquivo...")
|
| 149 |
+
try:
|
| 150 |
+
subprocess.run(cmd, check=True)
|
| 151 |
+
except subprocess.CalledProcessError as e:
|
| 152 |
+
print("Erro ao gerar áudio:", e)
|
| 153 |
+
return None
|
| 154 |
+
|
| 155 |
+
print("Áudio gerado com sucesso!")
|
| 156 |
+
wav_output_file = os.path.join(output_dir, "new_audio.wav")
|
| 157 |
+
audio = AudioSegment.from_mp3(mp3_output_file)
|
| 158 |
+
audio.export(wav_output_file, format="wav")
|
| 159 |
+
return wav_output_file
|
| 160 |
+
|
| 161 |
+
def controlador_generate_audio_from_file(file, voice_model_input, speed_input, pitch_input, volume_input, checkbox_cortar_silencio):
|
| 162 |
+
if file is None:
|
| 163 |
+
return None
|
| 164 |
+
|
| 165 |
+
# Neste caso, o 'file' já é o caminho do arquivo, então não precisa reescrever
|
| 166 |
+
temp_file_path = file # Caminho do arquivo que você recebe do Gradio
|
| 167 |
+
|
| 168 |
+
# Gerar o áudio
|
| 169 |
+
audio_file = generate_audio_from_file(temp_file_path, voice_model_input, speed_input, pitch_input, volume_input)
|
| 170 |
+
|
| 171 |
+
if audio_file:
|
| 172 |
+
print("Áudio gerado com sucesso:", audio_file)
|
| 173 |
+
if checkbox_cortar_silencio:
|
| 174 |
+
print("Cortando silêncio...")
|
| 175 |
+
remove_silence(audio_file, audio_file)
|
| 176 |
+
print("Silêncio removido com sucesso!")
|
| 177 |
+
else:
|
| 178 |
+
print("Erro ao gerar áudio.")
|
| 179 |
+
|
| 180 |
+
return audio_file
|
| 181 |
+
|
| 182 |
+
with gr.Blocks(theme=gr.themes.Default(primary_hue="green", secondary_hue="blue"), title="QuickTTS") as iface:
|
| 183 |
+
gr.Markdown(badges)
|
| 184 |
+
gr.Markdown(description)
|
| 185 |
+
|
| 186 |
+
voices_data = load_voices()
|
| 187 |
+
available_languages = list(voices_data.keys())
|
| 188 |
+
|
| 189 |
+
with gr.Tabs():
|
| 190 |
+
with gr.TabItem("Edge-TTS"):
|
| 191 |
+
gr.Markdown("É ilimitado, podendo até mesmo colocar um livro inteiro, mas claro, tem a questão de tempo, quanto maior o texto, mais demorado é, dublagem por SRT talvez um dia eu bote.")
|
| 192 |
+
|
| 193 |
+
# Language selection dropdown
|
| 194 |
+
language_input = gr.Dropdown(
|
| 195 |
+
choices=available_languages,
|
| 196 |
+
label="Idioma",
|
| 197 |
+
value=available_languages[52] if available_languages else None
|
| 198 |
+
)
|
| 199 |
+
|
| 200 |
+
# Voice model dropdown (will be updated based on language selection)
|
| 201 |
+
initial_voices = get_voice_options(available_languages[52], voices_data) if available_languages else []
|
| 202 |
+
voice_model_input = gr.Dropdown(
|
| 203 |
+
choices=initial_voices,
|
| 204 |
+
label="Modelo de Voz",
|
| 205 |
+
value=initial_voices[0] if initial_voices else None
|
| 206 |
+
)
|
| 207 |
+
|
| 208 |
+
# Connect language selection to voice model update
|
| 209 |
+
language_input.change(
|
| 210 |
+
fn=update_voice_options,
|
| 211 |
+
inputs=[language_input],
|
| 212 |
+
outputs=[voice_model_input]
|
| 213 |
+
)
|
| 214 |
+
|
| 215 |
+
audio_input = gr.Textbox(label="Texto", value='Texto de exemplo!', interactive=True)
|
| 216 |
+
|
| 217 |
+
with gr.Row():
|
| 218 |
+
with gr.Column():
|
| 219 |
+
speed_input = gr.Slider(
|
| 220 |
+
minimum=-200,
|
| 221 |
+
maximum=200,
|
| 222 |
+
label="Velocidade (%)",
|
| 223 |
+
value=0,
|
| 224 |
+
interactive=True
|
| 225 |
+
)
|
| 226 |
+
with gr.Column():
|
| 227 |
+
pitch_input = gr.Slider(
|
| 228 |
+
minimum=-100,
|
| 229 |
+
maximum=100,
|
| 230 |
+
label="Tom (Hz)",
|
| 231 |
+
value=0,
|
| 232 |
+
interactive=True
|
| 233 |
+
)
|
| 234 |
+
with gr.Column():
|
| 235 |
+
volume_input = gr.Slider(
|
| 236 |
+
minimum=-99,
|
| 237 |
+
maximum=100,
|
| 238 |
+
label="Volume (%)",
|
| 239 |
+
value=0,
|
| 240 |
+
interactive=True
|
| 241 |
+
)
|
| 242 |
+
|
| 243 |
+
checkbox_cortar_silencio = gr.Checkbox(label="Cortar Silencio", interactive=True)
|
| 244 |
+
audio_output = gr.Audio(label="Resultado", type="filepath", interactive=False)
|
| 245 |
+
|
| 246 |
+
edgetts_button = gr.Button(value="Falar")
|
| 247 |
+
edgetts_button.click(
|
| 248 |
+
controlador_generate_audio,
|
| 249 |
+
inputs=[
|
| 250 |
+
audio_input,
|
| 251 |
+
voice_model_input,
|
| 252 |
+
speed_input,
|
| 253 |
+
pitch_input, # New input
|
| 254 |
+
volume_input, # New input
|
| 255 |
+
checkbox_cortar_silencio
|
| 256 |
+
],
|
| 257 |
+
outputs=[audio_output]
|
| 258 |
+
)
|
| 259 |
+
|
| 260 |
+
clear_button = gr.ClearButton(audio_input, value='Limpar')
|
| 261 |
+
|
| 262 |
+
# Add update voices button at the top
|
| 263 |
+
update_voices_btn = gr.Button(value="Atualizar Lista de Vozes")
|
| 264 |
+
# Connect update voices button to refresh function
|
| 265 |
+
update_voices_btn.click(
|
| 266 |
+
fn=update_voices_and_refresh,
|
| 267 |
+
inputs=[],
|
| 268 |
+
outputs=[language_input, voice_model_input]
|
| 269 |
+
)
|
| 270 |
+
gr.Markdown("Agradecimentos a rany2 pelo Edge-TTS")
|
| 271 |
+
|
| 272 |
+
with gr.TabItem("Lote (Arquivo txt)"):
|
| 273 |
+
gr.Markdown("Carregar texto de um arquivo")
|
| 274 |
+
# Language and voice selection (same as first tab)
|
| 275 |
+
language_input_file = gr.Dropdown(
|
| 276 |
+
choices=available_languages,
|
| 277 |
+
label="Idioma",
|
| 278 |
+
value=available_languages[52] if available_languages else None
|
| 279 |
+
)
|
| 280 |
+
|
| 281 |
+
initial_voices = get_voice_options(available_languages[52], voices_data) if available_languages else []
|
| 282 |
+
voice_model_input_file = gr.Dropdown(
|
| 283 |
+
choices=initial_voices,
|
| 284 |
+
label="Modelo de Voz",
|
| 285 |
+
value=initial_voices[0] if initial_voices else None
|
| 286 |
+
)
|
| 287 |
+
|
| 288 |
+
language_input_file.change(
|
| 289 |
+
fn=update_voice_options,
|
| 290 |
+
inputs=[language_input_file],
|
| 291 |
+
outputs=[voice_model_input_file]
|
| 292 |
+
)
|
| 293 |
+
gr.Markdown("O programa vai ler linha por linha e entregar em um único áudio")
|
| 294 |
+
# File input
|
| 295 |
+
file_input = gr.File(
|
| 296 |
+
label="Arquivo de Texto",
|
| 297 |
+
file_types=[".txt"],
|
| 298 |
+
type="filepath"
|
| 299 |
+
)
|
| 300 |
+
|
| 301 |
+
with gr.Row():
|
| 302 |
+
with gr.Column():
|
| 303 |
+
speed_input_file = gr.Slider(
|
| 304 |
+
minimum=-200,
|
| 305 |
+
maximum=200,
|
| 306 |
+
label="Velocidade (%)",
|
| 307 |
+
value=0,
|
| 308 |
+
interactive=True
|
| 309 |
+
)
|
| 310 |
+
with gr.Column():
|
| 311 |
+
pitch_input_file = gr.Slider(
|
| 312 |
+
minimum=-100,
|
| 313 |
+
maximum=100,
|
| 314 |
+
label="Tom (Hz)",
|
| 315 |
+
value=0,
|
| 316 |
+
interactive=True
|
| 317 |
+
)
|
| 318 |
+
with gr.Column():
|
| 319 |
+
volume_input_file = gr.Slider(
|
| 320 |
+
minimum=-99,
|
| 321 |
+
maximum=100,
|
| 322 |
+
label="Volume (%)",
|
| 323 |
+
value=0,
|
| 324 |
+
interactive=True
|
| 325 |
+
)
|
| 326 |
+
|
| 327 |
+
checkbox_cortar_silencio_file = gr.Checkbox(label="Cortar Silencio", interactive=True)
|
| 328 |
+
audio_output_file = gr.Audio(label="Resultado", type="filepath", interactive=False)
|
| 329 |
+
|
| 330 |
+
edgetts_button_file = gr.Button(value="Falar")
|
| 331 |
+
edgetts_button_file.click(
|
| 332 |
+
controlador_generate_audio_from_file,
|
| 333 |
+
inputs=[
|
| 334 |
+
file_input,
|
| 335 |
+
voice_model_input_file,
|
| 336 |
+
speed_input_file,
|
| 337 |
+
pitch_input_file,
|
| 338 |
+
volume_input_file,
|
| 339 |
+
checkbox_cortar_silencio_file
|
| 340 |
+
],
|
| 341 |
+
outputs=[audio_output_file]
|
| 342 |
+
)
|
| 343 |
+
|
| 344 |
+
clear_button_file = gr.ClearButton(file_input, value='Limpar')
|
| 345 |
+
|
| 346 |
+
gr.Markdown("Agradecimentos a rany2 pelo Edge-TTS")
|
| 347 |
+
|
| 348 |
+
gr.Markdown("""
|
| 349 |
+
Desenvolvido por Rafael Godoy <br>
|
| 350 |
+
Apoie o projeto pelo https://nubank.com.br/pagar/1ls6a4/0QpSSbWBSq, qualquer valor é bem vindo.
|
| 351 |
+
""")
|
| 352 |
+
iface.launch()
|
get_voices.py
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import subprocess
|
| 2 |
+
import json
|
| 3 |
+
import re
|
| 4 |
+
from collections import defaultdict
|
| 5 |
+
|
| 6 |
+
# Dicionário para mapear códigos de idioma para nomes completos
|
| 7 |
+
language_mapping = {
|
| 8 |
+
"af": "Afrikaans",
|
| 9 |
+
"am": "Amharic",
|
| 10 |
+
"ar": "Arabic",
|
| 11 |
+
"az": "Azerbaijani",
|
| 12 |
+
"bg": "Bulgarian",
|
| 13 |
+
"bn": "Bengali",
|
| 14 |
+
"bs": "Bosnian",
|
| 15 |
+
"ca": "Catalan",
|
| 16 |
+
"cs": "Czech",
|
| 17 |
+
"cy": "Welsh",
|
| 18 |
+
"da": "Danish",
|
| 19 |
+
"de": "Deutsch",
|
| 20 |
+
"al": "Albanian",
|
| 21 |
+
"el": "Greek",
|
| 22 |
+
"in": "Indonesian",
|
| 23 |
+
"en": "English",
|
| 24 |
+
"es": "Spanish",
|
| 25 |
+
"et": "Estonian",
|
| 26 |
+
"fa": "Persian",
|
| 27 |
+
"fi": "Finnish",
|
| 28 |
+
"fil": "Filipino",
|
| 29 |
+
"fr": "French",
|
| 30 |
+
"ga": "Irish",
|
| 31 |
+
"gl": "Galician",
|
| 32 |
+
"gu": "Gujarati",
|
| 33 |
+
"he": "Hebrew",
|
| 34 |
+
"hi": "Hindi",
|
| 35 |
+
"hr": "Croatian",
|
| 36 |
+
"hu": "Hungarian",
|
| 37 |
+
"id": "Indonesian",
|
| 38 |
+
"is": "Icelandic",
|
| 39 |
+
"it": "Italian",
|
| 40 |
+
"ja": "Japanese",
|
| 41 |
+
"jv": "Javanese",
|
| 42 |
+
"ka": "Georgian",
|
| 43 |
+
"kk": "Kazakh",
|
| 44 |
+
"km": "Khmer",
|
| 45 |
+
"kn": "Kannada",
|
| 46 |
+
"ko": "Korean",
|
| 47 |
+
"lo": "Lao",
|
| 48 |
+
"lt": "Lithuanian",
|
| 49 |
+
"lv": "Latvian",
|
| 50 |
+
"mk": "Macedonian",
|
| 51 |
+
"ml": "Malayalam",
|
| 52 |
+
"mn": "Mongolian",
|
| 53 |
+
"mr": "Marathi",
|
| 54 |
+
"ms": "Malay",
|
| 55 |
+
"mt": "Maltese",
|
| 56 |
+
"my": "Burmese",
|
| 57 |
+
"nb": "Norwegian Bokmål",
|
| 58 |
+
"ne": "Nepali",
|
| 59 |
+
"nl": "Dutch",
|
| 60 |
+
"pl": "Polish",
|
| 61 |
+
"ps": "Pashto",
|
| 62 |
+
"pt": "Portuguese",
|
| 63 |
+
"ro": "Romanian",
|
| 64 |
+
"ru": "Russian",
|
| 65 |
+
"si": "Sinhala",
|
| 66 |
+
"sk": "Slovak",
|
| 67 |
+
"sl": "Slovenian",
|
| 68 |
+
"so": "Somali",
|
| 69 |
+
"sq": "Albanian",
|
| 70 |
+
"sr": "Serbian",
|
| 71 |
+
"su": "Sundanese",
|
| 72 |
+
"sv": "Swedish",
|
| 73 |
+
"sw": "Swahili",
|
| 74 |
+
"ta": "Tamil",
|
| 75 |
+
"te": "Telugu",
|
| 76 |
+
"th": "Thai",
|
| 77 |
+
"tr": "Turkish",
|
| 78 |
+
"uk": "Ukrainian",
|
| 79 |
+
"ur": "Urdu",
|
| 80 |
+
"uz": "Uzbek",
|
| 81 |
+
"vi": "Vietnamese",
|
| 82 |
+
"zh": "Chinese",
|
| 83 |
+
"zu": "Zulu"
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
def get_voices():
|
| 87 |
+
# Executa o comando edge-tts --list-voices
|
| 88 |
+
result = subprocess.run(['edge-tts', '--list-voices'], capture_output=True, text=True)
|
| 89 |
+
|
| 90 |
+
if result.returncode != 0:
|
| 91 |
+
print("Erro ao executar o comando edge-tts.")
|
| 92 |
+
return
|
| 93 |
+
|
| 94 |
+
# Processa a saída
|
| 95 |
+
voices = result.stdout.strip().split("\n\n")
|
| 96 |
+
voices_data = defaultdict(list)
|
| 97 |
+
|
| 98 |
+
for voice in voices:
|
| 99 |
+
# Usa regex para capturar o nome e o gênero
|
| 100 |
+
match = re.findall(r'Name:\s*(.*?)\s*Gender:\s*(\w+)', voice)
|
| 101 |
+
if match:
|
| 102 |
+
name, gender = match[0]
|
| 103 |
+
language_code = name.split('-')[0] # Pega o código do idioma
|
| 104 |
+
language_name = language_mapping.get(language_code, language_code) # Obtém o nome completo do idioma
|
| 105 |
+
voices_data[language_name].append({
|
| 106 |
+
'name': name,
|
| 107 |
+
'gender': gender
|
| 108 |
+
})
|
| 109 |
+
|
| 110 |
+
# Salva em um arquivo JSON
|
| 111 |
+
with open('voices.json', 'w', encoding='utf-8') as json_file:
|
| 112 |
+
json.dump(voices_data, json_file, ensure_ascii=False, indent=4)
|
| 113 |
+
|
| 114 |
+
if __name__ == "__main__":
|
| 115 |
+
get_voices()
|
header.py
CHANGED
|
@@ -1,26 +1,26 @@
|
|
| 1 |
-
badges = """
|
| 2 |
-
<div style="display: flex">
|
| 3 |
-
<span style="margin-right: 5px">
|
| 4 |
-
|
| 5 |
-
[  ](https://github.com/rafaelGodoyEbert)
|
| 6 |
-
|
| 7 |
-
</span>
|
| 8 |
-
<span style="margin-right: 5px">
|
| 9 |
-
|
| 10 |
-
[  ](https://twitter.com/GodoyEbert)
|
| 11 |
-
|
| 12 |
-
</span>
|
| 13 |
-
<span>
|
| 14 |
-
|
| 15 |
-
[  ](https://discord.gg/aihubbrasil)
|
| 16 |
-
|
| 17 |
-
</span>
|
| 18 |
-
</div>
|
| 19 |
-
"""
|
| 20 |
-
|
| 21 |
-
description = """
|
| 22 |
-
#
|
| 23 |
-
|
| 24 |
-
Tem em diversos idiomas, só aproveitar<br>
|
| 25 |
-
Increva-se no canal do <a href='https://www.youtube.com/@aihubbrasil' target='_blank'>Youtube do AI HUB Brasil</a> e no meu pessoal <a href='https://www.youtube.com/@godoyy' target='_blank'>Godoyy</a>
|
| 26 |
"""
|
|
|
|
| 1 |
+
badges = """
|
| 2 |
+
<div style="display: flex">
|
| 3 |
+
<span style="margin-right: 5px">
|
| 4 |
+
|
| 5 |
+
[  ](https://github.com/rafaelGodoyEbert)
|
| 6 |
+
|
| 7 |
+
</span>
|
| 8 |
+
<span style="margin-right: 5px">
|
| 9 |
+
|
| 10 |
+
[  ](https://twitter.com/GodoyEbert)
|
| 11 |
+
|
| 12 |
+
</span>
|
| 13 |
+
<span>
|
| 14 |
+
|
| 15 |
+
[  ](https://discord.gg/aihubbrasil)
|
| 16 |
+
|
| 17 |
+
</span>
|
| 18 |
+
</div>
|
| 19 |
+
"""
|
| 20 |
+
|
| 21 |
+
description = """
|
| 22 |
+
# QuickTTS
|
| 23 |
+
QuickTTS, para todos aqueles que sempre me pediam alguma forma de fazer algum TTS.<br>
|
| 24 |
+
Tem em diversos idiomas, só aproveitar<br>
|
| 25 |
+
Increva-se no canal do <a href='https://www.youtube.com/@aihubbrasil' target='_blank'>Youtube do AI HUB Brasil</a> e no meu pessoal <a href='https://www.youtube.com/@godoyy' target='_blank'>Godoyy</a>
|
| 26 |
"""
|
output/new_audio.mp3
ADDED
|
Binary file (12.2 kB). View file
|
|
|
output/new_audio.wav
ADDED
|
Binary file (98 kB). View file
|
|
|
requirements.txt
CHANGED
|
@@ -1,2 +1 @@
|
|
| 1 |
-
edge-tts
|
| 2 |
-
elevenlabs==0.2.15
|
|
|
|
| 1 |
+
edge-tts
|
|
|
voices.json
ADDED
|
@@ -0,0 +1,1422 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"Afrikaans": [
|
| 3 |
+
{
|
| 4 |
+
"name": "af-ZA-AdriNeural",
|
| 5 |
+
"gender": "Female"
|
| 6 |
+
},
|
| 7 |
+
{
|
| 8 |
+
"name": "af-ZA-WillemNeural",
|
| 9 |
+
"gender": "Male"
|
| 10 |
+
}
|
| 11 |
+
],
|
| 12 |
+
"Amharic": [
|
| 13 |
+
{
|
| 14 |
+
"name": "am-ET-AmehaNeural",
|
| 15 |
+
"gender": "Male"
|
| 16 |
+
},
|
| 17 |
+
{
|
| 18 |
+
"name": "am-ET-MekdesNeural",
|
| 19 |
+
"gender": "Female"
|
| 20 |
+
}
|
| 21 |
+
],
|
| 22 |
+
"Arabic": [
|
| 23 |
+
{
|
| 24 |
+
"name": "ar-AE-FatimaNeural",
|
| 25 |
+
"gender": "Female"
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"name": "ar-AE-HamdanNeural",
|
| 29 |
+
"gender": "Male"
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"name": "ar-BH-AliNeural",
|
| 33 |
+
"gender": "Male"
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"name": "ar-BH-LailaNeural",
|
| 37 |
+
"gender": "Female"
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
"name": "ar-DZ-AminaNeural",
|
| 41 |
+
"gender": "Female"
|
| 42 |
+
},
|
| 43 |
+
{
|
| 44 |
+
"name": "ar-DZ-IsmaelNeural",
|
| 45 |
+
"gender": "Male"
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"name": "ar-EG-SalmaNeural",
|
| 49 |
+
"gender": "Female"
|
| 50 |
+
},
|
| 51 |
+
{
|
| 52 |
+
"name": "ar-EG-ShakirNeural",
|
| 53 |
+
"gender": "Male"
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
"name": "ar-IQ-BasselNeural",
|
| 57 |
+
"gender": "Male"
|
| 58 |
+
},
|
| 59 |
+
{
|
| 60 |
+
"name": "ar-IQ-RanaNeural",
|
| 61 |
+
"gender": "Female"
|
| 62 |
+
},
|
| 63 |
+
{
|
| 64 |
+
"name": "ar-JO-SanaNeural",
|
| 65 |
+
"gender": "Female"
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"name": "ar-JO-TaimNeural",
|
| 69 |
+
"gender": "Male"
|
| 70 |
+
},
|
| 71 |
+
{
|
| 72 |
+
"name": "ar-KW-FahedNeural",
|
| 73 |
+
"gender": "Male"
|
| 74 |
+
},
|
| 75 |
+
{
|
| 76 |
+
"name": "ar-KW-NouraNeural",
|
| 77 |
+
"gender": "Female"
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"name": "ar-LB-LaylaNeural",
|
| 81 |
+
"gender": "Female"
|
| 82 |
+
},
|
| 83 |
+
{
|
| 84 |
+
"name": "ar-LB-RamiNeural",
|
| 85 |
+
"gender": "Male"
|
| 86 |
+
},
|
| 87 |
+
{
|
| 88 |
+
"name": "ar-LY-ImanNeural",
|
| 89 |
+
"gender": "Female"
|
| 90 |
+
},
|
| 91 |
+
{
|
| 92 |
+
"name": "ar-LY-OmarNeural",
|
| 93 |
+
"gender": "Male"
|
| 94 |
+
},
|
| 95 |
+
{
|
| 96 |
+
"name": "ar-MA-JamalNeural",
|
| 97 |
+
"gender": "Male"
|
| 98 |
+
},
|
| 99 |
+
{
|
| 100 |
+
"name": "ar-MA-MounaNeural",
|
| 101 |
+
"gender": "Female"
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"name": "ar-OM-AbdullahNeural",
|
| 105 |
+
"gender": "Male"
|
| 106 |
+
},
|
| 107 |
+
{
|
| 108 |
+
"name": "ar-OM-AyshaNeural",
|
| 109 |
+
"gender": "Female"
|
| 110 |
+
},
|
| 111 |
+
{
|
| 112 |
+
"name": "ar-QA-AmalNeural",
|
| 113 |
+
"gender": "Female"
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"name": "ar-QA-MoazNeural",
|
| 117 |
+
"gender": "Male"
|
| 118 |
+
},
|
| 119 |
+
{
|
| 120 |
+
"name": "ar-SA-HamedNeural",
|
| 121 |
+
"gender": "Male"
|
| 122 |
+
},
|
| 123 |
+
{
|
| 124 |
+
"name": "ar-SA-ZariyahNeural",
|
| 125 |
+
"gender": "Female"
|
| 126 |
+
},
|
| 127 |
+
{
|
| 128 |
+
"name": "ar-SY-AmanyNeural",
|
| 129 |
+
"gender": "Female"
|
| 130 |
+
},
|
| 131 |
+
{
|
| 132 |
+
"name": "ar-SY-LaithNeural",
|
| 133 |
+
"gender": "Male"
|
| 134 |
+
},
|
| 135 |
+
{
|
| 136 |
+
"name": "ar-TN-HediNeural",
|
| 137 |
+
"gender": "Male"
|
| 138 |
+
},
|
| 139 |
+
{
|
| 140 |
+
"name": "ar-TN-ReemNeural",
|
| 141 |
+
"gender": "Female"
|
| 142 |
+
},
|
| 143 |
+
{
|
| 144 |
+
"name": "ar-YE-MaryamNeural",
|
| 145 |
+
"gender": "Female"
|
| 146 |
+
},
|
| 147 |
+
{
|
| 148 |
+
"name": "ar-YE-SalehNeural",
|
| 149 |
+
"gender": "Male"
|
| 150 |
+
}
|
| 151 |
+
],
|
| 152 |
+
"Azerbaijani": [
|
| 153 |
+
{
|
| 154 |
+
"name": "az-AZ-BabekNeural",
|
| 155 |
+
"gender": "Male"
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"name": "az-AZ-BanuNeural",
|
| 159 |
+
"gender": "Female"
|
| 160 |
+
}
|
| 161 |
+
],
|
| 162 |
+
"Bulgarian": [
|
| 163 |
+
{
|
| 164 |
+
"name": "bg-BG-BorislavNeural",
|
| 165 |
+
"gender": "Male"
|
| 166 |
+
},
|
| 167 |
+
{
|
| 168 |
+
"name": "bg-BG-KalinaNeural",
|
| 169 |
+
"gender": "Female"
|
| 170 |
+
}
|
| 171 |
+
],
|
| 172 |
+
"Bengali": [
|
| 173 |
+
{
|
| 174 |
+
"name": "bn-BD-NabanitaNeural",
|
| 175 |
+
"gender": "Female"
|
| 176 |
+
},
|
| 177 |
+
{
|
| 178 |
+
"name": "bn-BD-PradeepNeural",
|
| 179 |
+
"gender": "Male"
|
| 180 |
+
},
|
| 181 |
+
{
|
| 182 |
+
"name": "bn-IN-BashkarNeural",
|
| 183 |
+
"gender": "Male"
|
| 184 |
+
},
|
| 185 |
+
{
|
| 186 |
+
"name": "bn-IN-TanishaaNeural",
|
| 187 |
+
"gender": "Female"
|
| 188 |
+
}
|
| 189 |
+
],
|
| 190 |
+
"Bosnian": [
|
| 191 |
+
{
|
| 192 |
+
"name": "bs-BA-GoranNeural",
|
| 193 |
+
"gender": "Male"
|
| 194 |
+
},
|
| 195 |
+
{
|
| 196 |
+
"name": "bs-BA-VesnaNeural",
|
| 197 |
+
"gender": "Female"
|
| 198 |
+
}
|
| 199 |
+
],
|
| 200 |
+
"Catalan": [
|
| 201 |
+
{
|
| 202 |
+
"name": "ca-ES-EnricNeural",
|
| 203 |
+
"gender": "Male"
|
| 204 |
+
},
|
| 205 |
+
{
|
| 206 |
+
"name": "ca-ES-JoanaNeural",
|
| 207 |
+
"gender": "Female"
|
| 208 |
+
}
|
| 209 |
+
],
|
| 210 |
+
"Czech": [
|
| 211 |
+
{
|
| 212 |
+
"name": "cs-CZ-AntoninNeural",
|
| 213 |
+
"gender": "Male"
|
| 214 |
+
},
|
| 215 |
+
{
|
| 216 |
+
"name": "cs-CZ-VlastaNeural",
|
| 217 |
+
"gender": "Female"
|
| 218 |
+
}
|
| 219 |
+
],
|
| 220 |
+
"Welsh": [
|
| 221 |
+
{
|
| 222 |
+
"name": "cy-GB-AledNeural",
|
| 223 |
+
"gender": "Male"
|
| 224 |
+
},
|
| 225 |
+
{
|
| 226 |
+
"name": "cy-GB-NiaNeural",
|
| 227 |
+
"gender": "Female"
|
| 228 |
+
}
|
| 229 |
+
],
|
| 230 |
+
"Danish": [
|
| 231 |
+
{
|
| 232 |
+
"name": "da-DK-ChristelNeural",
|
| 233 |
+
"gender": "Female"
|
| 234 |
+
},
|
| 235 |
+
{
|
| 236 |
+
"name": "da-DK-JeppeNeural",
|
| 237 |
+
"gender": "Male"
|
| 238 |
+
}
|
| 239 |
+
],
|
| 240 |
+
"Deutsch": [
|
| 241 |
+
{
|
| 242 |
+
"name": "de-AT-IngridNeural",
|
| 243 |
+
"gender": "Female"
|
| 244 |
+
},
|
| 245 |
+
{
|
| 246 |
+
"name": "de-AT-JonasNeural",
|
| 247 |
+
"gender": "Male"
|
| 248 |
+
},
|
| 249 |
+
{
|
| 250 |
+
"name": "de-CH-JanNeural",
|
| 251 |
+
"gender": "Male"
|
| 252 |
+
},
|
| 253 |
+
{
|
| 254 |
+
"name": "de-CH-LeniNeural",
|
| 255 |
+
"gender": "Female"
|
| 256 |
+
},
|
| 257 |
+
{
|
| 258 |
+
"name": "de-DE-AmalaNeural",
|
| 259 |
+
"gender": "Female"
|
| 260 |
+
},
|
| 261 |
+
{
|
| 262 |
+
"name": "de-DE-ConradNeural",
|
| 263 |
+
"gender": "Male"
|
| 264 |
+
},
|
| 265 |
+
{
|
| 266 |
+
"name": "de-DE-FlorianMultilingualNeural",
|
| 267 |
+
"gender": "Male"
|
| 268 |
+
},
|
| 269 |
+
{
|
| 270 |
+
"name": "de-DE-KatjaNeural",
|
| 271 |
+
"gender": "Female"
|
| 272 |
+
},
|
| 273 |
+
{
|
| 274 |
+
"name": "de-DE-KillianNeural",
|
| 275 |
+
"gender": "Male"
|
| 276 |
+
},
|
| 277 |
+
{
|
| 278 |
+
"name": "de-DE-SeraphinaMultilingualNeural",
|
| 279 |
+
"gender": "Female"
|
| 280 |
+
}
|
| 281 |
+
],
|
| 282 |
+
"Greek": [
|
| 283 |
+
{
|
| 284 |
+
"name": "el-GR-AthinaNeural",
|
| 285 |
+
"gender": "Female"
|
| 286 |
+
},
|
| 287 |
+
{
|
| 288 |
+
"name": "el-GR-NestorasNeural",
|
| 289 |
+
"gender": "Male"
|
| 290 |
+
}
|
| 291 |
+
],
|
| 292 |
+
"English": [
|
| 293 |
+
{
|
| 294 |
+
"name": "en-AU-NatashaNeural",
|
| 295 |
+
"gender": "Female"
|
| 296 |
+
},
|
| 297 |
+
{
|
| 298 |
+
"name": "en-AU-WilliamNeural",
|
| 299 |
+
"gender": "Male"
|
| 300 |
+
},
|
| 301 |
+
{
|
| 302 |
+
"name": "en-CA-ClaraNeural",
|
| 303 |
+
"gender": "Female"
|
| 304 |
+
},
|
| 305 |
+
{
|
| 306 |
+
"name": "en-CA-LiamNeural",
|
| 307 |
+
"gender": "Male"
|
| 308 |
+
},
|
| 309 |
+
{
|
| 310 |
+
"name": "en-GB-LibbyNeural",
|
| 311 |
+
"gender": "Female"
|
| 312 |
+
},
|
| 313 |
+
{
|
| 314 |
+
"name": "en-GB-MaisieNeural",
|
| 315 |
+
"gender": "Female"
|
| 316 |
+
},
|
| 317 |
+
{
|
| 318 |
+
"name": "en-GB-RyanNeural",
|
| 319 |
+
"gender": "Male"
|
| 320 |
+
},
|
| 321 |
+
{
|
| 322 |
+
"name": "en-GB-SoniaNeural",
|
| 323 |
+
"gender": "Female"
|
| 324 |
+
},
|
| 325 |
+
{
|
| 326 |
+
"name": "en-GB-ThomasNeural",
|
| 327 |
+
"gender": "Male"
|
| 328 |
+
},
|
| 329 |
+
{
|
| 330 |
+
"name": "en-HK-SamNeural",
|
| 331 |
+
"gender": "Male"
|
| 332 |
+
},
|
| 333 |
+
{
|
| 334 |
+
"name": "en-HK-YanNeural",
|
| 335 |
+
"gender": "Female"
|
| 336 |
+
},
|
| 337 |
+
{
|
| 338 |
+
"name": "en-IE-ConnorNeural",
|
| 339 |
+
"gender": "Male"
|
| 340 |
+
},
|
| 341 |
+
{
|
| 342 |
+
"name": "en-IE-EmilyNeural",
|
| 343 |
+
"gender": "Female"
|
| 344 |
+
},
|
| 345 |
+
{
|
| 346 |
+
"name": "en-IN-NeerjaExpressiveNeural",
|
| 347 |
+
"gender": "Female"
|
| 348 |
+
},
|
| 349 |
+
{
|
| 350 |
+
"name": "en-IN-NeerjaNeural",
|
| 351 |
+
"gender": "Female"
|
| 352 |
+
},
|
| 353 |
+
{
|
| 354 |
+
"name": "en-IN-PrabhatNeural",
|
| 355 |
+
"gender": "Male"
|
| 356 |
+
},
|
| 357 |
+
{
|
| 358 |
+
"name": "en-KE-AsiliaNeural",
|
| 359 |
+
"gender": "Female"
|
| 360 |
+
},
|
| 361 |
+
{
|
| 362 |
+
"name": "en-KE-ChilembaNeural",
|
| 363 |
+
"gender": "Male"
|
| 364 |
+
},
|
| 365 |
+
{
|
| 366 |
+
"name": "en-NG-AbeoNeural",
|
| 367 |
+
"gender": "Male"
|
| 368 |
+
},
|
| 369 |
+
{
|
| 370 |
+
"name": "en-NG-EzinneNeural",
|
| 371 |
+
"gender": "Female"
|
| 372 |
+
},
|
| 373 |
+
{
|
| 374 |
+
"name": "en-NZ-MitchellNeural",
|
| 375 |
+
"gender": "Male"
|
| 376 |
+
},
|
| 377 |
+
{
|
| 378 |
+
"name": "en-NZ-MollyNeural",
|
| 379 |
+
"gender": "Female"
|
| 380 |
+
},
|
| 381 |
+
{
|
| 382 |
+
"name": "en-PH-JamesNeural",
|
| 383 |
+
"gender": "Male"
|
| 384 |
+
},
|
| 385 |
+
{
|
| 386 |
+
"name": "en-PH-RosaNeural",
|
| 387 |
+
"gender": "Female"
|
| 388 |
+
},
|
| 389 |
+
{
|
| 390 |
+
"name": "en-SG-LunaNeural",
|
| 391 |
+
"gender": "Female"
|
| 392 |
+
},
|
| 393 |
+
{
|
| 394 |
+
"name": "en-SG-WayneNeural",
|
| 395 |
+
"gender": "Male"
|
| 396 |
+
},
|
| 397 |
+
{
|
| 398 |
+
"name": "en-TZ-ElimuNeural",
|
| 399 |
+
"gender": "Male"
|
| 400 |
+
},
|
| 401 |
+
{
|
| 402 |
+
"name": "en-TZ-ImaniNeural",
|
| 403 |
+
"gender": "Female"
|
| 404 |
+
},
|
| 405 |
+
{
|
| 406 |
+
"name": "en-US-AnaNeural",
|
| 407 |
+
"gender": "Female"
|
| 408 |
+
},
|
| 409 |
+
{
|
| 410 |
+
"name": "en-US-AndrewMultilingualNeural",
|
| 411 |
+
"gender": "Male"
|
| 412 |
+
},
|
| 413 |
+
{
|
| 414 |
+
"name": "en-US-AndrewNeural",
|
| 415 |
+
"gender": "Male"
|
| 416 |
+
},
|
| 417 |
+
{
|
| 418 |
+
"name": "en-US-AriaNeural",
|
| 419 |
+
"gender": "Female"
|
| 420 |
+
},
|
| 421 |
+
{
|
| 422 |
+
"name": "en-US-AvaMultilingualNeural",
|
| 423 |
+
"gender": "Female"
|
| 424 |
+
},
|
| 425 |
+
{
|
| 426 |
+
"name": "en-US-AvaNeural",
|
| 427 |
+
"gender": "Female"
|
| 428 |
+
},
|
| 429 |
+
{
|
| 430 |
+
"name": "en-US-BrianMultilingualNeural",
|
| 431 |
+
"gender": "Male"
|
| 432 |
+
},
|
| 433 |
+
{
|
| 434 |
+
"name": "en-US-BrianNeural",
|
| 435 |
+
"gender": "Male"
|
| 436 |
+
},
|
| 437 |
+
{
|
| 438 |
+
"name": "en-US-ChristopherNeural",
|
| 439 |
+
"gender": "Male"
|
| 440 |
+
},
|
| 441 |
+
{
|
| 442 |
+
"name": "en-US-EmmaMultilingualNeural",
|
| 443 |
+
"gender": "Female"
|
| 444 |
+
},
|
| 445 |
+
{
|
| 446 |
+
"name": "en-US-EmmaNeural",
|
| 447 |
+
"gender": "Female"
|
| 448 |
+
},
|
| 449 |
+
{
|
| 450 |
+
"name": "en-US-EricNeural",
|
| 451 |
+
"gender": "Male"
|
| 452 |
+
},
|
| 453 |
+
{
|
| 454 |
+
"name": "en-US-GuyNeural",
|
| 455 |
+
"gender": "Male"
|
| 456 |
+
},
|
| 457 |
+
{
|
| 458 |
+
"name": "en-US-JennyNeural",
|
| 459 |
+
"gender": "Female"
|
| 460 |
+
},
|
| 461 |
+
{
|
| 462 |
+
"name": "en-US-MichelleNeural",
|
| 463 |
+
"gender": "Female"
|
| 464 |
+
},
|
| 465 |
+
{
|
| 466 |
+
"name": "en-US-RogerNeural",
|
| 467 |
+
"gender": "Male"
|
| 468 |
+
},
|
| 469 |
+
{
|
| 470 |
+
"name": "en-US-SteffanNeural",
|
| 471 |
+
"gender": "Male"
|
| 472 |
+
},
|
| 473 |
+
{
|
| 474 |
+
"name": "en-ZA-LeahNeural",
|
| 475 |
+
"gender": "Female"
|
| 476 |
+
},
|
| 477 |
+
{
|
| 478 |
+
"name": "en-ZA-LukeNeural",
|
| 479 |
+
"gender": "Male"
|
| 480 |
+
}
|
| 481 |
+
],
|
| 482 |
+
"Spanish": [
|
| 483 |
+
{
|
| 484 |
+
"name": "es-AR-ElenaNeural",
|
| 485 |
+
"gender": "Female"
|
| 486 |
+
},
|
| 487 |
+
{
|
| 488 |
+
"name": "es-AR-TomasNeural",
|
| 489 |
+
"gender": "Male"
|
| 490 |
+
},
|
| 491 |
+
{
|
| 492 |
+
"name": "es-BO-MarceloNeural",
|
| 493 |
+
"gender": "Male"
|
| 494 |
+
},
|
| 495 |
+
{
|
| 496 |
+
"name": "es-BO-SofiaNeural",
|
| 497 |
+
"gender": "Female"
|
| 498 |
+
},
|
| 499 |
+
{
|
| 500 |
+
"name": "es-CL-CatalinaNeural",
|
| 501 |
+
"gender": "Female"
|
| 502 |
+
},
|
| 503 |
+
{
|
| 504 |
+
"name": "es-CL-LorenzoNeural",
|
| 505 |
+
"gender": "Male"
|
| 506 |
+
},
|
| 507 |
+
{
|
| 508 |
+
"name": "es-CO-GonzaloNeural",
|
| 509 |
+
"gender": "Male"
|
| 510 |
+
},
|
| 511 |
+
{
|
| 512 |
+
"name": "es-CO-SalomeNeural",
|
| 513 |
+
"gender": "Female"
|
| 514 |
+
},
|
| 515 |
+
{
|
| 516 |
+
"name": "es-CR-JuanNeural",
|
| 517 |
+
"gender": "Male"
|
| 518 |
+
},
|
| 519 |
+
{
|
| 520 |
+
"name": "es-CR-MariaNeural",
|
| 521 |
+
"gender": "Female"
|
| 522 |
+
},
|
| 523 |
+
{
|
| 524 |
+
"name": "es-CU-BelkysNeural",
|
| 525 |
+
"gender": "Female"
|
| 526 |
+
},
|
| 527 |
+
{
|
| 528 |
+
"name": "es-CU-ManuelNeural",
|
| 529 |
+
"gender": "Male"
|
| 530 |
+
},
|
| 531 |
+
{
|
| 532 |
+
"name": "es-DO-EmilioNeural",
|
| 533 |
+
"gender": "Male"
|
| 534 |
+
},
|
| 535 |
+
{
|
| 536 |
+
"name": "es-DO-RamonaNeural",
|
| 537 |
+
"gender": "Female"
|
| 538 |
+
},
|
| 539 |
+
{
|
| 540 |
+
"name": "es-EC-AndreaNeural",
|
| 541 |
+
"gender": "Female"
|
| 542 |
+
},
|
| 543 |
+
{
|
| 544 |
+
"name": "es-EC-LuisNeural",
|
| 545 |
+
"gender": "Male"
|
| 546 |
+
},
|
| 547 |
+
{
|
| 548 |
+
"name": "es-ES-AlvaroNeural",
|
| 549 |
+
"gender": "Male"
|
| 550 |
+
},
|
| 551 |
+
{
|
| 552 |
+
"name": "es-ES-ElviraNeural",
|
| 553 |
+
"gender": "Female"
|
| 554 |
+
},
|
| 555 |
+
{
|
| 556 |
+
"name": "es-ES-XimenaNeural",
|
| 557 |
+
"gender": "Female"
|
| 558 |
+
},
|
| 559 |
+
{
|
| 560 |
+
"name": "es-GQ-JavierNeural",
|
| 561 |
+
"gender": "Male"
|
| 562 |
+
},
|
| 563 |
+
{
|
| 564 |
+
"name": "es-GQ-TeresaNeural",
|
| 565 |
+
"gender": "Female"
|
| 566 |
+
},
|
| 567 |
+
{
|
| 568 |
+
"name": "es-GT-AndresNeural",
|
| 569 |
+
"gender": "Male"
|
| 570 |
+
},
|
| 571 |
+
{
|
| 572 |
+
"name": "es-GT-MartaNeural",
|
| 573 |
+
"gender": "Female"
|
| 574 |
+
},
|
| 575 |
+
{
|
| 576 |
+
"name": "es-HN-CarlosNeural",
|
| 577 |
+
"gender": "Male"
|
| 578 |
+
},
|
| 579 |
+
{
|
| 580 |
+
"name": "es-HN-KarlaNeural",
|
| 581 |
+
"gender": "Female"
|
| 582 |
+
},
|
| 583 |
+
{
|
| 584 |
+
"name": "es-MX-DaliaNeural",
|
| 585 |
+
"gender": "Female"
|
| 586 |
+
},
|
| 587 |
+
{
|
| 588 |
+
"name": "es-MX-JorgeNeural",
|
| 589 |
+
"gender": "Male"
|
| 590 |
+
},
|
| 591 |
+
{
|
| 592 |
+
"name": "es-NI-FedericoNeural",
|
| 593 |
+
"gender": "Male"
|
| 594 |
+
},
|
| 595 |
+
{
|
| 596 |
+
"name": "es-NI-YolandaNeural",
|
| 597 |
+
"gender": "Female"
|
| 598 |
+
},
|
| 599 |
+
{
|
| 600 |
+
"name": "es-PA-MargaritaNeural",
|
| 601 |
+
"gender": "Female"
|
| 602 |
+
},
|
| 603 |
+
{
|
| 604 |
+
"name": "es-PA-RobertoNeural",
|
| 605 |
+
"gender": "Male"
|
| 606 |
+
},
|
| 607 |
+
{
|
| 608 |
+
"name": "es-PE-AlexNeural",
|
| 609 |
+
"gender": "Male"
|
| 610 |
+
},
|
| 611 |
+
{
|
| 612 |
+
"name": "es-PE-CamilaNeural",
|
| 613 |
+
"gender": "Female"
|
| 614 |
+
},
|
| 615 |
+
{
|
| 616 |
+
"name": "es-PR-KarinaNeural",
|
| 617 |
+
"gender": "Female"
|
| 618 |
+
},
|
| 619 |
+
{
|
| 620 |
+
"name": "es-PR-VictorNeural",
|
| 621 |
+
"gender": "Male"
|
| 622 |
+
},
|
| 623 |
+
{
|
| 624 |
+
"name": "es-PY-MarioNeural",
|
| 625 |
+
"gender": "Male"
|
| 626 |
+
},
|
| 627 |
+
{
|
| 628 |
+
"name": "es-PY-TaniaNeural",
|
| 629 |
+
"gender": "Female"
|
| 630 |
+
},
|
| 631 |
+
{
|
| 632 |
+
"name": "es-SV-LorenaNeural",
|
| 633 |
+
"gender": "Female"
|
| 634 |
+
},
|
| 635 |
+
{
|
| 636 |
+
"name": "es-SV-RodrigoNeural",
|
| 637 |
+
"gender": "Male"
|
| 638 |
+
},
|
| 639 |
+
{
|
| 640 |
+
"name": "es-US-AlonsoNeural",
|
| 641 |
+
"gender": "Male"
|
| 642 |
+
},
|
| 643 |
+
{
|
| 644 |
+
"name": "es-US-PalomaNeural",
|
| 645 |
+
"gender": "Female"
|
| 646 |
+
},
|
| 647 |
+
{
|
| 648 |
+
"name": "es-UY-MateoNeural",
|
| 649 |
+
"gender": "Male"
|
| 650 |
+
},
|
| 651 |
+
{
|
| 652 |
+
"name": "es-UY-ValentinaNeural",
|
| 653 |
+
"gender": "Female"
|
| 654 |
+
},
|
| 655 |
+
{
|
| 656 |
+
"name": "es-VE-PaolaNeural",
|
| 657 |
+
"gender": "Female"
|
| 658 |
+
},
|
| 659 |
+
{
|
| 660 |
+
"name": "es-VE-SebastianNeural",
|
| 661 |
+
"gender": "Male"
|
| 662 |
+
}
|
| 663 |
+
],
|
| 664 |
+
"Estonian": [
|
| 665 |
+
{
|
| 666 |
+
"name": "et-EE-AnuNeural",
|
| 667 |
+
"gender": "Female"
|
| 668 |
+
},
|
| 669 |
+
{
|
| 670 |
+
"name": "et-EE-KertNeural",
|
| 671 |
+
"gender": "Male"
|
| 672 |
+
}
|
| 673 |
+
],
|
| 674 |
+
"Persian": [
|
| 675 |
+
{
|
| 676 |
+
"name": "fa-IR-DilaraNeural",
|
| 677 |
+
"gender": "Female"
|
| 678 |
+
},
|
| 679 |
+
{
|
| 680 |
+
"name": "fa-IR-FaridNeural",
|
| 681 |
+
"gender": "Male"
|
| 682 |
+
}
|
| 683 |
+
],
|
| 684 |
+
"Finnish": [
|
| 685 |
+
{
|
| 686 |
+
"name": "fi-FI-HarriNeural",
|
| 687 |
+
"gender": "Male"
|
| 688 |
+
},
|
| 689 |
+
{
|
| 690 |
+
"name": "fi-FI-NooraNeural",
|
| 691 |
+
"gender": "Female"
|
| 692 |
+
}
|
| 693 |
+
],
|
| 694 |
+
"Filipino": [
|
| 695 |
+
{
|
| 696 |
+
"name": "fil-PH-AngeloNeural",
|
| 697 |
+
"gender": "Male"
|
| 698 |
+
},
|
| 699 |
+
{
|
| 700 |
+
"name": "fil-PH-BlessicaNeural",
|
| 701 |
+
"gender": "Female"
|
| 702 |
+
}
|
| 703 |
+
],
|
| 704 |
+
"French": [
|
| 705 |
+
{
|
| 706 |
+
"name": "fr-BE-CharlineNeural",
|
| 707 |
+
"gender": "Female"
|
| 708 |
+
},
|
| 709 |
+
{
|
| 710 |
+
"name": "fr-BE-GerardNeural",
|
| 711 |
+
"gender": "Male"
|
| 712 |
+
},
|
| 713 |
+
{
|
| 714 |
+
"name": "fr-CA-AntoineNeural",
|
| 715 |
+
"gender": "Male"
|
| 716 |
+
},
|
| 717 |
+
{
|
| 718 |
+
"name": "fr-CA-JeanNeural",
|
| 719 |
+
"gender": "Male"
|
| 720 |
+
},
|
| 721 |
+
{
|
| 722 |
+
"name": "fr-CA-SylvieNeural",
|
| 723 |
+
"gender": "Female"
|
| 724 |
+
},
|
| 725 |
+
{
|
| 726 |
+
"name": "fr-CA-ThierryNeural",
|
| 727 |
+
"gender": "Male"
|
| 728 |
+
},
|
| 729 |
+
{
|
| 730 |
+
"name": "fr-CH-ArianeNeural",
|
| 731 |
+
"gender": "Female"
|
| 732 |
+
},
|
| 733 |
+
{
|
| 734 |
+
"name": "fr-CH-FabriceNeural",
|
| 735 |
+
"gender": "Male"
|
| 736 |
+
},
|
| 737 |
+
{
|
| 738 |
+
"name": "fr-FR-DeniseNeural",
|
| 739 |
+
"gender": "Female"
|
| 740 |
+
},
|
| 741 |
+
{
|
| 742 |
+
"name": "fr-FR-EloiseNeural",
|
| 743 |
+
"gender": "Female"
|
| 744 |
+
},
|
| 745 |
+
{
|
| 746 |
+
"name": "fr-FR-HenriNeural",
|
| 747 |
+
"gender": "Male"
|
| 748 |
+
},
|
| 749 |
+
{
|
| 750 |
+
"name": "fr-FR-RemyMultilingualNeural",
|
| 751 |
+
"gender": "Male"
|
| 752 |
+
},
|
| 753 |
+
{
|
| 754 |
+
"name": "fr-FR-VivienneMultilingualNeural",
|
| 755 |
+
"gender": "Female"
|
| 756 |
+
}
|
| 757 |
+
],
|
| 758 |
+
"Irish": [
|
| 759 |
+
{
|
| 760 |
+
"name": "ga-IE-ColmNeural",
|
| 761 |
+
"gender": "Male"
|
| 762 |
+
},
|
| 763 |
+
{
|
| 764 |
+
"name": "ga-IE-OrlaNeural",
|
| 765 |
+
"gender": "Female"
|
| 766 |
+
}
|
| 767 |
+
],
|
| 768 |
+
"Galician": [
|
| 769 |
+
{
|
| 770 |
+
"name": "gl-ES-RoiNeural",
|
| 771 |
+
"gender": "Male"
|
| 772 |
+
},
|
| 773 |
+
{
|
| 774 |
+
"name": "gl-ES-SabelaNeural",
|
| 775 |
+
"gender": "Female"
|
| 776 |
+
}
|
| 777 |
+
],
|
| 778 |
+
"Gujarati": [
|
| 779 |
+
{
|
| 780 |
+
"name": "gu-IN-DhwaniNeural",
|
| 781 |
+
"gender": "Female"
|
| 782 |
+
},
|
| 783 |
+
{
|
| 784 |
+
"name": "gu-IN-NiranjanNeural",
|
| 785 |
+
"gender": "Male"
|
| 786 |
+
}
|
| 787 |
+
],
|
| 788 |
+
"Hebrew": [
|
| 789 |
+
{
|
| 790 |
+
"name": "he-IL-AvriNeural",
|
| 791 |
+
"gender": "Male"
|
| 792 |
+
},
|
| 793 |
+
{
|
| 794 |
+
"name": "he-IL-HilaNeural",
|
| 795 |
+
"gender": "Female"
|
| 796 |
+
}
|
| 797 |
+
],
|
| 798 |
+
"Hindi": [
|
| 799 |
+
{
|
| 800 |
+
"name": "hi-IN-MadhurNeural",
|
| 801 |
+
"gender": "Male"
|
| 802 |
+
},
|
| 803 |
+
{
|
| 804 |
+
"name": "hi-IN-SwaraNeural",
|
| 805 |
+
"gender": "Female"
|
| 806 |
+
}
|
| 807 |
+
],
|
| 808 |
+
"Croatian": [
|
| 809 |
+
{
|
| 810 |
+
"name": "hr-HR-GabrijelaNeural",
|
| 811 |
+
"gender": "Female"
|
| 812 |
+
},
|
| 813 |
+
{
|
| 814 |
+
"name": "hr-HR-SreckoNeural",
|
| 815 |
+
"gender": "Male"
|
| 816 |
+
}
|
| 817 |
+
],
|
| 818 |
+
"Hungarian": [
|
| 819 |
+
{
|
| 820 |
+
"name": "hu-HU-NoemiNeural",
|
| 821 |
+
"gender": "Female"
|
| 822 |
+
},
|
| 823 |
+
{
|
| 824 |
+
"name": "hu-HU-TamasNeural",
|
| 825 |
+
"gender": "Male"
|
| 826 |
+
}
|
| 827 |
+
],
|
| 828 |
+
"Indonesian": [
|
| 829 |
+
{
|
| 830 |
+
"name": "id-ID-ArdiNeural",
|
| 831 |
+
"gender": "Male"
|
| 832 |
+
},
|
| 833 |
+
{
|
| 834 |
+
"name": "id-ID-GadisNeural",
|
| 835 |
+
"gender": "Female"
|
| 836 |
+
}
|
| 837 |
+
],
|
| 838 |
+
"Icelandic": [
|
| 839 |
+
{
|
| 840 |
+
"name": "is-IS-GudrunNeural",
|
| 841 |
+
"gender": "Female"
|
| 842 |
+
},
|
| 843 |
+
{
|
| 844 |
+
"name": "is-IS-GunnarNeural",
|
| 845 |
+
"gender": "Male"
|
| 846 |
+
}
|
| 847 |
+
],
|
| 848 |
+
"Italian": [
|
| 849 |
+
{
|
| 850 |
+
"name": "it-IT-DiegoNeural",
|
| 851 |
+
"gender": "Male"
|
| 852 |
+
},
|
| 853 |
+
{
|
| 854 |
+
"name": "it-IT-ElsaNeural",
|
| 855 |
+
"gender": "Female"
|
| 856 |
+
},
|
| 857 |
+
{
|
| 858 |
+
"name": "it-IT-GiuseppeNeural",
|
| 859 |
+
"gender": "Male"
|
| 860 |
+
},
|
| 861 |
+
{
|
| 862 |
+
"name": "it-IT-IsabellaNeural",
|
| 863 |
+
"gender": "Female"
|
| 864 |
+
}
|
| 865 |
+
],
|
| 866 |
+
"Japanese": [
|
| 867 |
+
{
|
| 868 |
+
"name": "ja-JP-KeitaNeural",
|
| 869 |
+
"gender": "Male"
|
| 870 |
+
},
|
| 871 |
+
{
|
| 872 |
+
"name": "ja-JP-NanamiNeural",
|
| 873 |
+
"gender": "Female"
|
| 874 |
+
}
|
| 875 |
+
],
|
| 876 |
+
"Javanese": [
|
| 877 |
+
{
|
| 878 |
+
"name": "jv-ID-DimasNeural",
|
| 879 |
+
"gender": "Male"
|
| 880 |
+
},
|
| 881 |
+
{
|
| 882 |
+
"name": "jv-ID-SitiNeural",
|
| 883 |
+
"gender": "Female"
|
| 884 |
+
}
|
| 885 |
+
],
|
| 886 |
+
"Georgian": [
|
| 887 |
+
{
|
| 888 |
+
"name": "ka-GE-EkaNeural",
|
| 889 |
+
"gender": "Female"
|
| 890 |
+
},
|
| 891 |
+
{
|
| 892 |
+
"name": "ka-GE-GiorgiNeural",
|
| 893 |
+
"gender": "Male"
|
| 894 |
+
}
|
| 895 |
+
],
|
| 896 |
+
"Kazakh": [
|
| 897 |
+
{
|
| 898 |
+
"name": "kk-KZ-AigulNeural",
|
| 899 |
+
"gender": "Female"
|
| 900 |
+
},
|
| 901 |
+
{
|
| 902 |
+
"name": "kk-KZ-DauletNeural",
|
| 903 |
+
"gender": "Male"
|
| 904 |
+
}
|
| 905 |
+
],
|
| 906 |
+
"Khmer": [
|
| 907 |
+
{
|
| 908 |
+
"name": "km-KH-PisethNeural",
|
| 909 |
+
"gender": "Male"
|
| 910 |
+
},
|
| 911 |
+
{
|
| 912 |
+
"name": "km-KH-SreymomNeural",
|
| 913 |
+
"gender": "Female"
|
| 914 |
+
}
|
| 915 |
+
],
|
| 916 |
+
"Kannada": [
|
| 917 |
+
{
|
| 918 |
+
"name": "kn-IN-GaganNeural",
|
| 919 |
+
"gender": "Male"
|
| 920 |
+
},
|
| 921 |
+
{
|
| 922 |
+
"name": "kn-IN-SapnaNeural",
|
| 923 |
+
"gender": "Female"
|
| 924 |
+
}
|
| 925 |
+
],
|
| 926 |
+
"Korean": [
|
| 927 |
+
{
|
| 928 |
+
"name": "ko-KR-HyunsuNeural",
|
| 929 |
+
"gender": "Male"
|
| 930 |
+
},
|
| 931 |
+
{
|
| 932 |
+
"name": "ko-KR-InJoonNeural",
|
| 933 |
+
"gender": "Male"
|
| 934 |
+
},
|
| 935 |
+
{
|
| 936 |
+
"name": "ko-KR-SunHiNeural",
|
| 937 |
+
"gender": "Female"
|
| 938 |
+
}
|
| 939 |
+
],
|
| 940 |
+
"Lao": [
|
| 941 |
+
{
|
| 942 |
+
"name": "lo-LA-ChanthavongNeural",
|
| 943 |
+
"gender": "Male"
|
| 944 |
+
},
|
| 945 |
+
{
|
| 946 |
+
"name": "lo-LA-KeomanyNeural",
|
| 947 |
+
"gender": "Female"
|
| 948 |
+
}
|
| 949 |
+
],
|
| 950 |
+
"Lithuanian": [
|
| 951 |
+
{
|
| 952 |
+
"name": "lt-LT-LeonasNeural",
|
| 953 |
+
"gender": "Male"
|
| 954 |
+
},
|
| 955 |
+
{
|
| 956 |
+
"name": "lt-LT-OnaNeural",
|
| 957 |
+
"gender": "Female"
|
| 958 |
+
}
|
| 959 |
+
],
|
| 960 |
+
"Latvian": [
|
| 961 |
+
{
|
| 962 |
+
"name": "lv-LV-EveritaNeural",
|
| 963 |
+
"gender": "Female"
|
| 964 |
+
},
|
| 965 |
+
{
|
| 966 |
+
"name": "lv-LV-NilsNeural",
|
| 967 |
+
"gender": "Male"
|
| 968 |
+
}
|
| 969 |
+
],
|
| 970 |
+
"Macedonian": [
|
| 971 |
+
{
|
| 972 |
+
"name": "mk-MK-AleksandarNeural",
|
| 973 |
+
"gender": "Male"
|
| 974 |
+
},
|
| 975 |
+
{
|
| 976 |
+
"name": "mk-MK-MarijaNeural",
|
| 977 |
+
"gender": "Female"
|
| 978 |
+
}
|
| 979 |
+
],
|
| 980 |
+
"Malayalam": [
|
| 981 |
+
{
|
| 982 |
+
"name": "ml-IN-MidhunNeural",
|
| 983 |
+
"gender": "Male"
|
| 984 |
+
},
|
| 985 |
+
{
|
| 986 |
+
"name": "ml-IN-SobhanaNeural",
|
| 987 |
+
"gender": "Female"
|
| 988 |
+
}
|
| 989 |
+
],
|
| 990 |
+
"Mongolian": [
|
| 991 |
+
{
|
| 992 |
+
"name": "mn-MN-BataaNeural",
|
| 993 |
+
"gender": "Male"
|
| 994 |
+
},
|
| 995 |
+
{
|
| 996 |
+
"name": "mn-MN-YesuiNeural",
|
| 997 |
+
"gender": "Female"
|
| 998 |
+
}
|
| 999 |
+
],
|
| 1000 |
+
"Marathi": [
|
| 1001 |
+
{
|
| 1002 |
+
"name": "mr-IN-AarohiNeural",
|
| 1003 |
+
"gender": "Female"
|
| 1004 |
+
},
|
| 1005 |
+
{
|
| 1006 |
+
"name": "mr-IN-ManoharNeural",
|
| 1007 |
+
"gender": "Male"
|
| 1008 |
+
}
|
| 1009 |
+
],
|
| 1010 |
+
"Malay": [
|
| 1011 |
+
{
|
| 1012 |
+
"name": "ms-MY-OsmanNeural",
|
| 1013 |
+
"gender": "Male"
|
| 1014 |
+
},
|
| 1015 |
+
{
|
| 1016 |
+
"name": "ms-MY-YasminNeural",
|
| 1017 |
+
"gender": "Female"
|
| 1018 |
+
}
|
| 1019 |
+
],
|
| 1020 |
+
"Maltese": [
|
| 1021 |
+
{
|
| 1022 |
+
"name": "mt-MT-GraceNeural",
|
| 1023 |
+
"gender": "Female"
|
| 1024 |
+
},
|
| 1025 |
+
{
|
| 1026 |
+
"name": "mt-MT-JosephNeural",
|
| 1027 |
+
"gender": "Male"
|
| 1028 |
+
}
|
| 1029 |
+
],
|
| 1030 |
+
"Burmese": [
|
| 1031 |
+
{
|
| 1032 |
+
"name": "my-MM-NilarNeural",
|
| 1033 |
+
"gender": "Female"
|
| 1034 |
+
},
|
| 1035 |
+
{
|
| 1036 |
+
"name": "my-MM-ThihaNeural",
|
| 1037 |
+
"gender": "Male"
|
| 1038 |
+
}
|
| 1039 |
+
],
|
| 1040 |
+
"Norwegian Bokmål": [
|
| 1041 |
+
{
|
| 1042 |
+
"name": "nb-NO-FinnNeural",
|
| 1043 |
+
"gender": "Male"
|
| 1044 |
+
},
|
| 1045 |
+
{
|
| 1046 |
+
"name": "nb-NO-PernilleNeural",
|
| 1047 |
+
"gender": "Female"
|
| 1048 |
+
}
|
| 1049 |
+
],
|
| 1050 |
+
"Nepali": [
|
| 1051 |
+
{
|
| 1052 |
+
"name": "ne-NP-HemkalaNeural",
|
| 1053 |
+
"gender": "Female"
|
| 1054 |
+
},
|
| 1055 |
+
{
|
| 1056 |
+
"name": "ne-NP-SagarNeural",
|
| 1057 |
+
"gender": "Male"
|
| 1058 |
+
}
|
| 1059 |
+
],
|
| 1060 |
+
"Dutch": [
|
| 1061 |
+
{
|
| 1062 |
+
"name": "nl-BE-ArnaudNeural",
|
| 1063 |
+
"gender": "Male"
|
| 1064 |
+
},
|
| 1065 |
+
{
|
| 1066 |
+
"name": "nl-BE-DenaNeural",
|
| 1067 |
+
"gender": "Female"
|
| 1068 |
+
},
|
| 1069 |
+
{
|
| 1070 |
+
"name": "nl-NL-ColetteNeural",
|
| 1071 |
+
"gender": "Female"
|
| 1072 |
+
},
|
| 1073 |
+
{
|
| 1074 |
+
"name": "nl-NL-FennaNeural",
|
| 1075 |
+
"gender": "Female"
|
| 1076 |
+
},
|
| 1077 |
+
{
|
| 1078 |
+
"name": "nl-NL-MaartenNeural",
|
| 1079 |
+
"gender": "Male"
|
| 1080 |
+
}
|
| 1081 |
+
],
|
| 1082 |
+
"Polish": [
|
| 1083 |
+
{
|
| 1084 |
+
"name": "pl-PL-MarekNeural",
|
| 1085 |
+
"gender": "Male"
|
| 1086 |
+
},
|
| 1087 |
+
{
|
| 1088 |
+
"name": "pl-PL-ZofiaNeural",
|
| 1089 |
+
"gender": "Female"
|
| 1090 |
+
}
|
| 1091 |
+
],
|
| 1092 |
+
"Pashto": [
|
| 1093 |
+
{
|
| 1094 |
+
"name": "ps-AF-GulNawazNeural",
|
| 1095 |
+
"gender": "Male"
|
| 1096 |
+
},
|
| 1097 |
+
{
|
| 1098 |
+
"name": "ps-AF-LatifaNeural",
|
| 1099 |
+
"gender": "Female"
|
| 1100 |
+
}
|
| 1101 |
+
],
|
| 1102 |
+
"Portuguese": [
|
| 1103 |
+
{
|
| 1104 |
+
"name": "pt-BR-AntonioNeural",
|
| 1105 |
+
"gender": "Male"
|
| 1106 |
+
},
|
| 1107 |
+
{
|
| 1108 |
+
"name": "pt-BR-FranciscaNeural",
|
| 1109 |
+
"gender": "Female"
|
| 1110 |
+
},
|
| 1111 |
+
{
|
| 1112 |
+
"name": "pt-BR-ThalitaNeural",
|
| 1113 |
+
"gender": "Female"
|
| 1114 |
+
},
|
| 1115 |
+
{
|
| 1116 |
+
"name": "pt-PT-DuarteNeural",
|
| 1117 |
+
"gender": "Male"
|
| 1118 |
+
},
|
| 1119 |
+
{
|
| 1120 |
+
"name": "pt-PT-RaquelNeural",
|
| 1121 |
+
"gender": "Female"
|
| 1122 |
+
}
|
| 1123 |
+
],
|
| 1124 |
+
"Romanian": [
|
| 1125 |
+
{
|
| 1126 |
+
"name": "ro-RO-AlinaNeural",
|
| 1127 |
+
"gender": "Female"
|
| 1128 |
+
},
|
| 1129 |
+
{
|
| 1130 |
+
"name": "ro-RO-EmilNeural",
|
| 1131 |
+
"gender": "Male"
|
| 1132 |
+
}
|
| 1133 |
+
],
|
| 1134 |
+
"Russian": [
|
| 1135 |
+
{
|
| 1136 |
+
"name": "ru-RU-DmitryNeural",
|
| 1137 |
+
"gender": "Male"
|
| 1138 |
+
},
|
| 1139 |
+
{
|
| 1140 |
+
"name": "ru-RU-SvetlanaNeural",
|
| 1141 |
+
"gender": "Female"
|
| 1142 |
+
}
|
| 1143 |
+
],
|
| 1144 |
+
"Sinhala": [
|
| 1145 |
+
{
|
| 1146 |
+
"name": "si-LK-SameeraNeural",
|
| 1147 |
+
"gender": "Male"
|
| 1148 |
+
},
|
| 1149 |
+
{
|
| 1150 |
+
"name": "si-LK-ThiliniNeural",
|
| 1151 |
+
"gender": "Female"
|
| 1152 |
+
}
|
| 1153 |
+
],
|
| 1154 |
+
"Slovak": [
|
| 1155 |
+
{
|
| 1156 |
+
"name": "sk-SK-LukasNeural",
|
| 1157 |
+
"gender": "Male"
|
| 1158 |
+
},
|
| 1159 |
+
{
|
| 1160 |
+
"name": "sk-SK-ViktoriaNeural",
|
| 1161 |
+
"gender": "Female"
|
| 1162 |
+
}
|
| 1163 |
+
],
|
| 1164 |
+
"Slovenian": [
|
| 1165 |
+
{
|
| 1166 |
+
"name": "sl-SI-PetraNeural",
|
| 1167 |
+
"gender": "Female"
|
| 1168 |
+
},
|
| 1169 |
+
{
|
| 1170 |
+
"name": "sl-SI-RokNeural",
|
| 1171 |
+
"gender": "Male"
|
| 1172 |
+
}
|
| 1173 |
+
],
|
| 1174 |
+
"Somali": [
|
| 1175 |
+
{
|
| 1176 |
+
"name": "so-SO-MuuseNeural",
|
| 1177 |
+
"gender": "Male"
|
| 1178 |
+
},
|
| 1179 |
+
{
|
| 1180 |
+
"name": "so-SO-UbaxNeural",
|
| 1181 |
+
"gender": "Female"
|
| 1182 |
+
}
|
| 1183 |
+
],
|
| 1184 |
+
"Albanian": [
|
| 1185 |
+
{
|
| 1186 |
+
"name": "sq-AL-AnilaNeural",
|
| 1187 |
+
"gender": "Female"
|
| 1188 |
+
},
|
| 1189 |
+
{
|
| 1190 |
+
"name": "sq-AL-IlirNeural",
|
| 1191 |
+
"gender": "Male"
|
| 1192 |
+
}
|
| 1193 |
+
],
|
| 1194 |
+
"Serbian": [
|
| 1195 |
+
{
|
| 1196 |
+
"name": "sr-RS-NicholasNeural",
|
| 1197 |
+
"gender": "Male"
|
| 1198 |
+
},
|
| 1199 |
+
{
|
| 1200 |
+
"name": "sr-RS-SophieNeural",
|
| 1201 |
+
"gender": "Female"
|
| 1202 |
+
}
|
| 1203 |
+
],
|
| 1204 |
+
"Sundanese": [
|
| 1205 |
+
{
|
| 1206 |
+
"name": "su-ID-JajangNeural",
|
| 1207 |
+
"gender": "Male"
|
| 1208 |
+
},
|
| 1209 |
+
{
|
| 1210 |
+
"name": "su-ID-TutiNeural",
|
| 1211 |
+
"gender": "Female"
|
| 1212 |
+
}
|
| 1213 |
+
],
|
| 1214 |
+
"Swedish": [
|
| 1215 |
+
{
|
| 1216 |
+
"name": "sv-SE-MattiasNeural",
|
| 1217 |
+
"gender": "Male"
|
| 1218 |
+
},
|
| 1219 |
+
{
|
| 1220 |
+
"name": "sv-SE-SofieNeural",
|
| 1221 |
+
"gender": "Female"
|
| 1222 |
+
}
|
| 1223 |
+
],
|
| 1224 |
+
"Swahili": [
|
| 1225 |
+
{
|
| 1226 |
+
"name": "sw-KE-RafikiNeural",
|
| 1227 |
+
"gender": "Male"
|
| 1228 |
+
},
|
| 1229 |
+
{
|
| 1230 |
+
"name": "sw-KE-ZuriNeural",
|
| 1231 |
+
"gender": "Female"
|
| 1232 |
+
},
|
| 1233 |
+
{
|
| 1234 |
+
"name": "sw-TZ-DaudiNeural",
|
| 1235 |
+
"gender": "Male"
|
| 1236 |
+
},
|
| 1237 |
+
{
|
| 1238 |
+
"name": "sw-TZ-RehemaNeural",
|
| 1239 |
+
"gender": "Female"
|
| 1240 |
+
}
|
| 1241 |
+
],
|
| 1242 |
+
"Tamil": [
|
| 1243 |
+
{
|
| 1244 |
+
"name": "ta-IN-PallaviNeural",
|
| 1245 |
+
"gender": "Female"
|
| 1246 |
+
},
|
| 1247 |
+
{
|
| 1248 |
+
"name": "ta-IN-ValluvarNeural",
|
| 1249 |
+
"gender": "Male"
|
| 1250 |
+
},
|
| 1251 |
+
{
|
| 1252 |
+
"name": "ta-LK-KumarNeural",
|
| 1253 |
+
"gender": "Male"
|
| 1254 |
+
},
|
| 1255 |
+
{
|
| 1256 |
+
"name": "ta-LK-SaranyaNeural",
|
| 1257 |
+
"gender": "Female"
|
| 1258 |
+
},
|
| 1259 |
+
{
|
| 1260 |
+
"name": "ta-MY-KaniNeural",
|
| 1261 |
+
"gender": "Female"
|
| 1262 |
+
},
|
| 1263 |
+
{
|
| 1264 |
+
"name": "ta-MY-SuryaNeural",
|
| 1265 |
+
"gender": "Male"
|
| 1266 |
+
},
|
| 1267 |
+
{
|
| 1268 |
+
"name": "ta-SG-AnbuNeural",
|
| 1269 |
+
"gender": "Male"
|
| 1270 |
+
},
|
| 1271 |
+
{
|
| 1272 |
+
"name": "ta-SG-VenbaNeural",
|
| 1273 |
+
"gender": "Female"
|
| 1274 |
+
}
|
| 1275 |
+
],
|
| 1276 |
+
"Telugu": [
|
| 1277 |
+
{
|
| 1278 |
+
"name": "te-IN-MohanNeural",
|
| 1279 |
+
"gender": "Male"
|
| 1280 |
+
},
|
| 1281 |
+
{
|
| 1282 |
+
"name": "te-IN-ShrutiNeural",
|
| 1283 |
+
"gender": "Female"
|
| 1284 |
+
}
|
| 1285 |
+
],
|
| 1286 |
+
"Thai": [
|
| 1287 |
+
{
|
| 1288 |
+
"name": "th-TH-NiwatNeural",
|
| 1289 |
+
"gender": "Male"
|
| 1290 |
+
},
|
| 1291 |
+
{
|
| 1292 |
+
"name": "th-TH-PremwadeeNeural",
|
| 1293 |
+
"gender": "Female"
|
| 1294 |
+
}
|
| 1295 |
+
],
|
| 1296 |
+
"Turkish": [
|
| 1297 |
+
{
|
| 1298 |
+
"name": "tr-TR-AhmetNeural",
|
| 1299 |
+
"gender": "Male"
|
| 1300 |
+
},
|
| 1301 |
+
{
|
| 1302 |
+
"name": "tr-TR-EmelNeural",
|
| 1303 |
+
"gender": "Female"
|
| 1304 |
+
}
|
| 1305 |
+
],
|
| 1306 |
+
"Ukrainian": [
|
| 1307 |
+
{
|
| 1308 |
+
"name": "uk-UA-OstapNeural",
|
| 1309 |
+
"gender": "Male"
|
| 1310 |
+
},
|
| 1311 |
+
{
|
| 1312 |
+
"name": "uk-UA-PolinaNeural",
|
| 1313 |
+
"gender": "Female"
|
| 1314 |
+
}
|
| 1315 |
+
],
|
| 1316 |
+
"Urdu": [
|
| 1317 |
+
{
|
| 1318 |
+
"name": "ur-IN-GulNeural",
|
| 1319 |
+
"gender": "Female"
|
| 1320 |
+
},
|
| 1321 |
+
{
|
| 1322 |
+
"name": "ur-IN-SalmanNeural",
|
| 1323 |
+
"gender": "Male"
|
| 1324 |
+
},
|
| 1325 |
+
{
|
| 1326 |
+
"name": "ur-PK-AsadNeural",
|
| 1327 |
+
"gender": "Male"
|
| 1328 |
+
},
|
| 1329 |
+
{
|
| 1330 |
+
"name": "ur-PK-UzmaNeural",
|
| 1331 |
+
"gender": "Female"
|
| 1332 |
+
}
|
| 1333 |
+
],
|
| 1334 |
+
"Uzbek": [
|
| 1335 |
+
{
|
| 1336 |
+
"name": "uz-UZ-MadinaNeural",
|
| 1337 |
+
"gender": "Female"
|
| 1338 |
+
},
|
| 1339 |
+
{
|
| 1340 |
+
"name": "uz-UZ-SardorNeural",
|
| 1341 |
+
"gender": "Male"
|
| 1342 |
+
}
|
| 1343 |
+
],
|
| 1344 |
+
"Vietnamese": [
|
| 1345 |
+
{
|
| 1346 |
+
"name": "vi-VN-HoaiMyNeural",
|
| 1347 |
+
"gender": "Female"
|
| 1348 |
+
},
|
| 1349 |
+
{
|
| 1350 |
+
"name": "vi-VN-NamMinhNeural",
|
| 1351 |
+
"gender": "Male"
|
| 1352 |
+
}
|
| 1353 |
+
],
|
| 1354 |
+
"Chinese": [
|
| 1355 |
+
{
|
| 1356 |
+
"name": "zh-CN-XiaoxiaoNeural",
|
| 1357 |
+
"gender": "Female"
|
| 1358 |
+
},
|
| 1359 |
+
{
|
| 1360 |
+
"name": "zh-CN-XiaoyiNeural",
|
| 1361 |
+
"gender": "Female"
|
| 1362 |
+
},
|
| 1363 |
+
{
|
| 1364 |
+
"name": "zh-CN-YunjianNeural",
|
| 1365 |
+
"gender": "Male"
|
| 1366 |
+
},
|
| 1367 |
+
{
|
| 1368 |
+
"name": "zh-CN-YunxiNeural",
|
| 1369 |
+
"gender": "Male"
|
| 1370 |
+
},
|
| 1371 |
+
{
|
| 1372 |
+
"name": "zh-CN-YunxiaNeural",
|
| 1373 |
+
"gender": "Male"
|
| 1374 |
+
},
|
| 1375 |
+
{
|
| 1376 |
+
"name": "zh-CN-YunyangNeural",
|
| 1377 |
+
"gender": "Male"
|
| 1378 |
+
},
|
| 1379 |
+
{
|
| 1380 |
+
"name": "zh-CN-liaoning-XiaobeiNeural",
|
| 1381 |
+
"gender": "Female"
|
| 1382 |
+
},
|
| 1383 |
+
{
|
| 1384 |
+
"name": "zh-CN-shaanxi-XiaoniNeural",
|
| 1385 |
+
"gender": "Female"
|
| 1386 |
+
},
|
| 1387 |
+
{
|
| 1388 |
+
"name": "zh-HK-HiuGaaiNeural",
|
| 1389 |
+
"gender": "Female"
|
| 1390 |
+
},
|
| 1391 |
+
{
|
| 1392 |
+
"name": "zh-HK-HiuMaanNeural",
|
| 1393 |
+
"gender": "Female"
|
| 1394 |
+
},
|
| 1395 |
+
{
|
| 1396 |
+
"name": "zh-HK-WanLungNeural",
|
| 1397 |
+
"gender": "Male"
|
| 1398 |
+
},
|
| 1399 |
+
{
|
| 1400 |
+
"name": "zh-TW-HsiaoChenNeural",
|
| 1401 |
+
"gender": "Female"
|
| 1402 |
+
},
|
| 1403 |
+
{
|
| 1404 |
+
"name": "zh-TW-HsiaoYuNeural",
|
| 1405 |
+
"gender": "Female"
|
| 1406 |
+
},
|
| 1407 |
+
{
|
| 1408 |
+
"name": "zh-TW-YunJheNeural",
|
| 1409 |
+
"gender": "Male"
|
| 1410 |
+
}
|
| 1411 |
+
],
|
| 1412 |
+
"Zulu": [
|
| 1413 |
+
{
|
| 1414 |
+
"name": "zu-ZA-ThandoNeural",
|
| 1415 |
+
"gender": "Female"
|
| 1416 |
+
},
|
| 1417 |
+
{
|
| 1418 |
+
"name": "zu-ZA-ThembaNeural",
|
| 1419 |
+
"gender": "Male"
|
| 1420 |
+
}
|
| 1421 |
+
]
|
| 1422 |
+
}
|