Monday 15 December 2014

Converting Text to Voice in .NET Using C#

Introduction

The demo below explains how to convert text to speech using C# in Visual Studio 2010 using System.SpeechLibrary.
Microsoft .NET framework provides System.Speech.Synthesis for voice synthesis.

Building the Sample
You must have Visual Studio 2010 to build and run the sample.
Description

To convert text to speech which is called voice synthesis, you must include "System.Speech" reference in your project. It contains functions for both speech synthesis and recognition.
After adding System.speech reference, you have to use System.Speech.Synthesis in your project which contains various functions for voice synthesis.

Creating Object of SpeechSynthesizer Class

The first step is to create an object of SpeechSynthesizer class (e.g. "reader" in my sample).

SpeechSynthesizer reader = new SpeechSynthesizer();

Calling Speak() Function

The next step is to call the "Speak()" function by passing the text to spoken as string.

reader.Speak("This is my first speech project");

The problem with the speak() function is that it is not threaded. It means that you cannot perform any other function in your Windows Form until the "reader" object has completed the speech.
So it is better to use "SpeakAsync()" function. I have also used SpeakAsync() in the sample.

reader.SpeakAsync("Speaking text asynchronously");

Using Pause() and Resume() functions

You can also detect the state of the "reader" object by using "SynthesizerState" property. And using that, you can also "Pause" or "Resume" the narration.

if (reader.State == SynthesizerState.Speaking)
   {
                    reader.Pause();
   }

if (reader.State == SynthesizerState.Paused)
   {
                    reader.Resume();
  }

Using Dispose() function

You can use Dispose() function to stop narration and dispose the "reader" object.

if( reader!= null )
{
     reader.Dispose();
}


These are some of the basic operations. You can also change voice, volume, rate and other parameters. You can also save the spoken audio stream directly into a "wave" file.
The sample also shows some other features such as using event handlers to detect speech progress and display status of synthesizer.
Below is the complete code for speech synthesis.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Speech.Synthesis;
using System.IO;

namespace text_to_speech
{
    public partial class Form1 : Form
    {
        SpeechSynthesizer reader; //declare the object
        public Form1()
        {
            InitializeComponent();

        }
        private void Form1_Load(object sender, EventArgs e)
        {
            reader = new SpeechSynthesizer(); //create new object
            button2.Enabled = false;
            button3.Enabled = false;
            button4.Enabled = false;
            textBox1.ScrollBars = ScrollBars.Both;
        }

        //SPEAK TEXT
        private void button1_Click(object sender, EventArgs e)
        {
            reader.Dispose();
            if (textBox1.Text != "")    //if text area is not empty
            {

                reader = new SpeechSynthesizer();
                reader.SpeakAsync(textBox1.Text);
                label2.Text = "SPEAKING";
                button2.Enabled = true;
                button4.Enabled = true;
                reader.SpeakCompleted += new EventHandler<speakcompletedeventargs />(reader_SpeakCompleted);
            }
            else
            {
                MessageBox.Show("Please enter some text in the textbox",
                 "Message", MessageBoxButtons.OK);
            }
        }

        //event handler
        void reader_SpeakCompleted(object sender, SpeakCompletedEventArgs e)
        {
            label2.Text = "IDLE";
        }

        //PAUSE
        private void button2_Click(object sender, EventArgs e)
        {
            if (reader != null)
            {
                if (reader.State == SynthesizerState.Speaking)
                {
                    reader.Pause();
                    label2.Text = "PAUSED";
                    button3.Enabled = true;

                }
            }
        }

        //RESUME
        private void button3_Click(object sender, EventArgs e)
        {
            if (reader != null)
            {
                if (reader.State == SynthesizerState.Paused)
                {
                    reader.Resume();
                    label2.Text = "SPEAKING";
                }
                button3.Enabled = false;
            }
        }

        //STOP
        private void button4_Click(object sender, EventArgs e)
        {
            if (reader != null)
            {
                reader.Dispose();
                label2.Text = "IDLE";
                button2.Enabled = false;
                button3.Enabled = false;
                button4.Enabled = false;
            }
        }

        //load data from text file button
        private void button5_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
        }

        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
            //copy data from text file and load it to textbox
            textBox1.Text =  File.ReadAllText(openFileDialog1.FileName.ToString());

        }

     }
}

Adding SYSTEM.SPEECH Reference



Thursday 20 November 2014

Boxing & UnBoxing In C#

C# is a strongly-typed language. Every variable and constant has a type, as does every expression that evaluates to a value. In this article I will share about understanding Boxing and UnBoxing in C#.
C# Type System contains three Types , they are Value Types , Reference Types and Pointer Types. C# allows us to convert a Value Type to a Reference Type, and back again to Value Types . The operation of Converting a Value Type to a Reference Type is called Boxing and the reverse operation

Wednesday 19 November 2014

View State In Asp.Net

  1. View state is the method that the ASP.NET page framework uses to preserve page and control values between round trips. When the HTML markup for the page is rendered, the current state of the page and values that must be retained during post back are serialized into base64-encoded strings.
  2. When an ASP.NET page is submitted to the server, the state of the controls is encoded and sent to the server at every form submission in a hidden field known as

Tuesday 18 November 2014

What is Session State In Asp.Net

  1. ASP.NET session state enables you to store and retrieve values for a user as the user navigates ASP.NET pages in a Web application. HTTP is a stateless protocol. This means that a Web server treats each HTTP request for a page as an independent request.Session is defined as the period of time that a unique user interacts with a Web application. When a new user begins to interact with the application, a new session ID is generated and associated with all subsequent requests from that same client and stored in a cookie on the client machine.

Caching In Asp.Net

Caching is the ability to store page output and data in memory for the first time it is requested and later we can quickly retrieve them for multiple, repetitious client requests. It is like keeping a copy of something for later use, so we can reduce the load factor on Web servers and database servers by implementing caching on a Web application.
Writing Code In C#
Cache.Add("dataset", dataset, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 0, 60), System.Web.Caching.CacheItemPriority.Default, null);

How To Use Cookies ASP.NET.

Cookies provide the ability to store small amounts of data on a clients machine. It is often used to store user preferences, session variables, or identity. When the user visits your Web site another time, the application can retrieve the information it stored earlier.
The browser is responsible for managing cookies on a user system. Cookies can be created, accessed, and modified directly by script running on the client and pass between the client and server during requests.
Writing code in C#
Response.Cookies["UserName"].Value = "Ashok";
Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(1);

How To Use Grid View Page Index Changing In Asp.Net

Here I Will Explain How to use Page Index/Pagination In Grid View.With various types of paging in ASP.NET. We use C# code to bind the SQL data with a Grid View control and use the following simple steps to make your ASP.NET Grid View control with paging enabled. The Grid View control provides you with an easy way to display the number of items on a page

What is Page Index In Asp.Net?
To show he number of items on a page in Grid View.

C# code to bind the SQL data with a Grid View control and use the following steps.
Create a SQL table

Saturday 1 November 2014

How To Copy Whole Database From One Computer To Another By Using Generate Script

What is Generate Script?
     This is a process in which we can generate the script of the existing database. And can use easily on other client system without loosing any Data.

Why it is different from import&export?
      By using Generate Script we can export whole database as well as data and script but in import & export  only we can extract the skeleton of the Database.It's a easiest way to copy database from one system to another.
 Here Are the steps to Generate Script of the database.
Step-1.
Right click on the database in sql and choose Task > Generate Script.

Tuesday 28 October 2014

What Is CMS ?

What Is  CMS ? CMS Stand for (Content management system) is a system used to manage the content of a Web site. that allows publishing, editing and modifying content, organizing, deleting as well as maintenance from a central interface. CMSs have been available since the late 1990s.
CMSs are often used to run websites containing blog, news, and shopping. Many corporate and marketing websites use CMSs.

Copyright © DotNet-Ashok