Skip to main content

Text to speech converter

Implementing speech technology into your program is extremely easy, but, our aim in this  post is to implement it in such a way that it would be reusable. The code am about to share here is a part of my Emris class library project that I built so that I do not re-write codes I have already writen before when I need them. Just like the project name which is named after the young War-Lock's ancient name in the Movie  "Merlin"  implies, the class library is a collection of magical classes that does all kinds of things, one of which is the one we are talking about.
The Speech class.
The class contains 3 private member variables and 1 public SpeechSynthesizer instance variable which are:
        private int speechRate;
        private string speechString;
        private bool IsAsync=false;
        public SpeechSynthesizer ss;

3 Public properties which is used to get and set values to the private member variables:

  //properties
        public int _speechRate
        {
            get{return speechRate;}
            set{value=speechRate;}
        }

        public string _speechString
        {
            get{return speechString;}
            set{value=speechString;}
        }
        public bool _isAsync
        {
            get { return IsAsync; }
   set { value = _isAsync; }
        }
One public construtor used to initialize value to the private data members:
public Speech(int speech_rate, string speech_string, bool is_async)
        {
            this.speechRate = speech_rate;
            this.speechString = speech_string;
            this.IsAsync = is_async;
        }
And one method that processes all the collected data:
 public void Talk()
        {
            ss = new SpeechSynthesizer();
            ss.Rate = _speechRate;

            if (_isAsync == true)
            {
                ss.SpeakAsync(_speechString);
            }
            else
            {
                ss.Speak(_speechString);
            }

        }
Usage: The usage of this class is just a matter of initialzing the data members using the constructor Speech() and calling the Talk() method.
Like this:
 Speech emris = new Speech(1, "You just have to use your magic for good.", true);
emris.Talk();
Note: You need to add reference to System.Speech for this to work.
Create a form in visual studio and add 2 textboxes and one Button to it. name the first TextBox txtWhat_To_Say, name the second one txt_rate and name the button btn_Speak also change the text of the button to "Speak" without the quatation mark.
Once that is done, double click the Speak button, in the method that opens, type in:
Speech emris = new Speech(txt_rate,txtWhat_To_Say.Text, true);
emris.Talk();
Once that is done, add a class named Speech and copy the following code into the class:
 public class Speech
    {
       //Kinsware Technologies

        private int speechRate;
        private string speechString;
        private bool IsAsync=false;
        public SpeechSynthesizer ss;

        //properties
        public int _speechRate
        {
            get{return speechRate;}
            set{value=speechRate;}
        }

        public string _speechString
        {
            get{return speechString;}
            set{value=speechString;}
        }
        public bool _isAsync
        {
            get { return IsAsync; }
            set { value = _isAsync; }
        }

        public Speech(int speech_rate, string speech_string, bool is_async)
        {
            this.speechRate = speech_rate;
            this.speechString = speech_string;
            this.IsAsync = is_async;
        }

        public void Talk()
        {
            ss = new SpeechSynthesizer();
            ss.Rate = _speechRate;

            if (_isAsync == true)
            {
                ss.SpeakAsync(_speechString);
            }
            else
            {
                ss.Speak(_speechString);
            }

        }
    }
Then run the program and type in what you want the program to say in the What_To_Textbox and type how fast or slow you want it to say it in the rate textbox.
Please take your time to play with this magical class and try to make it possible  for users to be able to control whether it should speak Asynchronously or Synchronously by using a checkbox control to interface the IsAsync Variable. Just build something interesting with it.
Note that this tutorial is for any beginner C# Programmer who now understands how class works. If this class is good for you, you can add it to your library too.
Enjoy a chunk of my Emris Magical library. Hahahaha!
Comments and questions are welcome.
Thanks for reading.


         


Comments

Popular posts from this blog

HOW TO WRITE, COMPILE AND RUN C++ CODE ON LINUX KALI

This article is for hackers who want to develop a c++ program on Kali Linux without having to install any additional software. While some would tell you that you need to install an additional software or a compiler in order to develop a simple program in c++ on Kali Linux, I am going to show you how to develop a c++ program on this distro right out of box. Your Linux Kali comes pre-installed with a c++ compiler called g++ so we are going to write a C++ hello word code and compile it with this compiler. Before we get started, first open up terminal and run to verify if this compiler is installed on you machine: g++ -v if the compiler is pre-installed, you should get the version information of the compiler, otherwise, you should get an error. Now let's jump right in. In your terminal window, type in: nano MyCpp.cpp to create a c++ file and lunch it in nano editor for editing. When nano opens, type in the following c++ code and press Ctrl+x then y and then R...

LOAN MANAGEMENT SYSTEM (My Project Idea)

There are many companies that specializes on giving loan to people; they make their profits by collecting interest on any money they lend out, and before a loan can be given to any customer, the customer must provide a collateral and some details such as:  contact details and a reference/guarantor. When the loan is finally given to the customer, they charge interest based on the the amount given to the customer for a given period of time which could be daily, weekly, monthly or yearly.  For example, a company could be collecting interest based on a particular amount for a given period of time like: $200,000 loan would have an interest tag of $2,000  per month until the money is returned, and $100,000 would have an interest of $1,000 per month until the money is returned.  In  addition, the customers need to know when the time for them to pay their interest comes e.g.  at the end of the month or the timing model with which the calculation is being made. Usua...

How to execute eject command on an ATM Machine using CoreXfs lib on .NET

 In this tutorial, I'm going to demonstrate how to run an eject command on an ATM using CoreXfs, a library I developed.  You can download the library from  here  and follow up with tutorial. First we need to add reference to the downloaded dll. Screen One Once the reference to the dll has been added, you can proceed to coding the application. What I did in the screen below is very simple, I opened the device on the atm using it's logical name so that I can pass in commands. Screen Two So, that's it. thanks for dropping by. You can watch the video below to see how I coded it. Note that this code can only run on an ATM machine. NCR, WINCOR, DIEBOLD, HYOSUNG