LECTOR DE TEXTO A VOZ EN C# VISUAL STUDIO 2019



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