Migrating Applications to Speech Server
This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.
The following sections explain how and why to migrate applications from Speech Server 2004 and Speech Server 2004 R2 to run on Office Communications Server 2007 Speech Server.
Note
Unless otherwise stated, the term Speech Server 2004 encompasses both Speech Server 2004 and Speech Server 2004 R2, and the term Speech Server refers to Office Communications Server 2007 Speech Server.
Reasons to Migrate
You can run an application written using Speech Server 2004 on Speech Server, provided the application is running on a Speech Server 2004 Web server; however, you can only modify or tune the application using Speech Server 2004 tools. For information about how to migrate a tuning database to Speech Server, see Migrate Speech Server 2004 Data with BIT Package A.
Speech Server features several improvements over previous versions, including:
Managed Code ??? Speech Server enables you to develop applications using a managed API so you do not need to learn more than one managed language. In addition, the application runs on a single computer, so you do not need to take client-server considerations into account while developing your speech application. This does not preclude you from accessing remote back-ends or Web services, but it does serve to simplify VUI development.
Improved Development Tools ??? Speech Server provides a voice response application Workflow Designer, which provides a GUI for designing the dialog flow and setting properties on speech activities. Speech Server also includes example-based authoring tools, debugger enhancements, and numerous logging and reporting improvements and is tightly integrated with Visual Studio 2005.
Improved IT Professional Tools ??? Speech Server includes:
- Comprehensive Microsoft Operations Manager (MOM) pack
- Microsoft Management Console (MMC) snap-ins
- Microsoft Error Reporting Service
- Command-line scripting
- Microsoft Windows Management Instrumentation (WMI) enabled for scripting
- Active Directory marker
- Web Services (WS-*)
- Security Configuration Wizard
VoIP Support ??? Voice over IP (VoIP) support is built in to Speech Server.
Language Support ??? Speech Server supports five languages: English (United States) en-US, English (United Kingdom) en-UK, French (Canada) fr-CA, Spanish (United States) es-US, and German (Germany) de-DE.
64-bit Support ??? Speech Server runs on both 32-bit and 64-bit platforms.
Concept Recognition Engine (CRE) Support ??? Speech Server introduces Statistical Language Modules (SLM) and Conversational Grammars. You can take full advantage of the complete CRE solution by upgrading to Speech Server.
Improved Performance and Accuracy ??? The accuracy of the Speech Server speech recognition engine is improved through data boosting, discriminative training algorithms, feature transforms, and larger models. In addition, scalability and performance are improved through enhanced design-time grammar precompilation, sharing of grammar data at the API and engine levels, and better interprocess communication.
Migration Scenarios
You can migrate applications written using Speech Server 2004 to run on Speech Server using the following scenarios:
- Scenario 1: Run Speech Server 2004 Web Server with Speech Server
- Scenario 2: Port an Application to Speech Server
- Scenario 3: Wrap an Application in Managed Code
- Scenario 4: Rewrite an Application in Managed Code
- Scenario 5: Port an Application to Speech Server and Wrap it in Managed Code
Scenario 1: Run Speech Server 2004 Web Server with Speech Server
In this scenario, you leave the application running on the Speech Server 2004 Web server. The computer running Speech Server points to the Speech Server 2004 Web server and the application functions unchanged. This scenario requires no changes to the application, such as code changes, recompilation, or redeployment.
While this scenario poses the least risk to the application, there are drawbacks. For example, Visual Studio .NET 2003 solutions must be converted to open in Visual Studio 2005. When converted, the solution is no longer compatible with Visual Studio .NET 2003. If you continue using Visual Studio .NET 2003 to develop existing applications and develop new applications in Speech Server, you must run both Visual Studio .NET 2003 and Visual Studio 2005. In addition to managing two versions of Visual Studio, developers cannot use new Speech Server tools such as Conversational Grammar Builder, streamlined grammar libraries, and the Session Initiation Protocol (SIP) phone simulator.
Speech Server introduces two new languages: English (United Kingdom) en-UK and German (Germany) de-DE. However, these new languages are unavailable to applications that are migrated to Speech Server using this scenario.
Scenario 2: Port an Application to Speech Server
In this scenario, you port the application written using Speech Server 2004 to Speech Server as a Web application. This approach does not use the new managed code paradigm, but unlike scenario 1, the new application is a complete Speech Server solution. As such, it takes advantage of most of the new features of Visual Studio 2005 and Speech Server (all non-designer tools), as well as the new Speech Server languages.
Note
If your application has an associated Setup program, you should not migrate the Setup program. Instead, rebuild it using Speech Server after migrating the application.
To port an application to Speech Server
Convert the Visual Studio .NET 2003 solution into a Visual Studio 2005 solution.
- Update references to the Speech Controls version number.
- Make any necessary ASP.NET 2.0 changes.
For information, see Upgrade from ASP.NET 1.x.
Recompile the application.
Redeploy the application.
Converting Visual Studio .NET 2003 solutions into Visual Studio 2005 is mostly automatic. Opening the solution in Visual Studio 2005 starts the Conversion Wizard, which makes most of the necessary changes. However, the wizard does not automatically update the Speech Controls version number. You must manually change all references to version 1.0.3200.0 of the Microsoft.Speech.Web assembly to version 2.0.3200.0 by using the Replace All option on all project files.
Also, the Conversion Wizard does not automatically handle all the changes in ASP.NET 2.0. For example:
- Modify Web.Config file to remove the assembly name from the configSection element. In Visual Studio 2005, ASP.NET no longer precompiles the Web site into an assembly.
- ASP.NET 2.0 disallows circular references, such as <% Register TagPrefix=???Contacts??? TagName=???CommonSpeechElements??? Src=???CommonSpeechElements.ascs??? %>.
Also, in Visual Studio 2005, the HTML validation Show error option is selected by default. This default setting can generate compiler errors because the Speech Server 2004 Speech Controls render output that triggers numerous HTML validation errors. Fortunately, most of these errors do not interfere with the building and running of the applications and can therefore be ignored. Because these errors are misleading, you should disable the Show error option for HTML validation.
To disable the Show Error option
In Visual Studio 2005, click Options on the Tools menu, and then expand Text Editor.
Under Text Editor, expand HTML, and then select Validation.
Under the Target list, clear Show errors.
Scenario 3: Wrap an Application in Managed Code
Speech Server provides a SaltInterpreter object that lets you point a Speech Server managed code application to a Speech Server 2004 application. Using SaltInterpreter, you can move to the managed code programming model without rewriting the Speech Server 2004 application. You can extend existing Speech Application Language Tags (SALT) applications in Speech Server using the new managed programming paradigm, making minor modifications to the SALT application.
Minor modifications to the application might be necessary at the periphery. For example, slight modifications might be necessary on the first page to consume data passed into SaltInterpreter by the managed application and the opposite on the last page.
Note
The SaltInterpreter object works with Speech Server Speech Controls.
This scenario requires you to run Visual Studio .NET 2003 and SASDK 1.1 to edit the SALT portion of the application. You also need Visual Studio 2005 and Speech Server to develop the managed wrapper portion of the application.
If you choose this scenario, you do not get the benefits of Visual Studio 2005, Speech Server tools, or Speech Server languages for your existing SALT application. However, new extensions to the application, written in managed code, are able to fully benefit from these features.
You cannot call into managed code from a SALT application. However, if you first wrap the SALT application in managed code, you can call into and out of the SALT application from the managed code.
Scenario 4: Rewrite an Application in Managed Code
In this scenario, you rewrite the application in managed code. This is the only option where you take full advantage of Visual Studio 2005, Speech Server languages, and all the Speech Server tools including Workflow Designer. The prompts and grammars do not need to be rewritten.
The obvious disadvantage of this scenario is that you must essentially recreate the application call flow. Also, while you can host SALT applications on a separate Web server, managed code voice response applications must run on the computer running Speech Server.
However, this does not prevent you from creating multi-tiered managed code applications. You can continue to design multi-tiered managed code applications that call into other applications (such as a business logic application) in other tiers.
Scenario 5: Port an Application to Speech Server and Wrap it in Managed Code
This scenario is a combination of scenarios 2 and 3, where you port the application and wrap it in managed code. This approach provides flexibility and benefits at a low cost. The existing application does not need to be rewritten, and new extensions to the application can be written using Workflow Designer and managed code. This approach eliminates the need to maintain Visual Studio .NET 2003 and SASDK 1.1 and delivers the full benefits of the additional features of Visual Studio 2005 and Speech Server.
Choosing a Scenario
Which option is most appropriate depends on the specific customer's application and needs. Customers seeking to expand their application into additional languages, for example, should consider scenarios 2, 4, or 5. Customers who have no plans to change the application in any way but want to use Voice over IP (VoIP) should consider scenario 1.
Advantages/Disadvantages
This table summarizes the advantages and disadvantages of the each scenario.
Scenario | Advantage | Disadvantage | Note |
---|---|---|---|
Scenario 1 ??? Leave an application as-is on the Speech Server 2004 Web server and point Speech Server to it. |
No code changes. No recompile. No redeploy. |
Requires you to maintain Visual Studio .NET 2003 and SASDK 1.1. You do not get the benefits of Visual Studio 2005, Speech Server tools, or Speech Server languages. |
The path of least resistance. |
Scenario 2 ??? Port an application to Speech Server. Open the application in Visual Studio 2005 and run it through the Conversion Wizard. Implement necessary changes, and then recompile and redeploy it. |
Takes advantage of Visual Studio 2005, non-designer Speech Server tools, and Speech Server languages. The Visual Studio 2005 Conversion Wizard automates much of the conversion. Full Speech Server solution ??? no Speech Server 2004 components. |
Need to replace the Speech Control version number and remove circular references. Requires recompilation and redeployment. |
To see what changes are needed, see Upgrade from ASP.NET 1.x. |
Scenario 3 ??? Create a new managed code application wrapper and use SaltInterpreter to point to the Speech Server 2004 application. |
No code changes to existing code. Allows SALT and managed components to co-exist. Can extend a Speech Server 2004 application in Speech Server with minimal modifications. SaltInterpreter also interprets Speech Server Speech Controls. |
Requires you to maintain Visual Studio NET 2003 and SASDK 1.1 to edit the Speech Server 2004 application. You do not get the benefits of Visual Studio 2005, Speech Server tools, or Speech Server languages. |
You cannot call into a managed code component from within a SALT component. |
Scenario 4 ??? Rewrite an application in managed code. |
Full benefits of Visual Studio 2005, Speech Server tools including Workflow Designer, and Speech Server languages. This is the only approach that takes full advantage of Workflow Designer. |
You must rewrite your application, excluding prompts and grammars. |
This is a SALT to managed code conversion. |
Scenario 5 ??? Port an application to Speech Server and wrap it in managed code. |
Takes advantage of Visual Studio 2005, Speech Server tools, and Speech Server languages. The Visual Studio 2005 Conversion Wizard automates much of the conversion. Full Speech Server solution ??? no Speech Server 2004 components. No code changes to existing code. Allows SALT and managed components to co-exist. Can extend application in Speech Server with minimal modifications. |
Need to replace Speech Control version number and remove circular references. Requires recompile and redeploy. |
Combination of scenarios 2 and 3. |
Migration Support
Determining the best scenario for you depends on your specific application and needs. This table summarizes the reasons for upgrading to Speech Server and the level of support that each scenario provides.
Reason for Upgrading | Scenario 1 | Scenario 2 | Scenario 3 | Scenario 4 | Scenario 5 |
---|---|---|---|---|---|
Managed Code |
None |
None |
Partial |
Full |
Partial |
Improved Development Tools |
None |
Partial |
Partial |
Full |
Partial |
Improved IT Professional Tools |
None |
Full |
None |
Full |
Full |
VoIP Support |
Full |
Full |
Full |
Full |
Full |
Language Support |
None |
Full |
None |
Full |
Full |
64-bit Support |
Full |
Full |
Full |
Full |
Full |
CRE Support |
None |
None |
Partial |
Full |
Partial |
Accuracy and Performance |
Full |
Full |
Full |
Full |
Full |
Scenarios 4 and 5 provide support for all the upgrade motivations. While Scenario 4 provides the fullest support for all upgrade motivations, it is also the most expensive. Consequently, scenario 5 is recommended for the majority of Speech Server 2004 customers. You should weigh the information in this table against other factors such as:
- The cost of each option for the specific application.
- The skill sets of your developers.
- How often the application is likely to change.
Transferring Speech Server 2004 SES and TAS Settings to Speech Server
You should save all Speech Server 2004 Telephony Application Services (TAS) and Speech Engine Services (SES) settings and export them to text files before upgrading to Speech Server. After you export the settings, you must manually enter them in the Speech Server Administrator console.
To save and export Speech Server 2004 settings
Open the Speech Server 2004 Administrator console.
In the console tree, double-click Speech Server, and then double-click the applicable group.
In the details pane, right-click the TAS computer, point to All Tasks, and then click Save Settings.
Select a file location to which to save the settings, and then click Save.
Repeat steps 1 through 4 for SES.
Sample TAS Settings File
# Microsoft Speech Server 2004
# Configuration Settings
# WARNING: MANUAL EDITING OF THIS FILE IS NOT SUPPORTED AND MAY CAUSE UNEXPECTED RESULTS.
TAS=@
EnableAppSmex:FALSE
EngineAttributes:AcousticSource=Telephony
InactiveTimeout:120
Lang:en-us
LoadMemoryLimit:500
NotificationMessageQueue:
NumInterpOverride:0
NumOutInterpOverride:0
ProcessMemoryLimit:1000
RecordingDirectory:%TEMP%
RecycleCallLimit:10000
ScheduleRecycle:00:00
ScriptTimeout:10
ShutdownTimeout:600
SpeechBargein:engine
SpeechServer:http://localhost/SES/Lobby.asmx
StartPageIn:http://localhost/TAS/StartPage.htm
StartPageInRefreshTime:0
State:Running
LogSettings=@
Enabled:FALSE
Location:C:\Program Files\Microsoft Speech Server\Logs
RolloverTime:60
TrustedSite.FullTrust="FALSE"
TrustedSite.Hostname="http://localhost"
Hostname:http://localhost
__________________
TAS Property Mappings from Speech Server 2004 to Speech Server
Speech Server 2004 Property | Speech Server Property | In MMC |
---|---|---|
EnableAppSmex |
Obsolete property |
No |
EngineAttributes |
Obsolete property |
No |
InactiveTimeout |
InactiveTimeout |
Yes |
Lang |
Obsolete property |
No |
LoadMemoryLimit |
Obsolete property |
No |
NotificationMessageQueue |
NotificationMessageQueue |
Yes |
NumInterpOverride |
Obsolete property |
No |
ProcessMemoryLimit |
UpperMemoryThreshold |
No |
RecordingDirectory |
WorkingFilesLocation |
Yes |
RecycleCallLimit |
Obsolete property |
No |
ScheduleRecycle |
Obsolete property |
No |
ScriptTimeout |
Obsolete property |
No |
SpeechServer |
Obsolete property |
No |
StartPageIn |
Obsolete property |
No |
StartPageIn |
Obsolete property |
No |
StartPageInRefreshTime |
Obsolete property |
No |
State |
Obsolete property (service state is shown in the Speech Server??Administrator console) |
Yes |
Enabled |
Enabled |
Yes |
Location |
Location |
Yes |
RolloverTime |
RolloverTime |
Yes |
TrustedSite |
Obsolete property |
No |
For more information, see WMI Changes for Speech Server.
Sample SES Settings File
SES=@
AllocationTimeout:5
AllowAnonymousAccess:FALSE
AudioConnectionIP:
AudioConnectionPort:7845
AudioConnectionTimeout:60
AudioDataTimeout:30
AudioHeaderTimeout:5
DiskCacheLocation:
EnableAudioCompression:TRUE
EnableFailoverWorkerProcess:TRUE
EnablePromptEndSignal:TRUE
LowerMemoryThreshold:1200
MaxDiskCacheSize:1024
PreloadedResourceManifest:
ShutdownTimeout:300
State:Running
UpperMemoryThreshold:1600
WorkerStartupTimeout:900
SES Property Mappings from Speech Server 2004 to Speech Server
Speech Server 2004 Property | Speech Server Property | In MMC |
---|---|---|
AllocationTimeout |
Obsolete property |
No |
AllowAnonymousAccess |
Obsolete property |
No |
AudioConnectionIP |
AudioConnectionIP |
Yes |
AudioConnectionPort |
AudioConnectionMinPort AudioConnectionMaxPort |
Yes |
AudioConnectionTimeout |
Obsolete property |
No |
AudioDataTimeout |
Obsolete property |
|
AudioHeaderTimeout |
Obsolete property |
|
DiskCacheLocation |
Obsolete property |
No |
LowerMemoryThreshold |
Obsolete property |
No |
EnableFailoverWorkerProcess |
Obsolete property |
No |
EnablePromptEndSignal |
Obsolete property |
No |
LowerMemoryThreshold |
Obsolete property |
No |
MaxDiskCacheSize |
MaxDiskCacheSize |
No |
PreloadedResourceManifest |
PreloadedResourceManifest s |
Yes |
ShutdownTimeout |
ShutdownTimeout |
No |
State |
Obsolete property (service state is shown in the Speech Server??Administrator console) |
Yes |
UpperMemoryThreshold |
UpperMemoryThreshold |
No |
WorkerStartupTimeout |
WorkerStartupTimeout |
No |
For more information, see WMI Changes for Speech Server.
See Also
Other Resources
Speech Application Development Guide
Migrate Speech Server 2004 Data with BIT Package A