Frequently Asked Technical Questions

Technical FAQs

Speech Server

SDK

This topic contains frequently asked questions and answers about using Microsoft Speech Server (MSS).


Q.Can I use Windows Network Load Balancing (NLB) with MSS if IPsec is configured?
A.

No. You cannot run NLB within an MSS computer network that has Internet Protocol Security (IPSec) configured. IPSec is based on an end-to-end security model, establishing trust and security from a source IP to a destination IP address. Typically, both sides require IPSec configuration, called an IPSec policy, to set options and security settings that will allow two computers (TAS and SES) to agree on how to secure traffic between them. NLB relies on the IP address and port of the source. With IPSec, this information is encapsulated and unavailable to NLB, thus the load balancing fails. You can work around this issue by creating an exemption that excludes the TAS and SES computers from the IPSec policy. For more information, see this Microsoft Knowledge Base article.

Q.Can I install MSS on a standalone computer so that it functions without external network resources?
A.

Yes. Follow these steps:

Install MSS Standard Edition.

Install the Speech Controls and your speech application, including all required resources such as grammars, on the same server as MSS.

Set up TAS and SES for use in a workgroup. (For instructions, see "Authentication in a Workgroup or a Windows NT 4 domain" under "Security Considerations" in Microsoft Speech Server Help.)

Set the TAS StartPageIn property to http://127.0.0.1/<your start page>

Set the TAS Speechserver property to http://127.0.0.1/SES/Lobby.asmx

Set the SES AudioConnectionIP property to 127.0.0.1

Note: You cannot use localhost or the computer's network name; you must use 127.0.0.1.

For more information about the properties in this procedure, see "Windows Management Instrumentation Reference" in Microsoft Speech Server 2004 Help.

Q.How can I access the Microsoft Management Console (MMC) snap-in for Microsoft Speech Server (MSS)? It doesn't show up on my Start menu.
A.

To add the MMC snap-in for MSS

Click Start, click Run, type mmc, and then press ENTER.

On the File menu, click Add/Remove Snap-in, and then click Add.

In the list, select Microsoft Speech Server 2004, click Add, and then click Close.

Click OK.

Q.Is there any particular starting order for Speech Engine Services (SES), Telephony Application Services (TAS), and telephony interface manager (TIM) in a Microsoft Speech Server (MSS) environment?
A.

The order does not matter as long as SES is started first. Typically, SES is started automatically when MSS is installed. After installation, SES can be started through the Microsoft Management Console (MMC) snap-in for MSS. TAS is dependent on TIM, but starting TAS will automatically start TIM, if TIM has not already been started. No calls will be answered until all three services are running.

Q.How do I configure Telephony Application Services (TAS) to use remote Speech Engine Services (SES)?
A.

To configure TAS to use a remote SES computer

1.

Open the MMC Administration console. (Click Start, point to All Programs, point to Microsoft Speech Server 2004, and then click MSS Management Console. If you do not see the MSS Management Console in the menu, you can add it by following the procedure above "To add the MMC snap-in for MSS.")

2.

Double-click a computer that is running TAS.

3.

Select the Telephony Services Configuration tab.

4.

In the Inbound application start page box, enter the URL to the remote SES computer, or the URL to the load balancer for a SES server farm.

5.

Click OK.

Q.Microsoft Speech Server has 38 Speechify.exe tasks running in the Windows Task Manager. Is this normal?
A.

Yes. Speechify is SpeechWorks® TTS object. There are 36 pre-started TTS instances plus two parent processes.

Q.How do I verify if the Speech Engine Services (SES) is functioning correctly?
A.

Check the following:

Make sure that the service is running. Click Start, point to Control Panel, point to Administrative Tools, and then click Services. Verify that the Speech Engine Services status is Started. If it is not, right-click Speech Engine Services, and then click Start. If necessary, do the same for Telephony Application Services.

Check the Application Event log to see if any warnings were reported.

Check the performance counters for SES Broker and SES Lobby to ensure that the number of engines you requested is running.

Q.There are many false/self barge-ins on my Microsoft Speech Server installation. What can be done to improve this?
A.

Try these fixes:

The default bargeintype on TAS is speech. The bargein event is thrown from the Dialogic card, as specified in the SpeechBargein property. You can change this property's default value to use the speech bargein event from the speech recognition engine rather than from the telephony card. This may increase latency but it typically improves barge-in accuracy.

To change the SpeechBargein property's default value:

Open the MMC Administration console. (Click Start, point to All Programs, point to Microsoft Speech Server 2004, and then click MSS Management Console. If you do not see the MSS Management Console in the menu, you can add it by following the above procedure "To add the MMC snap-in for MSS.")

Double-click a computer that is running TAS.

Select the Telephony Services Configuration tab.

Under Speech barge in, select Recognition engine, and then click OK. The Speech barge in setting applies only to applications that specify a prompt with bargeintype="speech".

Change the bargeintype in your application from speech to grammar.

Alter the sensitivity of the speech detector on the telephony card using the MMC snap-in for Intel NetMerge telephony interface manager (TIM):

To access the TIM snap-in:

Click Start, click Run, type mmc, and then press ENTER.

On the File menu, click Add/Remove Snap-in, and then click Add.

In the list, click Intel NetMerge Call Manager, click Add, and then click Close.

In the Add/Remove Snap-in dialog box, click OK.

Right-click SpeechPlayThreshold, and then click Edit Value to change the value as required. The SpeechPlayThreshold property controls the sensitivity of the voice activity detector (VAD) on the card. Allowable values are in the range +3 dBm to -54 dBm. The default value is -40 dBm. Changing this value may cause you to receive a false rejection when the user speaks correctly.

Q.Why doesn't the CallTransfer Application Speech Control work?
A.

To use this control, make sure that you have a T1 robbed-bit line that connects to the server, and that the Dialogic card is configured properly.

Q.How do I allocate a fixed number of SALT Interpreters on the TAS server?
A.

TAS allocates SALT Interpreters dynamically, based on the load and memory utilization. Microsoft strongly recommends that you not override this dynamic SALT Interpreter Management setting. However, you can do so by allocating a fixed number of channels using the Windows Management Instrumentation (WMI) properties. See the MSS Help documentation for more information.

Q.Which Global Call version do I need to install for running a T1-CAS line, which is required for a call-transfer facility?
A.

Global Call Protocol package 3.0. You must install GC3.0 prior to the TIM for all installations.

Q.How do I view the source of the HTML file that the SALT Interpreter on MSS receives from the IIS Web server?
A.

Telephony Application Simulator (TASim) enables you to view HTML source code when testing your applications. TASim is a SALT interpreter that enables developers to simulate using a telephony application on a telephony server, including dialog flow and call management. TASim is included with Microsoft Speech Application SDK 1.0 (SASDK), which is provided with Microsoft Speech Server (MSS).

Q.My application contains large grammars, which cause callers to experience high latencies as the grammars are loaded. How can I improve the response time?
A.

You can preload these resources on the Speech Engine Services (SES). The PreloadedResourceManifest property is exposed in the Microsoft Management Console (MMC) snap-in for Microsoft Speech Server (MSS). The application manifest is an XML page that lists grammars and prompt databases that the application uses. At application startup, SES retrieves the application manifest and loads the listed resources.

Q.If Speech Server cannot connect to a remote Web server (for example, due to network connectivity issues), what is the default error handling of this situation?
A.

You will receive 404 errors in the Event log on the Microsoft Speech Server. There are two other possibilities as well:

1.

If the Web application or the Web server becomes unavailable during a call, then (if configured correctly through the speech application), a system error page can be executed to handle this condition.

2.

Eventually, if the Web server or Start page remain unavailable for a long period of time, there will not be any SALT Interpreters available to answer calls. In this case, the TIM will not have any SALT Interpreters to assign new incoming calls to.

Q.How do you specify the system error page for Telephony Application Services (TAS) when the server (on which TAS is installed) is unable to connect to a Web server? What if there is more than one error page defined?
A.

For Microsoft Speech Server (MSS), TAS allows a speech application developer to specify a system error page using the HTML <meta> element.

For example: <meta http-equiv="error-page" content="errorpage_url"/>

When the TAS SALT Interpreter parses this declaration, it will download and cache the referenced error page and any referenced .wav files on the error page before the onload event is fired on the parent page.

If more than one error page <meta> element is defined on a page, the first one is used and all others are ignored.

Further details for this topic can be found in the Speech Application Server SDK (SASDK) Help documentation.

Q.The first QA takes a long time before the prompt plays. How can I speed this up?
A.

When the first QA is instantiated, the Speech Engine Services (SES) computer must download the prompt database and grammar files from the Web server, compile them, and then load the compiled grammars and prompts into memory. Large grammars and prompt databases can be preloaded before they are requested using the PreloadedResourceManifest property of SES. You can also precompile the grammars prior to loading using the tool GC that ships with the SDK. Then reference the precompiled binary from within the QA.

Q.I've set the value of the beep property of a reco control contained in a QA control to true, but a beep is not played before recording begins. Is this expected behavior?
A.

Yes, this is expected behavior. Disable bargein to hear the beep.

Q.If the first QA of the application: Has bargein, async and playonce attributes - and - Performs no recognition; Then the prompt is uninterruptible. Is this behavior by design?
A.

Yes, this is by design according to the SALT specification, section 2.1.2.1.

Q.Is Hook Flash (Flash Hook) call transfer supported?
A.

Yes. Hook Flash is supported for analog and Communicating Applications Specification (CAS) applications, but not over an Integrated Services Digital Network (ISDN).

Q.Is AT&T *8 call transfer supported?
A.

Yes, but only by sending DTMF tones using a CSTA <GenerateDigits> message.

Q.Are 2B channel ISDN transfers supported?
A.

Yes.

Q.Can I use a pause in Telephony Application Services (TAS) to take a channel out of service, thereby allowing switches to route calls to a different TAS?
A.

No. This should be handled by telephony interface manager (TIM).

Q.What does the following error message about cookies mean? Error Message: A potentially dangerous Request.Cookies value was detected from the client (&eee="_18lBtVws+7ONE=").
A.

If characters such as blanks and punctuation are passed in an HTTP stream using Request.Cookies, they can be misinterpreted at the receiving end. URL encoding converts characters that are not allowed in a URL into character-entity equivalents; URL decoding reverses the encoding. For example, when embedded in a block of text to be transmitted in a URL, the less-than character and the greater-than character (< and >) are encoded as %3c and %3d, respectively.

Use the HttpUtility.UrlDecode(String) method instead.

Q.The VMSize for TASWorker remains high and constant (371,876) long after all lines have hung up. Is this expected behavior?
A.

Yes. The Common Language Runtime (CLR) GC does not typically release virtual memory.

Q.What is the normal handle count for SESWorker?
A.

Approximately 5000.

Q.
A.
Top of pageTop of page