关于语音识别,在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#