1

I've made a Simple Program That Recognizes Speech Using SAPI 5.4 , i wanted to ask if i can add some more languages to the TTS and The ASR , Thanks Here is the code i made you anybody needs to take a look at it

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 SpeechLib;
using System.Globalization;
using System.Speech.Recognition;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        // Speech Recognition Object
        SpSharedRecoContext listener;

        // Grammar object
        ISpeechRecoGrammar grammar;

        public Form1()
        {
            InitializeComponent();
        }
        public string ps;
        private void button1_Click(object sender, EventArgs e)
        {

       if (btnListen.Text == "Start Listening")
       {
              try
                {

                    listener = new SpeechLib.SpSharedRecoContext();
                    listener.Recognition += new _ISpeechRecoContextEvents_RecognitionEventHandler(listener_Reco);
                    grammar = listener.CreateGrammar(0);
                    grammar.DictationLoad("", SpeechLoadOption.SLOStatic);
                    grammar.DictationSetState(SpeechRuleState.SGDSActive);
                    btnListen.Text = "Stop Listening";
                  if (ps == "1")
                  {
                    listener.Resume();
                    ps = "0";  
                  }
              }
              catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
       }
       else if (btnListen.Text == "Stop Listening")
       {
           listener.Pause();
           btnListen.Text = "Start Listening";
           if (ps == "0")
           {
           ps = "1";
           }
          }

            }
        public void listener_Reco(int StreamNumber, object StreamPosition, SpeechRecognitionType RecognitionType, ISpeechRecoResult Result)
        {
            string heard = Result.PhraseInfo.GetText(0, -1, true);
            textBox1.Text += " " + heard;

        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            WinXP winxp = new WinXP();
            winxp.Show();
            this.Hide();
        }


        string getOSInfo()
        {
            //Get Operating system information.
            OperatingSystem os = Environment.OSVersion;
            //Get version information about the os.
            Version vs = os.Version;

            //Variable to hold our return value
            string operatingSystem = "";

            if (os.Platform == PlatformID.Win32Windows)
            {
                //This is a pre-NT version of Windows
                switch (vs.Minor)
                {
                    case 0:
                        operatingSystem = "95";
                        break;
                    case 10:
                        if (vs.Revision.ToString() == "2222A")
                            operatingSystem = "98SE";
                        else
                            operatingSystem = "98";
                        break;
                    case 90:
                        operatingSystem = "Me";
                        break;
                    default:
                        break;
                }
            }
            else if (os.Platform == PlatformID.Win32NT)
            {
                switch (vs.Major)
                {
                    case 3:
                        operatingSystem = "NT 3.51";
                        break;
                    case 4:
                        operatingSystem = "NT 4.0";
                        break;
                    case 5:
                        if (vs.Minor == 0)
                            operatingSystem = "2000";
                        else
                            operatingSystem = "XP";
                        break;
                    case 6:
                        if (vs.Minor == 0)
                            operatingSystem = "Vista";
                        else
                            operatingSystem = "7";
                        break;
                    default:
                        break;
                }
            }
            //Make sure we actually got something in our OS check
            //We don't want to just return " Service Pack 2" or " 32-bit"
            //That information is useless without the OS version.
            if (operatingSystem != "")
            {
                //Got something.  Let's prepend "Windows" and get more info.
                operatingSystem = "Windows " + operatingSystem;
                //See if there's a service pack installed.
                if (os.ServicePack != "")
                {
                    //Append it to the OS name.  i.e. "Windows XP Service Pack 3"
                    operatingSystem += " " + os.ServicePack;
                }
                //Append the OS architecture.  i.e. "Windows XP Service Pack 3 32-bit"
                operatingSystem += " " + getOSArchitecture().ToString() + "-bit";
            }
            //Return the information we've gathered.
            return operatingSystem;
        }

        int getOSArchitecture()
        {
            string pa = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
            return ((String.IsNullOrEmpty(pa) || String.Compare(pa, 0, "x86", 0, 3, true) == 0) ? 32 : 64);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string OS = getOSInfo();
            if (OS.Contains("XP"))
            {
                btnXP.Visible = true;
            }
            else
            {
                btnXP.Visible = false;
                btnYes2.Visible = true;
                btnNo2.Visible = true;
                btnNo.Visible = false;
                btnYes.Visible = false;
            }
        }




    }
}

P.S i've Had A Problem When Resuming The Recognizer

Tarek Adel
  • 161
  • 1
  • 6
  • 15
  • Not an option, the recognizer comes pre-installed with Windows. When a German user buys the German version of Windows then it will understand him chatting in German and talk German back to him. Supporting installable language packs requires spending money, like http://msdn.microsoft.com/en-us/library/ms986793.aspx – Hans Passant Aug 13 '12 at 15:13
  • is there a way to get this Microsoft Speech Server Language Pack Files for free?? – Tarek Adel Aug 13 '12 at 19:35
  • Anything can be had for free. Questions about the proper size gun to acquire are however off topic here. – Hans Passant Aug 13 '12 at 19:43

1 Answers1

2

It depends a little bit on what you're doing with the recognizer. Yes, the desktop OSes (Windows Vista, 7) come with a recognizer that is tied to the language version of the OS. But, Microsoft also gives away for free (no weapon needed) a recognition engine for use on Servers (but can also be used on Desktop OSes). There are many different langauges available for free.

There are a few differences between the desktop and server recognizer libraries. My understanding is that the desktop recognizers are trainable for a specific speaker, support higher quality audio input, and include a dictation grammar. These are designed for desktop use where only one speaker is expected at a time. The server recognizers are designed for telephone quality audio, are not trainable, and require a limited grammar (no dictation). The server engines are designed for higher scale and multiple simultaneous speakers (like in IVR or SpeechServer applications).

See:

For some background, see What is the difference between System.Speech.Recognition and Microsoft.Speech.Recognition?

Community
  • 1
  • 1
Michael Levy
  • 13,097
  • 15
  • 66
  • 100