
Puedes crear tu propio software que lee texto con la voz pre instalada de Windows, puedes modificar la velocidad, el volumen, las voces y guardarlo en formato mp3.
Formulario
Primero las referencias necesarias para que funcione sin problemas nuestro programa.
using System.Speech.Synthesis;using System.IO;
Necesitamos listar en el ComboBox todas las voces disponibles de nuestro equipo, la mayoría por defecto ya cuenta con 2 o 3 voces. Si tu equipo esta en Ingles, las voces estarán en Ingles, a menos que descargues otros idiomas en tu equipo. También hay dll de pago que te permiten adquirir distintas voces, adquirir voces ya depende de cada uno.
SpeechSynthesizer voz;
List<VoiceInfo> listarvoces = new List<VoiceInfo>();
private void Form1_Load(object sender, EventArgs e)
{
voz = new SpeechSynthesizer();
foreach (InstalledVoice x in voz.GetInstalledVoices())
{
listarvoces.Add(x.VoiceInfo);
cbolistar.Items.Add(x.VoiceInfo.Name);
}
cbolistar.SelectedIndex = 0;
}
Botón leer
private void button1_Click(object sender, EventArgs e) { voz = new SpeechSynthesizer(); int ind; double volumen = trackbarvolumen.Value; double velocidad = tracbarvelocidad.Value; ind = cbolistar.SelectedIndex; String nombrevoces = listarvoces.ElementAt(ind).Name; voz.SelectVoice(nombrevoces); voz.Volume = (int)volumen; voz.Rate = (int)velocidad; voz.SpeakAsync(textBox1.Text); btnpausar.Text = "Pausar"; }
Botón pausar
private void btnpausar_Click(object sender, EventArgs e) { if (voz != null) { if (voz.State == SynthesizerState.Speaking) { voz.Pause(); btnpausar.Text = "Resumen"; } else if (voz.State == SynthesizerState.Paused) { voz.Resume(); btnpausar.Text = "Pausar"; } } }
Botón detener
private void btndetener_Click(object sender, EventArgs e) { if (voz != null) { voz.Dispose(); } }
Botón guardar
Tengan en cuenta que este botón posiblemente les de error al intentar guardar, por lo que se hace uso del Try Catch.
private void btnguardar_Click(object sender, EventArgs e) { try { voz = new SpeechSynthesizer(); using (SaveFileDialog vai = new SaveFileDialog()) { vai.Filter = "Wav files|*.wav"; if (vai.ShowDialog() == DialogResult.OK) { int ind; double volumen = trackbarvolumen.Value; double velocidad = tracbarvelocidad.Value; ind = cbolistar.SelectedIndex; String nombrevoces = listarvoces.ElementAt(ind).Name; voz.SelectVoice(nombrevoces); FileStream team = new FileStream(vai.FileName, FileMode.Create, FileAccess.Write); voz.SetOutputToWaveStream(team); voz.Speak(textBox1.Text); } } } catch { MessageBox.Show("Intentar de nuevo", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
Botón salir
private void btnsalir_Click(object sender, EventArgs e) { this.Close(); }
Botón acerca de
private void btnacerca_Click(object sender, EventArgs e) { MessageBox.Show("VaidrollTeam", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information); }





- Visual Studio 2019