语音输入源码
A. C#怎样实现语音聊天视频功能(要具体代码)
给你一个winform 的例子,对你可能有用!
涉及技术
动态调用Com对象(全反射、没有引用com ocx)
取得系统存在的各种语言引擎
使用引擎进行朗读
使用引擎进行保存声音
程序图列:
主要功能描述
实列变量等,构造函授等
取得所有的 识别对象模块集合,放入下拉框
代码
object _spVoiceCls =
null; //保存朗读用的 SAPI.SpVoice
const
int SpFlags =
1; //SpeechVoiceSpeakFlags.SVSFlagsAsyn
object _oISpeechObjectTokens =
null; //保存 SAPI.ISpeechObjectTokens 就是系统有的语音引擎集合
int TokensCount =
0; // 语音引擎集合 数
DictionaryEntry[] _deTokens=null; //榜定下拉框用的
public MainForm()
{
InitializeComponent();
this.HandleDestroyed +=
new EventHandler(Form1_HandleDestroyed);
}
private
void Form1_Load(object sender, EventArgs e)
{
InitSAPI();
}
系统事件:程序加载
取得所有的 识别对象模块集合,放入下拉框
代码
void InitSAPI()
{
//创建语音对象朗读用
_spVoiceCls = CreateComObject("SAPI.SpVoice");
if (_spVoiceCls == null)
{
MessageBox.Show("您的系统没有,微软语音组件");
Application.Exit();
}
else
{//取得所有的 识别对象模块集合
_oISpeechObjectTokens = CallComMethod("GetVoices", _spVoiceCls); //取得SAPI.ISpeechObjectTokens
//识别对象集合 Count;
object r = GetComPropery("Count", _oISpeechObjectTokens);
if (r is int)
{
TokensCount = (int)r;
if (TokensCount > 0)
{
//取得全部语音识别对象模块,及名称,以被以后使用
_deTokens = new DictionaryEntry[TokensCount];
for (int i = 0; i < TokensCount; i++)
{
//从集合中取出单个 识别对象模块
object oSpObjectToken = CallComMethod("Item", _oISpeechObjectTokens, i); //返回 SAPI.SpObjectToken
//取名称
string Description = CallComMethod("GetDescription", oSpObjectToken) as string;
//放到 DictionaryEntry 对象中,key 是 识别对象模块,value 是名称
_deTokens= new DictionaryEntry(oSpObjectToken, Description);
}
//邦定到 下拉框
cboxTokens.DisplayMember = "Value";
cboxTokens.ValueMember = "Key";
cboxTokens.DataSource = _deTokens;
cboxTokens.SelectedIndex = 0;
}
}
}
}
用户事件:朗读
朗读输入的文本信息
代码
private void btnSynthesis_Click(object sender, EventArgs e)
{
string msg = rTxtMsg.Text.Trim();
if (msg.Length != 0)
{
if (_spVoiceCls != null)
{
//设置语言引擎
SetComProperty("Voice", _spVoiceCls, cboxTokens.SelectedValue);
//调用Speak 函数,msg 是要播放的文本,1 是异步播放,因为是异步的 com 对象不立刻释放
CallComMethod("Speak", _spVoiceCls, msg, SpFlags);
}
}
}
用户事件:保存声音
将输入的文本信息生成音频文件保存到文件
代码
private void Save()
{
string msg = rTxtMsg.Text.Trim();
if (msg.Length != 0)
{
using (SaveFileDialog sfd = new SaveFileDialog())
{
sfd.Filter = "wav 文件 (*.wav)|*.wav";
sfd.RestoreDirectory = true;
if (sfd.ShowDialog() == DialogResult.OK)
{
/*
Enum SpeechStreamFileMode;
SSFMOpenForRead = 0;
SSFMOpenReadWrite = 1;
SSFMCreate = 2;
SSFMCreateForWrite = 3;
*/
int SpFileMode = 3;// SpeechStreamFileMode.SSFMCreateForWrite
object oSpFileStream = CreateComObject("SAPI.SpFileStream"); //创建 SAPI.SpFileStream
object oSpVoice = CreateComObject("SAPI.SpVoice"); //创建 SAPI.SpVoice
try
{
CallComMethod("Open", oSpFileStream, sfd.FileName, SpFileMode, false); //打开流
SetComProperty("Voice", oSpVoice, cboxTokens.SelectedValue); //设置 Voice 属性,让谁朗读
SetComProperty("AudioOutputStream", oSpVoice, oSpFileStream); //设置流
CallComMethod("Speak", oSpVoice, msg, SpFlags); //调用 Speak
CallComMethod("WaitUntilDone", oSpVoice, Timeout.Infinite); //等
CallComMethod("Close", oSpFileStream); //关闭流
MessageBox.Show("保存成功");
}
finally
{
Marshal.ReleaseComObject(oSpVoice);
Marshal.ReleaseComObject(oSpFileStream);
}
}
}
}
}
private void btnSave_Click(object sender, EventArgs e)
{
try
{
btnSave.Enabled = false;
Save();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
btnSave.Enabled = true;
}
}
调用com组件,功能函数
自己写的一些帮助函数可以方便调用反射,要不太郁闷(如果是VB 就不用如此费尽了)
#region 调用com组件,功能通用函数
/// <summary>
/// 设置属性
/// </summary>
/// <param name="name"></param>
/// <param name="o"></param>
/// <param name="vlaue"></param>
private static void SetComProperty(string name, object o, object vlaue)
{
Type t = o.GetType();
t.InvokeMember(name, BindingFlags.Instance | BindingFlags.SetProperty, null, o, new
object[] { vlaue });
}
/// <summary>
/// 取得属性
/// </summary>
/// <param name="name"></param>
/// <param name="o"></param>
/// <returns></returns>
private static object GetComPropery(string name, object o)
{
Type t = o.GetType();
return t.InvokeMember(name, BindingFlags.Instance | BindingFlags.GetProperty, null, o, null);
}
/// <summary>
/// 调用方法函授
/// </summary>
/// <param name="name"></param>
/// <param name="o"></param>
/// <param name="parms"></param>
/// <returns></returns>
private static object CallComMethod(string name, object o, params object[] parms)
{
Type t = o.GetType();
return t.InvokeMember(name, BindingFlags.Instance | BindingFlags.InvokeMethod, null, o, parms);
}
/// <summary>
/// 创建 com 对象
/// </summary>
/// <param name="FromProgID"></param>
/// <returns></returns>
private static object CreateComObject(string FromProgID)
{
Type comType = Type.GetTypeFromProgID(FromProgID);
object rVar = null;
if (comType != null)
rVar = System.Activator.CreateInstance(comType);
return rVar;
}
#endregion
释放com对象
很简单的就一行即可
代码
void Form1_HandleDestroyed(object sender, EventArgs e)
{
//释放com对象
Marshal.ReleaseComObject(_spVoiceCls);
}
B. 求语音识别的源代码,要求是用C#或C语言编写,能够识别一些基本的汉语发音
windows vista 和win7 都自带语音识别 可以搜一下相关技术或者可以试用一下
C. 如何找到软件的源代码
软件的源代码,基本是没有办法的,因为软件运行时都是编译后的程序,也就是把源代码翻译成计算机能执行的代码,一般的破解是破解功能限制,注册限制,反编译也只是能得到汇编代码,也很难看懂的。
D. 跪求凌阳61单片机设计的语音识别系统的主程序
凌阳61单片机实现RCL,由C语言编写,凌阳61板实现功能-,C++ Builder,单片机开发/SCM
autocad预览控件.不需要安装autocad即可在界面浏览-,Delphi,绘图程序/Graph Drawing
本程序为基于matlab的小波分析的应用实例。-,matlab,界面编程/GUI Develop
高通brew平台上的BUIW控件中的ImageStaticWidget使用示例-,Visual C++,Static控件/Static control
客观合理化一天一片人体豆腐花规范化广泛非官方大哥大法国-,C++ Builder,界面编程/GUI Develop
本程序为基于matlab的插值分析与Euler解常微分方程的应用实例。-,matlab,界面编程/GUI Develop
用ASP.NET做的酒店管理系统,该系统主要处理酒店日常运营中涉及的客户信息.-,ASP,其他书籍/Other Books
EVC 读写INI文件 EVC 读写INI文件EVC 读写INI文件EVC 读写INI文件EVC 读写INI文件-,Visual C++,文件操作/File Operate
本程序介绍基于matlab的平方根及改进平方根算法。-,matlab,按钮控件/Button control
高通brew平台上的BUIW控件中的slider的示例程序-,Visual C++,界面编程/GUI Develop
塔顶地无可奈何花落去 人威风扫地雪 可耕地枯无可奈何花落去 无可奈何花落去饿-,Visual C++,GDI/图象编程/GDI-Bitmap
oblog31sql oblog31sql oblog31sql oblog31sql oblog31sql-,ASP,Web服务器/Web Server
MATLAB实现简单图象处理的程序,在matlab2006a上通过-,matlab,matlab例程/matlab
源码、运行程序、帮助文件、必须的数据库文件-,Windows_Unix,C#编程/CSharp
dos下的TCP/IP栈库函数,并提供了多种tcp/ip编程demo。 -,DOS,TCP/IP协议栈/TCP/IP Stack
MATLAB进入时显示的图标的程序实现,有动画效果!-,matlab,matlab例程/matlab
地方官梵蒂冈地方官法 方法方法方法方法方法 -,Unix_Linux,TreeView控件/TreeView
几个matlab的编程实例,对初学者有一定的帮助。-,matlab,界面编程/GUI Develop
用ASP.NET做的客户管理系统,该系统以客户管理中涉及的销售管理,合同管理为主体.-,ASP,其他书籍/Other Books
毕毕剥剥毕毕剥剥爸爸 毕毕剥剥毕毕剥剥爸爸 -,DOS,Static控件/Static control
将数据库的资料转档到EXCEL里进行保存-,Delphi,其他小程序/Other windows programs
数字图像中队图像进行模板匹配算法之前的预处理算法!-,Visual C++,图形/文字识别/Graph Recognize
存车处存车处存车处厂 滴滴答答滴滴答答得到 -,DOS,编辑框/EditBox
实数编码GA,也是从网上下载的。非要上传5个才能下载,哎,实在是没办法啊,这个也不知道能不能运行,不能的话请不要骂我哦,谢谢!!-,Visual C++,人工智能/AI-NN-PR
DS1302+AT89C2051的LED钟,可以显示年、周、月、日、小时、分钟、秒-,TEXT,其他小程序/Other windows programs
可耕地 唇形枯 要一地三三大哥有在一码元表的有遥有-,Visual C++,TreeView控件/TreeView
用java写的遗传算法的例子,比较简单,如果解压缩的时候需要密码的话,应该是“1”。写的比较简单。是老早以前写的了。-,Java,人工智能/AI-NN-PR
汇编语言,用C51单片机实现交通灯控制!二极管模拟发光!-,Asm,单片机开发/SCM
通过串口控制步进电机控制器,实现联络,速度控制,步长-,Visual C++,串口编程/Com Port
绝佳的Tab View控件的方式之一,VC++6.0经过运行调试的,可直接使用-,Visual C++,TreeView控件/TreeView
以某中小规模汽车维修厂为案例,用ASP.NET做的仓库管理系统.-,ASP,其他书籍/Other Books
关机程序。。。。。。。。。。。。。。。。。-,Visual C++,Windows编程/Windows Develop
绝佳的Tab View控件的方式之二,VC++6.0经过运行调试的,可直接使用-,Visual C++,界面编程/GUI Develop
在VC6下基于OpenCV的轮廓检测程序,其中图像的二值化操作基于Canny和自适应阈值。通过trackbar来实现不同情况下的轮廓检测。-,Visual C++,图形/文字识别/Graph Recognize
绝佳的Tab View控件的方式之三,VC++6.0经过运行调试的,可直接使用-,Visual C++,界面编程/GUI Develop
用于首先获取需要下载的文件的大小,然后将其分块下载。-,Java,网络编程/WinSock-NDIS
用csocket模拟聊天室,可以在一台机子上模拟,也可以在不同机子上-,Visual C++,网络编程/WinSock-NDIS
这个好象也是从网络上找到一个基本遗传算法的例子,解压缩的时候如果需要密码的话,应该是“1”。-,Visual C++,人工智能/AI-NN-PR
本程序是运用java 语言 编写一款查看 网站源文件的程序 -,Java,其他/Other systems
使用C语言实现菜单控制的源程序,实现了学生成绩的管理.-,C-C++,界面编程/GUI Develop
在打开图像时,点击图像可在打开对话框中实时看到预览,绝好.-,Visual C++,界面编程/GUI Develop
用ASP.NET做的合同管理系统,该系统包括合同进展控制模块,员工管理模块,客户管理模块,项目管理模块,合同管理模块和合同统计模块等.-,ASP,其他书籍/Other Books
语音识别与合成工具箱.具有如下功能:时域分析,频域分析,LPC分析与合成等.-,matlab,matlab例程/matlab