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