csharp: Speech
2016-07-13 12:33
603 查看
Speech SDK 5.1 https://www.microsoft.com/en-us/download/details.aspx?id=10121
detects mobile devices and browsers http://51degrees.codeplex.com/ http://detectmobilebrowsers.com/ https://github.com/serbanghita/Mobile-Detect
Speech synthesis sample https://code.msdn.microsoft.com/windowsapps/Speech-synthesis-sample-6e07b218 http://microsoft.github.io/windows/
Microsoft Speech Platform - Software Development Kit (SDK) (Version 11) https://www.microsoft.com/en-us/download/details.aspx?id=27226
Microsoft Visual Studio International Pack 1.0 SR1 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=15251
Microsoft Visual Studio International Feature Pack 2.0 https://www.microsoft.com/en-us/download/details.aspx?id=18970 http://www.codeproject.com/Articles/42354/The-Art-of-Logging (程序日志管理)
http://slf.codeplex.com/ https://github.com/net-commons https://github.com/aspnet/Logging http://netcommon.sourceforge.net/docs/1.2.0/reference/html/logging.html https://github.com/apache/log4net/tree/trunk/src https://sourceforge.net/projects/log4net/?source=navbar http://extjspractice.codeplex.com/ http://extjsextender.codeplex.com/ http://fineui.codeplex.com/ http://extsharp.codeplex.com/ http://bocaextjs.codeplex.com/ http://extaspnet.codeplex.com/ http://helperproject.codeplex.com/ http://regsharp.codeplex.com/ http://wacvextjs.codeplex.com/ http://dough.codeplex.com/ http://blog.csdn.net/Rock870210/article/details/6068279 https://github.com/whizkidwwe1217/aspwebapiextjs https://github.com/hogaf/Hogaf.ExtNet3.UX
Speech SDK 5.1
javascrit:
detects mobile devices and browsers http://51degrees.codeplex.com/ http://detectmobilebrowsers.com/ https://github.com/serbanghita/Mobile-Detect
Speech synthesis sample https://code.msdn.microsoft.com/windowsapps/Speech-synthesis-sample-6e07b218 http://microsoft.github.io/windows/
Microsoft Speech Platform - Software Development Kit (SDK) (Version 11) https://www.microsoft.com/en-us/download/details.aspx?id=27226
Microsoft Visual Studio International Pack 1.0 SR1 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=15251
Microsoft Visual Studio International Feature Pack 2.0 https://www.microsoft.com/en-us/download/details.aspx?id=18970 http://www.codeproject.com/Articles/42354/The-Art-of-Logging (程序日志管理)
http://slf.codeplex.com/ https://github.com/net-commons https://github.com/aspnet/Logging http://netcommon.sourceforge.net/docs/1.2.0/reference/html/logging.html https://github.com/apache/log4net/tree/trunk/src https://sourceforge.net/projects/log4net/?source=navbar http://extjspractice.codeplex.com/ http://extjsextender.codeplex.com/ http://fineui.codeplex.com/ http://extsharp.codeplex.com/ http://bocaextjs.codeplex.com/ http://extaspnet.codeplex.com/ http://helperproject.codeplex.com/ http://regsharp.codeplex.com/ http://wacvextjs.codeplex.com/ http://dough.codeplex.com/ http://blog.csdn.net/Rock870210/article/details/6068279 https://github.com/whizkidwwe1217/aspwebapiextjs https://github.com/hogaf/Hogaf.ExtNet3.UX
Speech SDK 5.1
javascrit:
<!-- Copyright @ 2001 Microsoft Corporation All Rights Reserved. --> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" content="text/html; charset=UTF-8"> <TITLE>TTS Demo</TITLE> <SCRIPT LANGUAGE="JavaScript"> // Create the Sapi SpVoice object var VoiceObj = new ActiveXObject("Sapi.SpVoice"); // ChangeVoice() function: // This function sets the newly selected voice choice from the Voice // Select box on the Voice object. function ChangeVoice() { var i = parseInt( idsVoices.value ); VoiceObj.Voice = VoiceObj.GetVoices().Item(i); } // ChangeAudioOutput() function: // This function sets the newly selected audio output choice from the // Audio Output Select box on the Voice object. function ChangeAudioOutput() { var i = parseInt( idsAudioOutputs.value ); VoiceObj.AudioOutput = VoiceObj.GetAudioOutputs().Item(i); } // IncRate() function: // This function increases the speaking rate by 1 up to a maximum // of 10. function IncRate() { if( VoiceObj.Rate < 10 ) { VoiceObj.Rate = VoiceObj.Rate + 1; } } // DecRate() function: // This function decreases the speaking rate by -1 down to a minimum // of -10. function DecRate() { if( VoiceObj.Rate > -10 ) { VoiceObj.Rate = VoiceObj.Rate - 1; } } // IncVol() function: // This function increases the speaking volume by 10 up to a maximum // of 100. function IncVol() { if( VoiceObj.Volume < 100 ) { VoiceObj.Volume = VoiceObj.Volume + 10; } } // DecVol() function: // This function decreases the speaking volume by -10 down to a minimum // of 0. function DecVol() { if( VoiceObj.Volume > 9 ) { VoiceObj.Volume = VoiceObj.Volume - 10; } } // SpeakText() function: // This function gets the text from the textbox and sends it to the // Voice object's Speak() function. The value "1" for the second // parameter corresponds to the SVSFlagsAsync value in the SpeechVoiceSpeakFlags // enumerated type. function SpeakText() { if( idbSpeakText.value == "SpeakText" ) { // Speak the string in the edit box try { VoiceObj.Speak( idTextBox.value, 1 ); } catch(exception) { alert("Speak error"); } } else if( idbSpeakText.value == "Stop" ) { // Speak empty string to Stop current speaking. The value "2" for // the second parameter corresponds to the SVSFPurgeBeforeSpeak // value in the SpeechVoiceSpeakFlags enumerated type. VoiceObj.Speak( "", 2 ); } } </SCRIPT> <SCRIPT FOR="window" EVENT="OnQuit()" LANGUAGE="JavaScript"> // Clean up voice object delete VoiceObj; </SCRIPT> </HEAD> <BODY> <H1 align=center>Simple TTS (DHTML)</H1> <H1 align=center><FONT size=3> </FONT> <IMG alt="" border=2 hspace=0 id=idImage src="mouthclo.bmp"> </H1> <H1 align=center> <TEXTAREA ID=idTextBox COLS=50 ROWS=10 WRAP=VIRTUAL>Enter text you wish spoken here</TEXTAREA> </H1> <P align=center><STRONG><STRONG> Rate <STRONG> <INPUT id=idbIncRate name=button1 type=button onclick=IncRate() value=" + "></STRONG> <INPUT id=idbDecRate name=button2 type=button onclick=DecRate() value=" - " style="LEFT: 237px; TOP: 292px"> </STRONG> Volume <STRONG><STRONG> <INPUT id=idbIncVol name=button3 onclick=IncVol() style="LEFT: 67px; TOP: 318px" type=button value=" + "> <INPUT id=idbDecVol name=button4 onclick=DecVol() type=button value=" - " style="LEFT: 134px; TOP: 377px"> </STRONG></STRONG></STRONG></P> <P align=center><STRONG><BUTTON id=idbSpeakText onclick=SpeakText(); style="HEIGHT: 24px; LEFT: 363px; TOP: 332px; WIDTH: 178px">SpeakText</BUTTON></STRONG></P> <P align=center><STRONG>Voice <STRONG>Audio Output </STRONG></STRONG></P> <P align=center> <SELECT id=idsVoices name=Voices onchange=ChangeVoice() style="FONT-FAMILY: serif; HEIGHT: 21px; WIDTH: 179px"> </SELECT> <SELECT id=idsAudioOutputs name=AudioOutputs onchange=ChangeAudioOutput() style="HEIGHT: 22px; WIDTH: 179px"> </SELECT> <SCRIPT LANGUAGE="JavaScript"> // Code in the BODY of the webpage is used to initialize controls and // to handle SAPI events /***** Initializer code *****/ InitializeControls(); function InitializeControls() { // Initialize the Voices and AudioOutput Select boxes var VoicesToken = VoiceObj.GetVoices(); var AudioOutputsToken = VoiceObj.GetAudioOutputs(); // Add correct strings to Voice Select box for( var i=0; i<VoicesToken.Count; i++ ) { var oOption = document.createElement("OPTION"); idsVoices.options.add(oOption); oOption.innerText = VoicesToken.Item(i).GetDescription(); oOption.value = i; } // Add correct strings to Audio Output Select box for( var i=0; i<AudioOutputsToken.Count; i++ ) { var oOption = document.createElement("OPTION"); idsAudioOutputs.options.add(oOption); oOption.innerText = AudioOutputsToken.Item(i).GetDescription(); oOption.value = i; } } /***** Event handling code *****/ // These functions are used to handle the SAPI events // Handle StartStream event function VoiceObj::StartStream() { idbSpeakText.value = "Stop"; } // Handle EndStream event function VoiceObj::EndStream() { idbSpeakText.value = "SpeakText"; idImage.src = "mouthclo.bmp"; } // Handle Viseme event function VoiceObj::Viseme(StreamNum, StreamPos, Duration, VisemeType, Feature, VisemeId) { // Map the VisemeId to the appropriate .bmp if( VisemeId == 15 || VisemeId == 17 || VisemeId == 18 || VisemeId ==21 ) { idImage.src = "mouthop1.bmp"; } else if( VisemeId == 14 || VisemeId == 16 || VisemeId == 19 || VisemeId == 20 ) { idImage.src = "mouthop2.bmp"; } else if( VisemeId == 4 || VisemeId == 6 || VisemeId == 9 || VisemeId == 12 ) { idImage.src = "mouthop3.bmp"; } else if( VisemeId == 1 || VisemeId == 2 || VisemeId == 3 || VisemeId == 11 ) { idImage.src = "mouthop4.bmp"; } else if( VisemeId == 7 || VisemeId == 8 ) { idImage.src = "mouthnar.bmp"; } else if( VisemeId == 5 || VisemeId == 10 || VisemeId == 13 ) { idImage.src = "mouthmed.bmp"; } else { idImage.src = "mouthclo.bmp"; } } </SCRIPT> <STRONG> <HR></STRONG> <P></P> </BODY> </HTML>
private void btnSpeak_Click(object sender, System.EventArgs e) { //Create a TTS voice and speak. try { SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync; SpVoice Voice = new SpVoice(); if (chkSaveToWavFile.Checked) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav"; sfd.Title = "Save to a wave file"; sfd.FilterIndex = 2; sfd.RestoreDirectory = true; if (sfd.ShowDialog()== DialogResult.OK) { SpeechStreamFileMode SpFileMode = SpeechStreamFileMode.SSFMCreateForWrite; SpFileStream SpFileStream = new SpFileStream(); SpFileStream.Open(sfd.FileName, SpFileMode, false); Voice.AudioOutputStream = SpFileStream; Voice.Speak(txtSpeakText.Text, SpFlags); Voice.WaitUntilDone(Timeout.Infinite); SpFileStream.Close(); } } else { Voice.Speak(txtSpeakText.Text, SpFlags); } } catch(Exception error) { MessageBox.Show("Speak error", "SimpleTTS", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
相关文章推荐
- C# 同步两个ListBox滚动条
- C# dll文件引入运行包exe中。
- C# 匿名方法
- C#hashtable使用说明 以及 Hashtable和HashMap的区别【总结性】
- C#实现汉字转换为拼音缩写的代码
- c#实体转化
- 断点续传续播的大概原理
- C# 探索c#之Async、Await剖析
- 在C#中使用SerialPort类实现串口通信
- [通信] C#多线程Socket-文件传输
- 反射实现深拷贝
- C# WINFORM判断程序是否运行,且只能运行一个实例
- C#串口SerialPort常用属性方法
- C# string bytes互转
- C#程序代码中常用的快捷键
- c#学习笔记--静态方法和实例方法、方法的重载、操作符的重载
- C#基础学习--方法参数的种类,值参数,引用参数(ref),输出参数(out),数组参数(params)
- C#学习笔记--引用类型分类,对象类型、字符串类型、数字类型,类型转换
- NPlot在c#中的使用
- 20160711--C# 委托的三种调用示例(同步调用 异步调用 异步回调)【转载】