C#怎样实现语音聊天视频功能(要具体代码) .net如何实现网页式语音聊天与视频功能

C# \u4e0bwinform \u505a\u4e00\u4e2a\u89c6\u5c4f\u8bed\u97f3\u804a\u5929\u529f\u80fd\u600e\u4e48\u5b9e\u73b0 \u9700\u8981\u5177\u4f53\u4ee3\u7801\u3002\u5404\u4f4d\u5927\u795e\u6c42\u5e2e\u52a9\u3002

http://www.51aspx.com/code/gg201336
\u7ed9\u5206\u5427\uff0c\u670b\u53cb\uff0c\u5475\u5475

\u67092\u70b9\uff1a1 .net\u8bed\u8a00\u6ca1\u6709\u8fd0\u884c\u5728\u5ba2\u6237\u7aef\u7684\uff0c\u6240\u4ee5\u7528.net \u80af\u5b9a\u6ca1\u529e\u6cd5\u5b8c\u6210\u30022.\u8fd0\u884c\u5728\u6d4f\u89c8\u5668\u4e0a\u7684\u8bed\u8a00\u6743\u9650\u90fd\u5f88\u4f4e\uff0c\u6839\u672c\u6ca1\u6709\u529e\u6cd5\u8bbf\u95ee\u50cf\u6444\u50cf\u5934\u8fd9\u4e00\u7c7b\u7684\u786c\u4ef6\uff0c\u800c\u4e14\u6d4f\u89c8\u5668\u4e5f\u4e0d\u5177\u5907\u70b9\u5bf9\u70b9\u7684\u529f\u80fd\u3002
\u5982\u679c \u6211\u662f\u8bf4\u5982\u679c \u4f60\u8001\u677f\u975e\u8ba9\u4f60\u505a\uff0c\u53ef\u4ee5\u7ed9\u4f60\u63d0\u4f9b\u4e00\u79cd\u53ef\u80fd\u3002
\u9996\u5148 \u80af\u5b9a\u8981\u5b89\u88c5\u4e00\u4e2a\u5f88\u5c0f\u7684\u63d2\u4ef6\uff0c\u4f5c\u7528\u5c31\u662f\u6253\u5f00\u6444\u50cf\u5934\uff0c\u5e76\u628a\u5f55\u5236\u7684\u4fe1\u606f\u4fdd\u5b58\u5728\u672c\u5730\uff0c\u7136\u540e\u7528js\u4ee5\u6570\u636e\u6d41\u7684\u5f62\u5f0f\u8bfb\u51fa\u8fd9\u4e2a\u6587\u4ef6\uff0c\u53d1\u9001\u5230\u670d\u52a1\u5668\u4e0a\uff0c\u53e6\u5916\u4e00\u4e2a\u5ba2\u6237\u7aef\u4e0d\u65ad\u7684\u53d6\u670d\u52a1\u5668\u4e0a\u7684\u8fd9\u4e2a\u6570\u636e\uff0c\u8bfb\u51fa\u6765\u540e\u7528\u64ad\u653e\u5668\u89e3\u6790\u51fa\u6765\u3002\u8fd9\u6837\u8fd8\u6709\u53ef\u80fd\u5b9e\u73b0\u90e8\u5206\u529f\u80fd\uff0c\u4f46\u662f\u5177\u4f53\u95ee\u9898\u4e0a\u662f\u5426\u4f1a\u9047\u89c1\u89e3\u51b3\u4e0d\u4e86\u7684\u56f0\u96be\u5c31\u4e0d\u77e5\u9053\u4e86

给你一个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);

}

关注中……

网页链接  早年写的一个C#版聊天工具,最近看到发出来。有些功能不好用了,只用作学习



仿照QQ聊天所做的一个项目,只限于局域网的,个人认为非常棒的,大家一起来分享~记得上次就放出过类似源码,但感觉这次比上次的更完整,这是某培训机构作为一个重要的网络实例来做的,界面不错,而且功能也可以,在VS2005下顺利编译通过,学习绝对有用。

VS2005+sql server2005

参考代码:

C#仿QQ客户端+服务端+数据库文件.zip



  • c鏄粈涔?
    绛旓細c鏄瓧姣嶇鍙枫C锛堝ぇ鍐欙級 銆乧锛堝皬鍐欙級鏄嫳鏂囧瓧姣嶉『鏁扮涓変釜锛屼縿璇瓧姣嶉『鏁扮19涓備緥濡傦細鑻辫鍗曡瘝cloud鍜屸滆嫃鑱斺濈殑淇勮缂╁啓小小小袪鐨勭涓涓瓧姣嶅氨鏄痗銆傝捣婧愶細锛1锛夊瓧姣岰鐨勪骇鐢熷彲鑳芥槸鐢变簬涓涓姇鎺锋鐨勭鍙凤紝鍍忓湪鍙ゅ焹鍙婄殑璞″舰鏂囧瓧閲岋紝骞跺緢鏃╁嚭鐜板湪闂棌鐨勪功闈㈠綋涓-澶х害鍦ㄥ叕鍏冨墠1500骞寸殑瑗垮鍗婂矝銆傦紙...
  • c鏄粈涔堟剰鎬濇暟瀛
    绛旓細C鏄暟瀛︿腑鐨勪竴绉嶅父鏁帮紝甯稿嚭鐜板湪鍚勭寮忓瓙涓傚叾浠h〃鐨勬槸涓涓浐瀹氱殑鏁板硷紝閫氬父鐢ㄦ潵琛ㄧず鏌愮鐗瑰畾鐨勭墿鐞嗛噺鎴栬呮暟瀛﹀父閲忋侰鐨勬剰涔夊湪涓嶅悓鐨勪笂涓嬫枃涓湁鎵涓嶅悓锛屾瘮濡侰鍙兘浠h〃鍏夐燂紝鍦嗗懆鐜囨垨鑰呭叾浠栨暟瀛︿笂鐨勫父閲忋傚湪鏁板涓婏紝C浠h〃浜嗛渶瑕佺敤浣滆绠楀熀纭鐨勪竴浜涢噸瑕佹暟鍊硷紝鍥犳涓嶅悓鐨凜鍊艰骞挎硾搴旂敤浜庡悇绉嶆暟瀛﹀垎鏀腑銆傚湪...
  • c鏄粈涔堟剰鎬?
    绛旓細c++鐨勫叿浣撳惈涔夊涓嬶細C++鏄C璇█鐨勭户鎵匡紝瀹冩棦鍙互杩涜C璇█鐨勮繃绋嬪寲绋嬪簭璁捐锛屽張鍙互杩涜浠ユ娊璞℃暟鎹被鍨嬩负鐗圭偣鐨勫熀浜庡璞$殑绋嬪簭璁捐锛岃繕鍙互杩涜浠ョ户鎵垮拰澶氭佷负鐗圭偣鐨勯潰鍚戝璞$殑绋嬪簭璁捐銆侰++鎿呴暱闈㈠悜瀵硅薄绋嬪簭璁捐鐨勫悓鏃讹紝杩樺彲浠ヨ繘琛屽熀浜庤繃绋嬬殑绋嬪簭璁捐锛屽洜鑰孋++灏遍傚簲鐨勯棶棰樿妯¤岃锛屽ぇ灏忕敱涔嬨侰++涓嶄粎鎷ユ湁璁...
  • 缃戠粶涓C鍜宻c鏄粈涔堟剰鎬?
    绛旓細1銆佲C鈥滄槸鎷奸煶鈥渃hu鈥濈殑棣栧瓧姣嶏紝涓轰簡鏂逛究璧疯缂╁啓涓衡淐鈥濓紝鎸囩殑鏄鐢枫佸濂崇殑鎰忔濄2銆丼C鏄痵uperchat鐨勭缉鍐欙紝鏄粯璐圭暀瑷鍔熻兘銆傝繖涓姛鑳芥渶寮濮嬫槸YouTube2017骞翠笂绾跨殑锛孊绔欎篃鎺ㄥ嚭浜嗚繖涓姛鑳姐傝繖鏄竴绉嶅湪鐩存挱杩囩▼涓繛鎺ョ矇涓濅笌涓绘挱鐨勬柟寮忥紝鍚屾椂涔熷彲缁欎富鎾甫鏉ョ浉搴旂殑缁忔祹鏀剁泭銆傞氳繃杩欎竴鍔熻兘锛岀矇涓濆彲浠ヤ互鏄庝寒...
  • c鐨勬剰鎬濇槸鎬庝箞鏍风殑?
    绛旓細c鐨勬剰鎬濓細1銆佸湪鍖栧涓紝琛ㄧず纰崇殑鍖栧绗﹀彿銆2銆佸湪涔愮悊涓紝琛ㄧず锛氶煶闃朵腑鐨C闊筹紝璋冨彿涓簬C闊冲紑濮嬬殑闊充箰鐨凜澶ц皟鍙奀灏忚皟锛屾媿瀛愯鍙蜂腑鐨4/4鎷嶅瓙銆3銆佸湪缃楅┈鏁板瓧涓紝琛ㄧず100銆4銆佸湪鍥介檯鍗曚綅鍒朵腑锛岃〃绀虹數鑽烽噺鐨勫崟浣嶁滃簱浠戔濄5銆佸湪璁$畻鏈虹瀛︿腑锛屾湁C璇█銆丆++銆丆#銆丱bjective-C绛夈6銆佸湪钀ュ吇瀛︿腑锛岃〃绀...
  • c鏄粈涔堟剰鎬濈殑缂╁啓?
    绛旓細c鏄粈涔堟剰鎬濈殑缂╁啓1 C鏄痗ell鑻辫鍚嶇О鐨勭畝绉帮紝鎰忔濇槸缁嗚優銆傝瘝姹囪В鏋愶細cell 鍩烘湰璇嶆眹 鑻 [sel] 缇 [sel]n. 鍗曚汉鐗㈡埧锛涘皬鎴块棿锛涚粏鑳烇紱铚傛埧鐨勫发瀹わ紱鐢垫睜锛涙斂娌诲皬缁勶紱(璁$畻鏈虹數瀛愯〃鏍肩殑)鍗曞厓鏍硷紱鎵嬫満 The prisoner was locked in a cell.閭e洑鐘鍏冲湪鍗曚汉鐗㈡埧鍐呫俤iseased cell 鍙戠敓鐥呭彉鐨勭粏鑳 d...
  • c鏄粈涔堟剰鎬
    绛旓細c++鐨勫叿浣撳惈涔夊涓嬶細C++鏄C璇█鐨勭户鎵匡紝瀹冩棦鍙互杩涜C璇█鐨勮繃绋嬪寲绋嬪簭璁捐锛屽張鍙互杩涜浠ユ娊璞℃暟鎹被鍨嬩负鐗圭偣鐨勫熀浜庡璞$殑绋嬪簭璁捐锛岃繕鍙互杩涜浠ョ户鎵垮拰澶氭佷负鐗圭偣鐨勯潰鍚戝璞$殑绋嬪簭璁捐銆侰++鎿呴暱闈㈠悜瀵硅薄绋嬪簭璁捐鐨勫悓鏃讹紝杩樺彲浠ヨ繘琛屽熀浜庤繃绋嬬殑绋嬪簭璁捐锛屽洜鑰孋++灏遍傚簲鐨勯棶棰樿妯¤岃锛屽ぇ灏忕敱涔嬨侰++涓嶄粎鎷ユ湁...
  • c鍦ㄥ寲瀛︿腑鎸囦粈涔堟剰鎬
    绛旓細C鍦ㄥ寲瀛︿腑鏈変袱绉嶅惈涔夛細1銆佽〃绀烘祿搴︼紝鍗曚綅涓簃ol/L锛岃绠楀紡涓猴細C=n/V. C=1000蟻蠅/M銆傚惈涔夛細浠1鍗囨憾娑蹭腑鎵鍚憾璐ㄧ殑鎽╁皵鏁拌〃绀虹殑娴撳害銆備互鍗曚綅浣撶Н閲屾墍鍚憾璐ㄧ殑鐗╄川鐨勯噺锛堟懇灏旀暟锛夋潵琛ㄧず婧舵恫缁勬垚鐨勭墿鐞嗛噺锛屽彨浣滆婧惰川鐨勬懇灏旀祿搴︼紝鍙堢О璇ユ憾璐ㄧ墿璐ㄧ殑閲忔祿搴︺傛憾璐ㄥ惈閲忚秺澶氾紝娴撳害瓒婂ぇ銆傛祿搴﹀彲浠ョ敤涓瀹...
  • c鏄粈涔堟剰鎬?
    绛旓細c++鐨勫叿浣撳惈涔夊涓嬶細C++鏄C璇█鐨勭户鎵匡紝瀹冩棦鍙互杩涜C璇█鐨勮繃绋嬪寲绋嬪簭璁捐锛屽張鍙互杩涜浠ユ娊璞℃暟鎹被鍨嬩负鐗圭偣鐨勫熀浜庡璞$殑绋嬪簭璁捐锛岃繕鍙互杩涜浠ョ户鎵垮拰澶氭佷负鐗圭偣鐨勯潰鍚戝璞$殑绋嬪簭璁捐銆侰++鎿呴暱闈㈠悜瀵硅薄绋嬪簭璁捐鐨勫悓鏃讹紝杩樺彲浠ヨ繘琛屽熀浜庤繃绋嬬殑绋嬪簭璁捐锛屽洜鑰孋++灏遍傚簲鐨勯棶棰樿妯¤岃锛屽ぇ灏忕敱涔嬨侰++涓嶄粎鎷ユ湁...
  • c鐨勫ぇ鍐欏瓧姣嶆槸浠涔?
    绛旓細c鐨勫ぇ鍐欏瓧姣嶆槸C銆傚崰鍥涚嚎鏍肩殑涓牸锛屾敞鎰忚鐣欏嚭涓涓己鍙o紝涓嶈灏佷綇銆26涓瓧姣嶈嫳璇ぇ灏忓啓鍒嗗埆涓篈a銆丅b銆丆c銆丏d銆丒e銆丗f銆丟g銆丠h銆両i銆丣j銆並k銆丩l銆丮m銆丯n銆丱o銆丳p銆丵q銆丷r銆丼s銆乀t銆乁u銆乂v銆乄w銆乆x銆乊y銆乑z銆備功鍐欒嫳璇瓧姣嶆椂瑕佹寜鐓у瓧姣嶇殑绗旂敾鍜屽瓧姣嶅湪涓変釜鏍间腑鎵鍗犳嵁鐨勪綅缃功鍐欙紝鍚屾椂姣忎釜瀛楁瘝閮...
  • 扩展阅读:ai女友聊天机器人 ... c#怎样打学生成绩 ... 不正经的聊天软件 ... 语音聊天 ... ai聊天机器人恋爱app ... c#怎么发音 ... 免费ai聊天机器人 ... c#语言学习 ... 怎么和女生语音聊天 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网