csharp: Speech

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:

<!-- 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);
			}

        }

  

原文地址:https://www.cnblogs.com/geovindu/p/5666493.html