1

SAPI 5.4を使用して音声を認識する簡単なプログラムを作成しました。TTSとASRにさらにいくつかの言語を追加できるかどうかを尋ねたいと思いました。ありがとうございます。これは、誰かがそれを見る必要があるように作成したコードです。

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;
            }
        }




    }
}

PS認識機能を再開するときに問題が発生しました

4

1 に答える 1

2

それは、レコグナイザーで何をしているかによって少し異なります。はい、デスクトップ OS (Windows Vista、7) には、OS の言語バージョンに関連付けられた認識エンジンが付属しています。ただし、Microsoft は、サーバーで使用するための認識エンジンを無料 (武器は不要) で提供しています (ただし、デスクトップ OS でも使用できます)。無料で利用できる言語はたくさんあります。

デスクトップ認識ライブラリとサーバー認識ライブラリにはいくつかの違いがあります。私の理解では、デスクトップ認識エンジンは特定の話者向けにトレーニング可能で、高品質のオーディオ入力をサポートし、口述文法が含まれています。これらは、一度に 1 つのスピーカーのみが想定されるデスクトップでの使用向けに設計されています。サーバー認識エンジンは、電話品質のオーディオ用に設計されており、トレーニングできず、制限された文法 (ディクテーションなし) を必要とします。サーバー エンジンは、大規模で複数の同時スピーカー (IVR または SpeechServer アプリケーションなど) 向けに設計されています。

見る:

背景については、「 System.Speech.Recognition と Microsoft.Speech.Recognition の違いは何ですか?」を参照してください。

于 2012-08-13T23:29:50.657 に答える