Speech applications that improve caller experience

Sample customers and partners:

OOPS. Your Flash player is missing or outdated.Click here to update your player so you can see this content.
Home arrow Services arrow Tools
The Importance of Effective Tools

Great speech applications just don't happen by accident. Great speech applications are the result of a rigorous and systematic development approach supported by an extensive set of development tools designed specifically for guaranteeing the best possible application performance. While most of the industry has been focused on developing tools that aim to enable non speech experts to easily develop simple applications, we have for over four years focused on developing tools that enable us to build complex applications that not only are rock-solid, but that deliver unparalleled user experience and automation rate.

Why have we been pursuing this contrarian approach to development tools? Because we believe that widespread market adoption of speech applications depends on their ability to deliver fast, efficient, and user-friendly service.

Our tools have been developed in order to support every step of our speech application development process, with special emphasis on four all-important themes:

Automated testing

We believe it's not the role of users to find and report bugs in a speech application. It's therefore critical that speech applications be thoroughly tested before being deployed. We also believe that, although human tests are absolutely necessary, anything that can be automatically tested should be. We have found time and again that automated tests make it possible to easily and rapidly find and correct problems, usually as soon as they have been introduced. Undoubtedly, without extensive automated testing, many such problems would find their way into the deployed application, therefore not only annoying callers, but requiring unnecessary bug fixing and testing cycles.

Reusable dialog patterns

Capturing and expressing recurring dialog patterns in a speech application has always been a challenge. VUI designers rarely use tools that help capture these patterns, resulting in specification documents that are larger than required, and are hard to maintain and implement. Moreover, traditional development tools are usually poor at expressing these patterns, forcing programmers to extensively duplicate code, leading to applications that not only are error-prone, but are difficult to maintain and evolve.

Nü Echo's Eclipse-based, graphical environment for developing speech applications specifically addresses this problem. This tool completely transforms the process of designing and implementing dialogs by specifically orienting the design process around the identification, definition and reuse of hierarchical dialog patterns. This results in a very compact design where any common dialog behavior only needs to be described once.

Data-driven design, optimization, and testing

Speech data — whether data from our extensive speech corpora, data collected specifically for an application, pilot test data, or production data — are the foundation of a high performance speech application. These data are extensively used throughout the application development cycle, be it to tune grammar coverage and accuracy, tune semantic analysis components, or find thresholds. They enable us to measure the impact of any change made to the application. They are an integral element of the quality assurance process used for each new release of the application. They can also be used at the beginning of a project in order to run simulations that enable us to find the best dialog strategies for the application.

Without the ability to efficiently and rigorously use large amounts of speech data — using the necessary tools and processes — it would be just about impossible to deliver high performance applications.

Performance analysis and tuning

The performance of an application can't be tuned if it can't be analyzed. This is why we have over the years developed a complete suite of tools to measure, analyze, and tune the performance of an application as a whole and/or of any of its individual components.