Click here to Skip to main content
15,881,424 members
Articles / Programming Languages / C#

Text to Speech

Rate me:
Please Sign up or sign in to vote.
4.76/5 (32 votes)
17 Apr 2011CPOL2 min read 166.2K   16.3K   55   26
How to implement speech technology in our project

Introduction

Text To Speech becomes very easy in C#. We know speech technology is very useful for the blind. Now, we are going to learn how to implement speech technology in our project.

text to speak

STEPS

  1. Open Microsoft Visual Studio 2010 from Start | All Programs | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010.
  2. On the Microsoft Visual Studio Start Page, click the New Project icon.
  3. On the Microsoft Visual Studio Start Page, click the New Project icon.
  4. In C# projects Templates list, select Windows | WindowsApplication.
  5. In the Name field, enter the name “text to speak”
  6. In the upper right hand corner, ensure that version 4.0 of the .NET Framework is selected.
  7. Accept the default location and Solution Name. Click the OK button. The solution will be created.
  8. Right-click on the Text to Speak project node and select Add Reference.
  9. Under the .NET tab in the Add Reference dialog box, select System.Speech.
  10. Click the OK button.

Select a Text File

Select a text file to convert audio.selected text file display on rich text box.

C#
private void Browse_Click(object sender, EventArgs e)
    {
        OpenFileDialog Ofg = new OpenFileDialog();

        try
        {
            Ofg.CheckFileExists = true;
            Ofg.CheckPathExists = true;
            Ofg.DefaultExt = "txt";
            Ofg.DereferenceLinks = true;
            Ofg.Filter = "Text files (*.txt)|*.txt|" +
				"RTF files (*.rtf)|*.rtf|" +
                              " +
				Works 6 and 7 (*.wps)|*.wps|" +
                              "Windows Write (*.wri)|*.wri|" +
				"WordPerfect document (*.wpd)|*.wpd";
            Ofg.Multiselect = false;
            Ofg.RestoreDirectory = true;
            Ofg.ShowHelp = true;
            Ofg.ShowReadOnly = false;
            Ofg.Title = "Select a file ";
            OpenFile.ValidateNames = true;

            if (OpenFile.ShowDialog() == DialogResult.OK)
            {
                StreamReader sr = new StreamReader(ofg.OpenFile());
                richTextBox1.Text = sr.ReadToEnd();
            }
        }
        catch
        {
            MessageBox.Show("can not open the file", "Text two speech");
        }
    }

Here, first creating object instance for OpenFileDialog.stream reader is used to read a text file.

Text to Speak

SpeakAsync method is used to speak a word. There are two properties used here; one is volume, another one is Rate. voice gender is also one of the properties. It is used to select voice gender (enum NotSet, Male, Female, Neutral). If any error occurred, message box shows error message.

C#
private void speak_Click(object sender, EventArgs e)
{
    SpeechSynthesizer speak = new SpeechSynthesizer();

try
{
    switch (comboBox1.SelectedItem.ToString())
                {
                    case "NotSet":
                        voice.SelectVoiceByHints(VoiceGender.NotSet);
                            break;
                    case "Male":
                        voice.SelectVoiceByHints(VoiceGender.Male);
                             break;
                    case "Female":
                        voice.SelectVoiceByHints(VoiceGender.Female);
                             break;
                    case "Neturl":
                        voice.SelectVoiceByHints(VoiceGender.Neutral);
                             break;
                  }  

The above code can change voice gender. speakAsyn is an asynchronous method. It means return immediately and speak as a background process. If any error occurred, it will display on message box.

C#
voice.Volume = trackBar1.Value;
voice.Rate = trackBar2.Value;
voice.SpeakAsync(richTextBox1.Text);  

Save Audio File

Text converted to audio stream .audio stream can save wav file format. The following steps are used to save wav file.

  1. Create object instance for Save File Dialog.
  2. Set audio stream to select file.
C#
SaveFileDialog sfd = new SaveFileDialog();

sfd.Filter = ""wav files (*.wav)|*.wav";
sfd.Title = "Save to a wave file";
sfd.FilterIndex = 2;
sfd.RestoreDirectory = true;

if (sfd.ShowDialog() == DialogResult.OK)
{
     FileStream fs = new FileStream(sfd.FileName,FileMode.Create,FileAccess.Write);
     voice.SetOutputToWaveStream(fs);
     voice.Speak(richTextBox1.Text);
     fs.Close();
}

Points of Interest

If you want to know more about speech technology, click on this link on the Microsoft website.

History

  • 14th April, 2011: Initial version

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
India India
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 5 Pin
Member 1063581118-Aug-16 11:38
Member 1063581118-Aug-16 11:38 
GeneralMy vote of 2 Pin
Member 96740184-Jul-15 6:28
Member 96740184-Jul-15 6:28 
QuestionNeed to add new voice Pin
Member 1176311113-Jun-15 1:12
Member 1176311113-Jun-15 1:12 
BugSmall problem Pin
KING_9123-Apr-14 0:24
KING_9123-Apr-14 0:24 
GeneralRe: Small problem Pin
Member 129838525-Feb-17 6:00
Member 129838525-Feb-17 6:00 
BugHelp me Pin
Xuân Tâm17-Feb-14 4:58
Xuân Tâm17-Feb-14 4:58 
GeneralRe: Help me Pin
karthik.B.E18-Feb-14 6:48
karthik.B.E18-Feb-14 6:48 
GeneralRe: Help me Pin
Xuân Tâm19-Feb-14 3:54
Xuân Tâm19-Feb-14 3:54 
Questionkarthik.B.E. Pin
Rahul Kumar Ghosh1-May-13 6:37
Rahul Kumar Ghosh1-May-13 6:37 
GeneralMy vote of 5 Pin
Jitesh R. Neve24-Jan-13 1:39
Jitesh R. Neve24-Jan-13 1:39 
QuestionMore voices Pin
kiquenet.com22-Jan-13 21:14
professionalkiquenet.com22-Jan-13 21:14 
GeneralMy vote of 5 Pin
Kr.Prakash5-Dec-12 0:23
Kr.Prakash5-Dec-12 0:23 
QuestionHow to add TTS engine for windows 7 Pin
Kiran Naveen11-Nov-12 18:32
Kiran Naveen11-Nov-12 18:32 
AnswerRe: How to add TTS engine for windows 7 Pin
Member 129838525-Feb-17 6:01
Member 129838525-Feb-17 6:01 
AnswerCursor animation Pin
Christophe Bertrand3-Jun-11 23:47
Christophe Bertrand3-Jun-11 23:47 
GeneralMy vote of 3 Pin
SercanOzdemir17-May-11 2:22
SercanOzdemir17-May-11 2:22 
Generalsome ranting Pin
alxxl19-Apr-11 1:31
alxxl19-Apr-11 1:31 
GeneralIf my PC has multipul soundcards, how to specify the output to which soundcard? Pin
zhangzq7118-Apr-11 2:29
zhangzq7118-Apr-11 2:29 
AnswerRe: If my PC has multipul soundcards, how to specify the output to which soundcard? Pin
karthik.B.E19-Apr-11 4:01
karthik.B.E19-Apr-11 4:01 
default sound card will play the sound
GeneralRe: If my PC has multipul soundcards, how to specify the output to which soundcard? Pin
zhangzq7119-Apr-11 4:14
zhangzq7119-Apr-11 4:14 
GeneralRe: If my PC has multipul soundcards, how to specify the output to which soundcard? Pin
kiquenet.com24-Apr-11 23:39
professionalkiquenet.com24-Apr-11 23:39 
GeneralRe: If my PC has multipul soundcards, how to specify the output to which soundcard? Pin
Seve6526-Apr-11 2:17
Seve6526-Apr-11 2:17 
GeneralRe: If my PC has multipul soundcards, how to specify the output to which soundcard? Pin
zhangzq7127-Apr-11 15:38
zhangzq7127-Apr-11 15:38 
GeneralMy vote of 5 Pin
Bizounours17-Apr-11 22:30
Bizounours17-Apr-11 22:30 
GeneralNice Pin
Toniyo Jackson17-Apr-11 20:40
Toniyo Jackson17-Apr-11 20:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.