Home > Code > C# > How to add text-to-speech and speech-to-text features to your SIP software by using Microsoft Speech...

How to add text-to-speech and speech-to-text features to your SIP software by using Microsoft Speech Platform in C#?

by Justin Warner   on Mar 06, 2015   Category: C#   |  Views: 556    |  Points: 25   |  Starter 


In my previous snippet I have written about converting text to speech using C#. This code snippet can be used not just for allowing your computer to read txt aloud, but also for speech recognition. To implement this functionality I used Microsoft Speech Platform 11 along with Ozeki VoIP SIP SDK. The first one provides two classes (MSSpeechPlatformSTT, MSSpeechPlatformTTS) for text-to-speech and speech-to-text, and the VoIP SDK ensures the necessary VoIP components. The source code below is ready for use, so you only need to copy&paste it to your Visual Studio, then modify the necessary fields. (Do not forget to add the necessary DLL files to your references: http://www.voip-sip-sdk.com, http://www.microsoft.com/en-us/download/details.aspx?id=27226 )

After creating the necessary using lines and media handler objects, you can implement the text-to-speech and the voice recognition features by using the SetupTextToSpeech() and the SetupSpeechToText() methods.

Have a good time!

------------------


using System;
using System.Threading;
using Ozeki.Media.MediaHandlers;
using Ozeki.Media.MediaHandlers.Speech;

namespace Microsoft_Speech_Platform
{
class Program
{
static Speaker _speaker;
static Microphone _microphone;
static MediaConnector _connector;
static TextToSpeech _tts;
static SpeechToText _stt;

static void Main(string[] args)
{
_microphone = Microphone.GetDefaultDevice();
_speaker = Speaker.GetDefaultDevice();
_connector = new MediaConnector();

SetupTextToSpeech();

SetupSpeechToText();

while (true) Thread.Sleep(10);
}

static void SetupTextToSpeech()
{
_tts = new TextToSpeech();
_tts.AddTTSEngine(new MSSpeechPlatformTTS());

var voices = _tts.GetAvailableVoices();
foreach (var voice in voices)
{
if (voice.Language.Equals("en-GB"))
_tts.ChangeLanguage(voice.Language, voice.Name);
}

_speaker.Start();
_connector.Connect(_tts, _speaker);
_tts.AddAndStartText("Hello World!");
}


static void SetupSpeechToText()
{
string[] words = {"Hello", "Welcome"};
_stt = SpeechToText.CreateInstance(words);
_stt.WordRecognized += stt_WordRecognized;
_stt.ChangeSTTEngine(new MSSpeechPlatformSTT());

var recognizers = _stt.GetRecognizers();
foreach (var recognizer in recognizers)
{
if (recognizer.Culture.Name == "en-GB")
_stt.ChangeRecognizer(recognizer.ID);
}

_connector.Connect(_microphone, _stt);
_microphone.Start();
}

static void stt_WordRecognized(object sender, SpeechDetectionEventArgs e)
{
Console.WriteLine("Word recognized: {0}", e.Word);
}
}
}



Post Code  |  Code Snippet Home

User Responses


No response found, be the first to review this code snippet.

Submit feedback about this code snippet

Please sign in to post feedback

Latest Posts