Index: /speech/TranscribeCPP/stdafx.h
===================================================================
--- /speech/TranscribeCPP/stdafx.h (revision 487)
+++ /speech/TranscribeCPP/stdafx.h (revision 487)
@@ -0,0 +1,15 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+#include "targetver.h"
+
+#include <stdio.h>
+#include <tchar.h>
+
+
+
+// TODO: reference additional headers your program requires here
Index: /speech/TranscribeCPP/Transcribe.sln
===================================================================
--- /speech/TranscribeCPP/Transcribe.sln (revision 487)
+++ /speech/TranscribeCPP/Transcribe.sln (revision 487)
@@ -0,0 +1,20 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual C++ Express 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Transcribe", "Transcribe.vcproj", "{B8FFC483-61F8-4EA8-A651-6F165D3F4D11}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B8FFC483-61F8-4EA8-A651-6F165D3F4D11}.Debug|Win32.ActiveCfg = Debug|Win32
+		{B8FFC483-61F8-4EA8-A651-6F165D3F4D11}.Debug|Win32.Build.0 = Debug|Win32
+		{B8FFC483-61F8-4EA8-A651-6F165D3F4D11}.Release|Win32.ActiveCfg = Release|Win32
+		{B8FFC483-61F8-4EA8-A651-6F165D3F4D11}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: /speech/TranscribeCPP/targetver.h
===================================================================
--- /speech/TranscribeCPP/targetver.h (revision 487)
+++ /speech/TranscribeCPP/targetver.h (revision 487)
@@ -0,0 +1,13 @@
+#pragma once
+
+// The following macros define the minimum required platform.  The minimum required platform
+// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run 
+// your application.  The macros work by enabling all features available on platform versions up to and 
+// including the version specified.
+
+// Modify the following defines if you have to target a platform prior to the ones specified below.
+// Refer to MSDN for the latest info on corresponding values for different platforms.
+#ifndef _WIN32_WINNT            // Specifies that the minimum required platform is Windows Vista.
+#define _WIN32_WINNT 0x0502     // Change this to the appropriate value to target other versions of Windows.
+#endif
+
Index: /speech/TranscribeCPP/stdafx.cpp
===================================================================
--- /speech/TranscribeCPP/stdafx.cpp (revision 487)
+++ /speech/TranscribeCPP/stdafx.cpp (revision 487)
@@ -0,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+// Transcribe.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
Index: /speech/TranscribeCPP/Transcribe.cpp
===================================================================
--- /speech/TranscribeCPP/Transcribe.cpp (revision 487)
+++ /speech/TranscribeCPP/Transcribe.cpp (revision 487)
@@ -0,0 +1,94 @@
+// Transcribe.cpp : Defines the entry point for the console application.
+//
+
+//#include "stdafx.h"
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0502		// Specifies that the minimum required platform is XP SP2.   
+#endif
+
+#include <stdio.h>
+#include <tchar.h>
+#include <iostream>
+#include <fstream>
+#include <sphelper.h>
+
+int _tmain(int argc, _TCHAR* argv[])
+{
+	HRESULT hr = E_FAIL;
+
+	USES_CONVERSION;
+
+	if (argc != 3) {
+		std::cout << "Error! Must provide the path to a WAV file" << std::endl
+			<< "and the path for an output txt file" << std::endl
+			<< "as the first and second command-line arguments." << std::endl;
+		return 1;
+	}
+
+	// Initialize COM
+	if (SUCCEEDED(hr = ::CoInitialize(NULL)))
+    {
+        {
+			CComPtr<ISpRecognizer> cpEngine;
+            CComPtr<ISpRecoContext> cpRecoCtxt;
+            CComPtr<ISpRecoGrammar> cpGrammar;
+            CComPtr<ISpRecoResult> cpResult;
+			CComPtr<ISpStream> cpStream;
+
+			hr = cpStream.CoCreateInstance(CLSID_SpStream);
+			hr = cpStream->BindToFile(argv[1], SPFM_OPEN_READONLY, NULL, NULL,
+										SPFEI(SPEI_RECOGNITION) | SPFEI(SPEI_END_SR_STREAM));
+
+			// Create in-proc recognizer...
+			hr = cpEngine.CoCreateInstance(CLSID_SpInprocRecognizer);
+            hr = cpEngine->CreateRecoContext(&cpRecoCtxt);
+			// ... and hook it up to our WAV file
+			hr = cpEngine->SetInput(cpStream, TRUE);
+
+			hr = cpRecoCtxt->SetNotifyWin32Event();
+			// Ignore non-recognition events, except end-of-stream
+			hr = cpRecoCtxt->SetInterest(SPFEI(SPEI_RECOGNITION) | SPFEI(SPEI_END_SR_STREAM),
+				                         SPFEI(SPEI_RECOGNITION) | SPFEI(SPEI_END_SR_STREAM));
+			hr = cpRecoCtxt->CreateGrammar(0, &cpGrammar);
+			// Enable general dictation mode
+			hr = cpGrammar->LoadDictation(NULL, SPLO_STATIC);
+
+			CSpEvent spEvent;
+			CSpDynamicString dstrText;
+
+			std::ofstream ofile(argv[2], std::ios::trunc);
+
+			std::cout << "Starting speech recognition..." << std::endl;
+			hr = cpGrammar->SetDictationState(SPRS_ACTIVE);
+			while(S_OK == cpRecoCtxt->WaitForNotifyEvent(INFINITE)) {
+				while(S_OK == spEvent.GetFrom(cpRecoCtxt)) {
+					switch(spEvent.eEventId) {
+						case SPEI_RECOGNITION:
+							if (SUCCEEDED(spEvent.RecoResult()->GetText(SP_GETWHOLEPHRASE,
+																		SP_GETWHOLEPHRASE,
+																		TRUE, &dstrText, NULL))) {
+								ofile << W2A(dstrText) << "\n";	
+							}
+							break;
+
+						case SPEI_END_SR_STREAM:
+							goto recognition_done;
+					}
+				}
+			}
+recognition_done:
+			std::cout << "Cleaning up..." << std::endl;
+			ofile.close();
+			hr = cpGrammar->SetDictationState(SPRS_INACTIVE);
+			hr = cpGrammar->UnloadDictation();
+			hr = cpStream->Close();
+			
+		}
+	}
+
+	// Clean up COM
+	::CoUninitialize();
+	return 0;
+}
+
Index: /speech/TranscribeCPP/Transcribe.vcproj
===================================================================
--- /speech/TranscribeCPP/Transcribe.vcproj (revision 487)
+++ /speech/TranscribeCPP/Transcribe.vcproj (revision 487)
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="Transcribe"
+	ProjectGUID="{B8FFC483-61F8-4EA8-A651-6F165D3F4D11}"
+	RootNamespace="Transcribe"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			UseOfATL="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0\Include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\stdafx.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\Transcribe.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\..\..\..\..\..\Program Files\Microsoft\Speech SDK 5.1\Include\sphelper.h"
+				>
+			</File>
+			<File
+				RelativePath=".\stdafx.h"
+				>
+			</File>
+			<File
+				RelativePath=".\targetver.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+		<File
+			RelativePath=".\ReadMe.txt"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /speech/SayCSharp/Say.cs
===================================================================
--- /speech/SayCSharp/Say.cs (revision 487)
+++ /speech/SayCSharp/Say.cs (revision 487)
@@ -0,0 +1,53 @@
+﻿using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Speech;
+using System.Speech.Synthesis;
+//using System.Speech.Recognition;
+using System.Text.RegularExpressions;
+
+namespace Say
+{
+    class Say
+    {
+        static void Main(string[] args)
+        {
+            if (args.Length == 0)
+            {
+                System.Console.Out.Write(
+                    "Please provide text input for the computer to speak.\n"
+                    + "Input methods include passing Say.exe a filename,\n"
+                    + "or simply calling it like this:\n"
+                    + "\tSay.exe speak this text.");
+                return;
+            }
+
+            SpeechSynthesizer ss = new SpeechSynthesizer();
+            int argLen = args.Length;
+
+            // If the last thing looks like a WAV file, set that as the output file
+            if(Regex.IsMatch(args[argLen - 1], @"\.wav", RegexOptions.IgnoreCase))
+            {
+                ss.SetOutputToWaveFile(args[argLen - 1]);  
+                --argLen; // decrement argLen so that the filename isn't read aloud
+            }
+
+            // If the first thing is a file, read from it.
+            if (File.Exists(args[0]))
+            {    
+                string fileText = File.ReadAllText(args[0], Encoding.Default);
+                ss.Speak(fileText);
+            }
+            else
+            {
+                StringBuilder sb = new StringBuilder();
+                for(int i = 0; i < argLen; ++i) {
+                    sb.Append(args[i] + " ");
+                }
+                string argString = sb.ToString() + ".";
+                ss.Speak(argString);
+            }
+        }
+    }
+}
Index: /speech/SayCSharp/Say.sln
===================================================================
--- /speech/SayCSharp/Say.sln (revision 487)
+++ /speech/SayCSharp/Say.sln (revision 487)
@@ -0,0 +1,20 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual C# Express 2008
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Say", "Say.csproj", "{5732F91C-FD6D-42F9-98DF-E2C00F1C816D}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{5732F91C-FD6D-42F9-98DF-E2C00F1C816D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5732F91C-FD6D-42F9-98DF-E2C00F1C816D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5732F91C-FD6D-42F9-98DF-E2C00F1C816D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5732F91C-FD6D-42F9-98DF-E2C00F1C816D}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: /speech/SayCSharp/Say.csproj
===================================================================
--- /speech/SayCSharp/Say.csproj (revision 487)
+++ /speech/SayCSharp/Say.csproj (revision 487)
@@ -0,0 +1,85 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{5732F91C-FD6D-42F9-98DF-E2C00F1C816D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Say</RootNamespace>
+    <AssemblyName>Say</AssemblyName>
+    <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Speech">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Say.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /speech/SayCSharp/Properties/AssemblyInfo.cs
===================================================================
--- /speech/SayCSharp/Properties/AssemblyInfo.cs (revision 487)
+++ /speech/SayCSharp/Properties/AssemblyInfo.cs (revision 487)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Say")]
+[assembly: AssemblyDescription("Invoke Text To Speech on input text")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Ben Karel")]
+[assembly: AssemblyProduct("Say")]
+[assembly: AssemblyCopyright("Copyright ©  2008 eschew.org")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("5b688e4f-0266-4484-a159-db9dcd267426")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("0.0.0.2")]
+[assembly: AssemblyFileVersion("0.0.0.2")]
Index: /speech/TranscribeCSharp/Program.cs
===================================================================
--- /speech/TranscribeCSharp/Program.cs (revision 487)
+++ /speech/TranscribeCSharp/Program.cs (revision 487)
@@ -0,0 +1,59 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+//using System.Speech;
+using SpeechLib;
+
+namespace Transcribe
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            return;
+            if (args.Length != 1 || !File.Exists(args[0]))
+            {
+                System.Console.Out.WriteLine("Must supply valid filename at command line");
+            }
+            else
+            {
+                SpSharedRecognizer ssr = new SpSharedRecognizer();
+                
+                SpInProcRecoContext rContext = new SpInProcRecoContext();
+                rContext.Pause();
+                //rContext.Recognition += new _ISpeechRecoContextEvents_RecognitionEventHandler(
+                //        RecoContext_Recognition);
+
+                rContext.Recognizer.SetPropertyNumber("AdaptationOn", 0);
+                
+                // Create dictation grammar
+                ISpeechRecoGrammar g = rContext.CreateGrammar(42);
+                g.DictationLoad(null, SpeechLoadOption.SLOStatic);
+                
+                ushort rus;
+                System.Guid aGuid;
+                WaveFormatEx wfe;
+                SpStream fs = new SpStream();
+                fs.BindToFile(ref rus, SPFILEMODE.SPFM_OPEN_READONLY,
+                    ref aGuid, ref wfe, 38 /*SPEVENTENUM.SPEI_RECOGNITION*/);
+                //rContext.Recognizer.AudioInputStream = fs;
+                g.DictationSetState(SpeechRuleState.SGDSActive);
+
+                
+                rContext.Resume();
+                
+            }
+            
+        }
+/*
+        static public void RecoContext_Recognition(int StreamNumber,
+            object StreamPosition,
+            SpeechRecognitionType RecognitionType,
+            ISpeechRecoResult Result)
+        {
+            int index;
+        }
+ * */
+    }
+}
Index: /speech/TranscribeCSharp/Transcribe.csproj
===================================================================
--- /speech/TranscribeCSharp/Transcribe.csproj (revision 487)
+++ /speech/TranscribeCSharp/Transcribe.csproj (revision 487)
@@ -0,0 +1,100 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{74F8621F-0050-4DEB-B4A6-5988F199B6F1}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Transcribe</RootNamespace>
+    <AssemblyName>Transcribe</AssemblyName>
+    <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Speech">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <COMReference Include="SpeechLib">
+      <Guid>{C866CA3A-32F7-11D2-9602-00C04F8EE628}</Guid>
+      <VersionMajor>5</VersionMajor>
+      <VersionMinor>0</VersionMinor>
+      <Lcid>0</Lcid>
+      <WrapperTool>tlbimp</WrapperTool>
+      <Isolated>False</Isolated>
+    </COMReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /speech/TranscribeCSharp/Properties/AssemblyInfo.cs
===================================================================
--- /speech/TranscribeCSharp/Properties/AssemblyInfo.cs (revision 487)
+++ /speech/TranscribeCSharp/Properties/AssemblyInfo.cs (revision 487)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Transcribe")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Transcribe")]
+[assembly: AssemblyCopyright("Copyright ©  2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("93df8eed-61aa-4ab9-b2e8-59c2bb033625")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
