GRXML Examples

Practical examples of GRXML grammars for common use cases in speech recognition applications.

Basic Examples

Yes/No Confirmation

A simple grammar for yes/no confirmations with common variations.

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://www.w3.org/2001/06/grammar" xml:lang="en-US" version="1.0" mode="voice" root="confirmation">
    <rule id="confirmation">
        <one-of>
            <item weight="1.2">yes</item>
            <item weight="1.2">yeah</item>
            <item weight="1.0">correct</item>
            <item weight="1.0">that's right</item>
            <item weight="1.2">no</item>
            <item weight="1.0">nope</item>
            <item weight="1.0">incorrect</item>
            <item weight="1.0">that's wrong</item>
        </one-of>
    </rule>
</grammar>

Number Recognition

Grammar for recognizing numbers with both digit-by-digit and natural number words.

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://www.w3.org/2001/06/grammar" xml:lang="en-US" version="1.0" mode="voice" root="number">
    <rule id="number">
        <one-of>
            <item><ruleref uri="#digit"/></item>
            <item><ruleref uri="#teens"/></item>
            <item><ruleref uri="#tens"/></item>
        </one-of>
    </rule>
    
    <rule id="digit">
        <one-of>
            <item>zero<tag>out=0;</tag></item>
            <item>one<tag>out=1;</tag></item>
            <item>two<tag>out=2;</tag></item>
            <item>three<tag>out=3;</tag></item>
            <item>four<tag>out=4;</tag></item>
            <item>five<tag>out=5;</tag></item>
            <item>six<tag>out=6;</tag></item>
            <item>seven<tag>out=7;</tag></item>
            <item>eight<tag>out=8;</tag></item>
            <item>nine<tag>out=9;</tag></item>
        </one-of>
    </rule>
</grammar>

Advanced Examples

Date Recognition

Complex grammar for recognizing dates in various formats.

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://www.w3.org/2001/06/grammar" xml:lang="en-US" version="1.0" mode="voice" root="date">
    <rule id="date">
        <one-of>
            <item>
                <ruleref uri="#month"/>
                <ruleref uri="#day"/>
                <item repeat="0-1">
                    <ruleref uri="#year"/>
                </item>
            </item>
            <item>today</item>
            <item>tomorrow</item>
            <item>next week</item>
        </one-of>
    </rule>
    
    <rule id="month">
        <one-of>
            <item>January<tag>month=1;</tag></item>
            <item>February<tag>month=2;</tag></item>
            <item>March<tag>month=3;</tag></item>
            <!-- ... other months ... -->
        </one-of>
    </rule>
</grammar>

Menu Navigation

Grammar for IVR menu navigation with multiple options and commands.

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://www.w3.org/2001/06/grammar" xml:lang="en-US" version="1.0" mode="voice" root="mainMenu">
    <rule id="mainMenu">
        <one-of>
            <item>
                <one-of>
                    <item>check</item>
                    <item>view</item>
                </one-of>
                <one-of>
                    <item>balance</item>
                    <item>account</item>
                </one-of>
                <tag>action="balance";</tag>
            </item>
            <item>make a payment<tag>action="payment";</tag></item>
            <item>technical support<tag>action="support";</tag></item>
            <item>speak to representative<tag>action="agent";</tag></item>
            <item>go back<tag>action="back";</tag></item>
            <item>main menu<tag>action="main";</tag></item>
        </one-of>
    </rule>
</grammar>

Implementation Tips

Using Weights

Add weights to common phrases to improve recognition accuracy:

<item weight="1.2">yes</item> <!-- More common -->
<item weight="1.0">affirmative</item> <!-- Less common -->

Rule References

Use rule references to create modular and reusable grammars:

<rule id="mainRule">
    <ruleref uri="#subRule"/>
    <tag>out = rules.subRule;</tag>
</rule>

Tag Usage

Use tags to return structured data:

<item>technical support
    <tag>out.action="support"; out.dept="tech";</tag>
</item>

Next Steps

Now that you've seen some examples, try creating your own grammars using our GRXML Builder. The tool includes validation, testing, and AI-powered suggestions to help you create effective grammars.