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: 971    |  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();



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

_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")

_connector.Connect(_microphone, _stt);

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