当前位置:编程学习 > C#/ASP.NET >>

关于语音识别,在WINDOWS FORM中可以成功语音转成文字,但转换成WEB形式后失败了,请指教

请看这下边代码:
##################################################################
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using SpeechLib;

namespace tryreco
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

       private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

            SpRecognition cc = new SpRecognition();
            
            cc.MessageBegin();
            
            cc.BeginRec(textBox1);  //Fan:把内容输入textbox1
            
             
        }
        private void button2_Click(object sender, EventArgs e)
        {
            SpRecognition cc = new SpRecognition();
            cc.MessageEnd();
            cc.CloseRec();

        }

        public class SpRecognition
        {
            private static SpRecognition _Instance = null;
            private SpeechLib.ISpeechRecoGrammar isrg;
            private SpeechLib.SpSharedRecoContextClass ssrContex = null;
            private System.Windows.Forms.Control cDisplay;  //fan:用来显示语音转化后的文本
            public System.Windows.Forms.TextBox textbox;   //fan:增加textbox在SpRecognition 类
            public SpRecognition()
            {
                ssrContex = new SpSharedRecoContextClass();
                isrg = ssrContex.CreateGrammar(1);
                SpeechLib._ISpeechRecoContextEvents_RecognitionEventHandler recHandle =
                new _ISpeechRecoContextEvents_RecognitionEventHandler(ContexRecognition);
                ssrContex.Recognition += recHandle;
            }
            public void BeginRec(Control tbResult)
            {
                isrg.DictationSetState(SpeechRuleState.SGDSActive);
                cDisplay = tbResult;
                //cDisplay.Text = "dddddddddd";  测试,可以成功在textbox1那里显示出来
               
            }
            public static SpRecognition instance()
            {
                if (_Instance == null)
                    _Instance = new SpRecognition();
                return _Instance;
            }
            public void CloseRec()
            {
                isrg.DictationSetState(SpeechRuleState.SGDSInactive);
            }
            private void ContexRecognition(int iIndex, object obj, SpeechLib.SpeechRecognitionType type, SpeechLib.ISpeechRecoResult result)
            {
                cDisplay.Text += result.PhraseInfo.GetText(0, -1, true);
            }
            public void MessageBegin()
            {
               textbox =new TextBox() ;
               textbox.Text = "Notice :this time ,it Begin recoginse";
               MessageBox.Show(textbox.Text);
            
            }
            public void MessageEnd()
            {
                textbox = new TextBox();
                textbox.Text = "Notice :this time ,it End recoginse";
                MessageBox.Show(textbox.Text);
            }

        }
        
     }

    }
#########################################################
以上代码,可以成功的把麦克风传入的语音,在TEXTBOX中输出出来,但,我想把其做成WEB形式的,在System.Web.UI.Controls却找不到相关的Textbox类,private System.Web.UI.WebControls.TextBox TextBoxdisplay,也
试过了,还是不行,,这个该怎么转换呢?请指教
#########################################################
我的WEB代码:
#########################################################
using SpeechLib;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    public class SpRecognition
    {
        private static SpRecognition _Instance = null;
        private SpeechLib.ISpeechRecoGrammar isrg;
        private SpeechLib.SpSharedRecoContextClass ssrContex = null;

        private System.Web.UI.WebControls.TextBox FansTextBoxdisplay;
        //应该就是这里出了问题的了,

        public SpRecognition()
        {
            ssrContex = new SpSharedRecoContextClass();
            isrg = ssrContex.CreateGrammar(1);
            SpeechLib._ISpeechRecoContextEvents_RecognitionEventHandler recHandle =
            new _ISpeechRecoContextEvents_RecognitionEventHandler(ContexRecognition);
            ssrContex.Recognition += recHandle;
        }
        public void BeginRec(TextBox TextBoxA)
        {
            isrg.DictationSetState(SpeechRuleState.SGDSActive);
            FansTextBoxdisplay = TextBoxA;
            // FansTextBoxdisplay.Text = "dddddd";----可以成功在textbox1那里显示出来
            

              

        }
        public static SpRecognition instance()
        {
            if (_Instance == null)
                _Instance = new SpRecognition();
            return _Instance;
        }
        public void CloseRec()
        {
            isrg.DictationSetState(SpeechRuleState.SGDSInactive);
        }
        private void ContexRecognition(int iIndex, object obj, SpeechLib.SpeechRecognitionType type, SpeechLib.ISpeechRecoResult result)
        {
            FansTextBoxdisplay.Text += result.PhraseInfo.GetText(0, -1, true);
        }


    }

    public void MessageBegin()
        {


            Label1.Text = "Notice :this time ,it Begin recoginse";

        }
    public void MessageEnd()
    {

        Label1.Text = "Notice :this time ,it End recoginse";


    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        SpRecognition cc = new SpRecognition();

        MessageBegin();

        cc.BeginRec(TextBox1);  //,,fan:把内容输入textbox1


    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        SpRecognition cc = new SpRecognition();
        MessageEnd();
        cc.CloseRec();

    }
}

###############################################################
很久没有编程了,,很多都不明白了,呵呵,,,请大家多多帮忙,先谢谢大家了,
--------------------编程问答-------------------- UP, --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 多半是权限问题.
-----------------------
      CSDN 论坛助手 
  http://china-csdn.cn --------------------编程问答-------------------- 不是权限问题吧,,呵呵,,
应该是这里出了点问题了,:
在那个FORM格式的那个,,
关键是这句,把其当作Text来用了,private System.Windows.Forms.Control cDisplay; 
因为在对象浏览器里,可以看到有TEXTBOXBASE的派生类
##########################################################################
public abstract class TextBoxBase : System.Windows.Forms.Control
    System.Windows.Forms 的成员

摘要:
实现文本控件要求的基本功能。

属性:
[System.ComponentModel.DesignerAttribute("System.Windows.Forms.Design.TextBoxBaseDesigner, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"),
System.ComponentModel.DefaultBindingPropertyAttribute("Text"), System.Runtime.InteropServices.ClassInte易做图ceAttribute(1),
System.ComponentModel.DefaultEventAttribute("TextChanged"),
System.Runtime.InteropServices.ComVisibleAttribute(true)]
###########################################################################
但我那个WEB的,在这里在System.WEB.UI.control,却找不到有TEXTBOXBASE的类,只有个WEBCONTROL的比较象,这个类型又不对,,,,

不知道怎么改,,,,
继续求救,,,,,, --------------------编程问答-------------------- UP up UP 啊,,,,,再UP,, --------------------编程问答-------------------- 大家帮手,,继续帮手,,,Thanks..Up,, --------------------编程问答-------------------- upupupupu
我不懂
能不能请教 搂主
代码怎么实现阿
很好奇阿

是不是直接添加到
form1.cs
代码中
不是这样简单巴?

请教 --------------------编程问答-------------------- 呵呵,你至少也得在添加按钮之类的吧,还有,要微软的SDK包,然后添加Lib --------------------编程问答-------------------- Up Up ,,,继续Up,,, --------------------编程问答-------------------- 楼主要搞清楚一点,那就是Web页面的代码只有在请求发生时才会运行。如果没有请求,是不会运行的。 --------------------编程问答-------------------- 我也有想到这点,但在Web页面怎么实现啊?可以详细说一下吗?比较急的,,先谢谢了,, --------------------编程问答-------------------- xiaofam(天翼翔帆) ( ) 信誉:100    Blog   加为好友  2007-5-24 17:32:29  得分: 0  
 
 
   
我也有想到这点,但在Web页面怎么实现啊?可以详细说一下吗?比较急的,,先谢谢了,,

----------------------------------------------------------------------------------
这个你只能做一个Activex控件在客户端加载来实现。送到服务端去处理是不实现的。 --------------------编程问答-------------------- Activex控件在客户端加栽??没有做过喔,能告诉大概思路吗?有例子吗?,,先谢谢了, --------------------编程问答-------------------- 呵呵…………
没有做过这样的东西,我是做Windows开发的,Web不大做! --------------------编程问答-------------------- ......那个东东真的可以做到吗? --------------------编程问答-------------------- 你处理语音的代码你打算放在客户端还是服务器端?
--------------------编程问答-------------------- up --------------------编程问答-------------------- 最好是服务端,不过,是不是不能实现呢?我有尝试去下载所谓支持WEB语音识别的那Speech Aplication SDK,但是,那要求太多了,好像还不支持studio 2005 ,

如果在服务端不能实现的话,只有放在客户端的方法了,要怎么实现这些呢??是不是要做OCX的啊??这个我又没有做过,好像.net又不支持ocx,郁闷,有相关的例子的吗? --------------------编程问答-------------------- 请问LZ能不能将您的那个程序发给我呢?

最重要是那个类库( SpeechLib [有源代码的更好] )...

我一直都很想研究一下语音识别这一块...

也希望能在学习的过程中帮您发现问题...

我的Email: Shinaterry@126.com

期望您的回应...

^o^

--------------------编程问答-------------------- 首先 SpeechLib 这个,,是只要你安装了Speech SDK 然后再在.net里添加就有得了,,,

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
接着回到那个问题,,最后想到,那个 Activex 是不是也是只在客户端调用一次,然后就停止了呢?那这个也是没有用的啊,,,

我要的效果是:在客户端能不断监听到麦克风传来的声音,并把其转换成文字显示在TextBox,,

这个可以用什么技术来做呢??那个OCX能这样吗?不过,好像也是只调用一次的吧,, --------------------编程问答-------------------- 接着回到那个问题,,最后想到,那个 Activex 是不是也是只在客户端调用一次,然后就停止了呢?那这个也是没有用的啊,,,

我要的效果是:在客户端能不断监听到麦克风传来的声音,并把其转换成文字显示在TextBox,,

这个可以用什么技术来做呢??那个OCX能这样吗?不过,好像也是只调用一次的吧,, --------------------编程问答-------------------- OCX,只要页面没有关闭,它就可以一直运行下去。 --------------------编程问答-------------------- 嗯,,.net的DLL也一样的吧,,只要页面没有关闭,它就可以一直运行,现在想把它做成DLL,然后在WEB调用,不过又出了问题了,,努力中,, --------------------编程问答-------------------- xiaofam
  你好,我现在也遇到了和你一样的问题,不知你的问题解决了吗?有什么进展吗?请指教,等候,谢谢! --------------------编程问答-------------------- 童鞋们,有解决的方案没?
俺 也卡在这里了。
网上有 TTS 的 
就是没有 SR的。
…… --------------------编程问答-------------------- 这个好哦! --------------------编程问答-------------------- WEB Form 和 WinForm 的工作机制不同吧
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,