Two months after launching NuGram IDE Basic Edition, the Nu Echo team is proud to announce the general availability of NuGram IDE Professional Edition, as well as NuGram Server. You can read the official press release here.

We are also simultaneously releasing an update of NuGram IDE Basic Edition, providing many minor enhancements and bug fixes. Simply follow the download instructions.

NuGram IDE Professional Edition

Targeted at serious developers and professional services organizations with rigorous development processes, NuGram IDE Professional Edition offers all the features of the Basic Edition, plus:

  • A collection of advanced features that provide significant added value and further increase development productivity and grammar quality.
  • All the batch tools required in order to support application build processes or scheduled grammar update processes.
  • A development version of NuGram Server, which makes it possible to test dynamic grammars with any speech application.
  • Access to the download site, upgrades, and support tickets.

NuGram Server

NuGram Server is a robust and scalable engine that offers runtime services to speech-enabled applications through a simple HTTP-based protocol. Its architecture makes it readily usable by all speech-enabled applications, as well as text applications. It also offers flexible control over grammar caching strategies to optimize the use of ASR resources. NuGram Server currently supports the following services:

  • Instantiation and generation - Using this service, dynamic grammars are instantiated and converted to the desired format (ABNF, GrXML, etc.).
  • Interpretation - Using this service, textual sentences are parsed using static or dynamically-generated grammars and the resulting semantic interpretation is returned.

Support and feedback

You have some questions? You want to give us feedback? We’d like to hear from you! Send all your inquiries to nugram-support@nuecho.com. You can also interact with us on Twitter.

April 7th, 2009 No Comments

by Dominique Boucher

Not just for speech applications

As you certainly know by reading this blog, our main focus at Nu Echo is on developing the best possible speech applications and tools. That’s why the NuGram Platform is primarily targeting speech application developers.

Our vision, however, extends beyond just speech applications. The NuGram Platform can also be used for text-based applications – for instance SMS or IM-based applications – or even desktop applications.

An example of this was recently provided by researchers at the University of Saarland, Germany. They are using the NuGram Platform for a very interesting application: The Virtual Cocktail Guide. Markus Dräger, who wrote the NL interface, describes the project as follows:

Our interactive system is called ‘Virtual Cocktail Guide’ (VCG), and it is designed to convey information about cocktails in an entertaining and playful way. In doing so, users of the system will also be given the opportunity to prepare actual cocktails. The system consists of a number of different physical objects, i.e., a shaker, different liquor bottles, ice cubes and any other ingredients needed to prepare different cocktails. The “face” of the system is an animated virtual character called Sam, who greets new potential users upon their arrival and gives an overview of the basic functionality of the system.

When the user chooses to prepare a certain cocktail, Sam will engage them in a dialogue, interactively providing instructions, help and/or further information during every single step of the preparation.

The part of the system that I am working on in particular is the component that checks whether the user follows the instruction given by the system, e.g., whether they provide the right amount of a given ingredient. The first step in doing so is to obtain this kind of information from the cocktail recipes that are pre-parsed from online cocktail websites and stored in written natural language. To this end, I have written a grammar that is able to parse those cocktail recipes and returns semantic information via SISR-Tags. For example, the sentence “Please pour 2cl of vodka into the shaker” will result in a semantic structure looking like this: {action:”pour”,ingredient:”vodka”, target:”shaker”, amount:”2cl”}. This semantic information is fed straight into a rule engine, as are the actions performed by the user. The engine then does some reasoning over the action prescribed by the recipe and the actual action of the user, and deduces whether they match completely or partially (or even not at all). Based on the result of the reasoning process, the system then can react with an appropriate dialogue move.

Grammar development, publishing and the semantic interpretation are -of course- accomplished with the help of NuGram IDE  and the free hosted server, which both did a great job in our application so far.

It’s always nice to see people using our tools in totally innovative, unexpected ways.

Markus Dräger can be reached by email at “markus.draeger AT stud.uni-saarland.de”. The Virtual Cocktail Guide website describing the whole research project will be launched soon. I’ll post a link here when it will be online.

March 31st, 2009 1 Comment

by Dominique Boucher

NuGram IDE Basic Edition is available now!

Following a 6-month beta program involving hundreds of users worldwide, the Nu Echo team is proud to announce the general availability of NuGram IDE Basic Edition. For those of you who are using NuGram IDE Beta, you should update now because the beta version expires on April 1st.

We would like to take this opportunity to thank all beta users out there for their feedback on the various beta versions of NuGram IDE. Not only have you allowed us to make the Basic Edition a much better product, but you have contributed to making NuGram IDE the most widely used grammar development environment ever.

We’re extremely proud of the fact that people have been successfully using NuGram IDE for grammar development targeting a wide variety of speech recognition technologies (including Nuance GSL, Nuance OSR, Loquendo, IBM, LumenVox, and even Microsoft), as well as in conjunction with an even wider variety of VoiceXML service creation environments (including VoiceObjects, Cisco Unified Call Studio, openVXML, Nortel SCE, Avaya Dialog Designer, several Eclipse-based environments, and many others). This truly confirms NuGram’s status as the universal grammar platform for speech - and even text - applications.

NuGram IDE Basic Edition is available free of charge and can now be downloaded directly from the NuGram site (now that the Beta period is over, no registration is required to install it). The complete documentation is also fully available online.

More to come really soon!

The availability of NuGram IDE Professional Edition and NuGram Server will be announced separately in the upcoming weeks. NuGram IDE Professional Edition will introduce many new exciting features that dramatically accelerate the writing, debugging, and testing of speech grammars, all features that will rapidly become invaluable to serious grammar developers and professional service organizations. NuGram Server will add optional runtime capabilities to the platform. It will for instance make it possible to generate grammars on-the-fly based on application data or to semantically interpret text sentences, a feature that has been shown to be quite effective for text-based dialog applications such as instant messaging or SMS.

Stay tuned!

Finally, expect some cool, community-oriented features to be added soon to Hosted NuGramServer.

Support and feedback

You have some questions? You want to give us feedback? We’d like to hear from you! Send all your inquiries to nugram-support@nuecho.com. You can also follow us on Twitter.

December 16th, 2008 No Comments

by Dominique Boucher

NuGram IDE Beta-20081211 just released

The Nu Echo team is pleased to announce the release of a new beta version of NuGram IDE.

Highlights

In addition to a number of bug fixes, the following features have been added, in response to specific requests from users:

  • Grammar content. The type of a grammar (XML, ABNF, GSL) can be associated with specific filename extensions to help the tools properly load grammars. For instance, while the Nuance OSR engine uses the “.gram” extension to designate compiled grammars, this extension is customarily used to designate ABNF grammars with the IBM WebSphere Voice Server recognition engine. The ability to change file extension associations facilitates the use of NuGram IDE in various environments.
  • Translation rules. A very flexible, project-specific mechanism has been added to control how external rule references are interpreted by the various tools (debugging tools, conversion tools, etc.). For example, references to external .abnf grammars (references of the form $<path/grammar.abnf>) can be automatically converted to references of the form $<path/grammar.grxml> at grammar conversion time. Or references to a compiled .gram SLM grammar can be replaced by a reference to a simple ABNF grammar at grammar development time, without having to change the source grammar.
  • Enhanced automatic builder. It is now possible to specify an output folder for the generated XML/GSL grammars, as well as which folders contain the grammars to convert. By putting generated grammars in specific folders, the folders containing the source ABNF grammars do not get polluted by derived resources (that are usually not put under source control - CVS, SVN, and the like since they can be re-created from the source grammar). This also makes it easier to package grammars for the application - the application build process can simply copy a single directory structure without first having to remove some files.
  • Configurable validations. The feedback level of some validation issues can now be configured in the preferences.
  • Enhanced GSL export/conversion. When exporting/converting grammars to GSL, the resulting grammars are now much better formatted.
  • Better conformance with SRGS. Several conformance problems have been fixed.
  • Nuance 9 extensions. The tools can be configured to support the Nuance 9 extensions to SISR (SWI properties).
  • LumenVox extensions. The tools can be configured to properly handle LumenVox phonetic spellings.
  • SISR 2004 Working Draft support. The tools can be configured to support the SISR 2004 Working Draft syntax for rule variables.This feature is especially useful for grammar developers targeting the IBM WebSphere Voice Server recognition engine, which doesn’t support the latest version of the SISR specification.

Download now!

We strongly encourage people to download this new version as soon as possible as it contains many important new features and bug fixes. And as usual, we solicit your feedback to help improve our product and better support your grammar development process.

December 8th, 2008 No Comments

by Dominique Boucher

Refactoring tools and grammar development

Refactoring tools are incredibly popular in the programming community. Most modern programming environments provide refactoring tools of various degrees of sophistication.

But what are refactoring tools? In short, they are tools that modify programs without changing their runtime semantics. In other words, refactoring tools must not introduce an observable difference in the execution of the program. They help abstract common code, change variable names, rename procedures or methods, etc.

Refactoring tools help developers make repetitive code restructuring tasks that would otherwise be highly error-prone if done by hand. Without such tools, even the simplest form of refactoring - renaming a variable in a file - can easily cause unexpected problems if done using a simple search and replace. Now imagine renaming a public method in an object-oriented language, where the method can be invoked from many different places in the whole project source code…

Refactoring applied to speech recognition grammars

Similarly to programming language refactoring tools, grammars refactoring tools help modify grammars without changing the language they accept and the values they return when interpreting sentences. There are a number of common tasks involved when writing speech recognition grammars that can benefit from refactoring tools. Here are a few:

  • Rule renaming. Naming things is hard. I am a programmer myself and I always find it hard to come up with the most precise name for a class, a variable, a procedure, or method. Naming grammar rules is just as hard. The programming environment should make it easy to rename a rule when we find a better name, in such a way that we don’t break the grammar. In other words, the renaming tool must rename the rule definition, as well as all its references (and potentially the root header). But just as important, semantic tags must also be taken into account when renaming a rule. How many times have you forgotten to modify the semantic tag after renaming a rule? A proper refactoring tool must therefore ensure that references to the rule in all semantic tags be modified as well.
  • Slot renaming. Likewise, slot names are often renamed. A renaming tool must ensure that all references in the defining rule as well as the references in other rules be changed at once.
  • Rule extraction. Another common task for the grammar writer is the extraction of a rule expansion to create a new rule. Grammars are often built incrementally. The grammar writer begins by coding a few rules, discovers potential for reuse, and creates new rules encapsulating these reusable parts. If the extracted parts contain semantic tags, it can be tricky (and highly error-prone) to modify them by hand and making sure that the semantic slots computed by the new rule are properly propagated to the referencing rule.

Challenges

SRGS grammars offer a number of important challenges with respect to refactoring tools:

  • They combine two different languages, namely the SRGS language itself for expressing the valid sequences of words, and the semantic tag language. These two languages have very different semantics.
  • The most common semantic tag languages are based on ECMAScript, a highly dynamic scripting language. The refactoring tools must thus understand the ECMAScript language and its various constructs to properly do their job.
  • The semantic tag language can vary from one ASR engine to the other.

Refactoring support in NuGram IDE

The refactorings described above are all supported by NuGram IDE. Moreover, they are aware of the grammar semantic tag language declared by the grammar - they behave differently whether the tag-format header is semantics/1.0 or swi-semantics/1.0 (the Nuance tag format is not yet supported). This, BTW, is the kind of thing that cannot be done by a generic XML editor.

To rename a rule, put the cursor on a rule name (the definition or a reference), and press Alt-Shift-R. You should see something like:

As you can see, all the references that must be changed at once are surrounded by a gray rectangle, even in the semantic tags.

To rename a semantic slot, put the cursor on a reference to the slot and press the same key sequence (Alt-Shift-R):

All the definitions and references will be modified at once when you change the slot’s name (here the semantic tags are in the swi-semantics/1.0 tag format). Note that all the references to the slot will be changed in the other rules as well, not only in the defining rule.

Finally, to extract an expansion in a new rule, simply select the expansion:

and type Alt-Shift-T:

You see that a new private rule has been created (the default visibility for newly created rules can be configured in the preferences), and a new tag has also been created to propagate the slots returned by the new rule to the calling rule.

These were very simple examples. Consider this (somewhat contrived) rule:

If I want to rename the $digit local rule, should the tool also rename the rules.digit property? That’s not clear. If the rule $<special.abnf#digit> is matched, rules.digit will contain the semantic value returned by that rule. Otherwise, it will contain the semantic value returned by the last match to $digit. There is an ambiguity here. The same identifier may refer to two different things.

Fortunately, If I try to rename the $digit rule using NuGram IDE, it won’t blindly attempt to rename the slot. It will instead pop up the following dialog (click to enlarge):

Of course, in practice grammars are rarely that hairy and complex. But refactoring tools must be correct 100% of the time. Otherwise, people would not use them by fear of breaking their programs or grammars.

Finally, note that all NuGram IDE refactoring tools are not only available for plain ABNF grammars, but also for the dynamic extensions as well. It is possible to rename variables, rename macros, and extract macros.

If you think of other repetitive grammar-related tasks that could be automated that way, please let us know. We strongly believe in powerful tools that help make applications more robust!