We've Moved! Please visit our new and improved forum over at our new portal: https://portal.plumvoice.com/hc/en-us/community/topics

Alpha-Numeric Input from DTMF and Speech-Recognition

Questions and answers about IVR programming for Plum DEV

Moderators: admin, support

headpill
Posts: 40
Joined: Mon Aug 17, 2015 9:34 pm

Alpha-Numeric Input from DTMF and Speech-Recognition

Post by headpill »

Hello,

I wrote a vxml, where recipient will be prompted for entering an AccountID which is alpha-numeric and vxml will send the input to our webservice to validate and prompt further.

Entering DTMF tone for numeric value is straightforward, how can we accept alphanumeric input from caller?

Please help.

Thanks.

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by support »

Hi headpill,

Unfortunately, it is not possible to do due to the fact it would be difficult for the machine to differentiate the difference between a numeric and alphabetic character in DTMF.

Regards,
Plum Support

headpill
Posts: 40
Joined: Mon Aug 17, 2015 9:34 pm

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by headpill »

Thanks for your Prompt reply.

So, is there any possibility to take input from Voice instead DTMF for Alpha-Numeric AccountID?
Also, the VXML should support the input either English or Spanish.

It would be great if you can point me to an example where vxml can prompt language selection and then take voice input either in English or Spanish.

Please help.

Thanks.

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by support »

Hi,

The only way to accomplish what you are trying to do is to use voice instead of DTMF.

By following this URL: http://www.plumvoice.com/docs/dev/devel ... e:tutorial,
you'll find some examples on our tutorials page to guide you in the right direction on how to use voice.

As for prompting various languages, you can follow this previous post on our forums: http://support.plumgroup.com/viewtopic.php?f=2&t=72658.

For more information on alpha-numerics, please, follow this link: http://support.plumgroup.com/viewtopic.php?f=2&t=1521.

If you have any other questions, please feel free to ask.

Regards,
Plum Support

headpill
Posts: 40
Joined: Mon Aug 17, 2015 9:34 pm

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by headpill »

Hello,

From your guidance, I wrote a vxml, where recipient will be prompted to speak an alpha-numeric AccountID.
Our AccountID is no longer than 9 Alpha/Digit, and User has to speak out alphabet or Digit one at a time.
For example 9 2 3 6 5 7 8 A P (Like in your example).

I was going through this thread, Where you have given an example script which is close to our requirement.
http://support.plumvoice.com/viewtopic. ... anum#p4967

I am using below code from one of your examples and also i created a grammar file exactly like you suggested, a TXT file has A-Z and 0-9 with each character on its own line and without any extra spaces. And i put this TXT file on our server's folder.

Problem -

1. I do not understand this part of the statement "The text file 'a_thru_0.txt' should be a page with with A-Z and 0-9 with each character on its own line and without any extra spaces."
I explained you what i did for creating our own grammar file, what is "Page" you meant here? Am i doing anything wrong here?

2. How do i know if VXML is correctly loading my grammar file and looking for Alphabets or Digits against this text file. in Call Logs how to determine that.

3. While testing, Account ID between 4-8 characters, the speech recognition is really bad. I am not even getting 10% accuracy. Sometimes it is literally zero, sometimes it stuck and keep saying "sorry I didn't understand you." I tried manipulating Confidence Level but result is not great.

Do you have a built-in Grammar file that i can use, what will be the path to access, What it requires from coding effort point of view other than VXML coding.

Code: Select all

<?xml version="1.0"?>
<vxml version="2.0">
<var name="jcode" />


  <form id="jcode1">
    <property name="sensitivity" value="0.5"/>
    <property name="confidencelevel" value="0.5"/>
    <field name="myvar">
      <grammar version="1.0" type="application/srgs+xml" root="_root" mode="voice">
   <rule id="_root">
     <item repeat="4-9">
       <ruleref uri="builtin:grammar/alphanum?entries=http://MyServerPath/Scripts/a_thru_0.txt"/>
     </item>
        </rule>
      </grammar>
      <prompt bargein="flase">
   
     Please speak your Account number.
   
      </prompt>
      <filled>
	  	 <assign name="jcode" expr="myvar"/>
				 <prompt bargein="true">
					 <audio src="http://MyServerPath/Scripts/YouEntered.wav">
						 <voice name="crystal">
							 You have entered 
						 </voice>
					 </audio>		
				 </prompt>
   
		 <prompt bargein="true">
					 <voice name="crystal">
						 <say-as type="acronym"> 
							 <value expr="jcode"/> 
						 </say-as>
					 </voice>
				 </prompt>
      </filled>
      <noinput>
   <prompt bargein="false">
     
       I'm sorry, but I did not get your response.
     
   </prompt>
   <reprompt/>
      </noinput>
    </field>
  </form>
</vxml>

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by support »

Hello,

Answer to Problem 1:
A page is another word for file - so no, there isn't anything wrong with what you did.

Answer to Problem 2:
You can look to see if your VXML is correctly loading by looking at your call logs. An error would look something like this:

[url]GrammarManager::CreateGrammarFromString(application/srgs+xml):
---------
<?xml version='1.0'?>
<grammar version="1.0" root="_root" xml:lang="en-us" mode="voice">
<rule id="_root" scope="private"><item repeat="4-10"><ruleref uri="builtin:grammar/alphanum?entries=a_thru_0.txt"/></item></rule>
</grammar>
---------
Message from ASR engine:
---------
SWI_ERROR_GENERIC| error| SWIfsmAddConstraintFromURI | Cannot load constraint URI 'a_thru_0.txt'.
SWI_FATAL| fatal error| | uri builtin:grammar/alphanum?entries=a_thru_0.txt;language=en-us; not found.
SWI_PARSER_GEN_ERROR| XML parse error| SWIgramHandlers::startElement | ... in XML file at line 3 char 116[/url]

Answer to Problem 3:
Sometimes, if you're running into a problem like this, it is best to have multiple people run through the phone call as well to see if the program is able to collect data.

Hope this helps.

Plum Support

headpill
Posts: 40
Joined: Mon Aug 17, 2015 9:34 pm

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by headpill »

Thank You for your reply.

I can see that Grammar is loading correctly and no error.

We really really need help on fine tuning the below VXML.

Our team have tested multiple times the voice input of AlphaNumeric AccountID between 4-8 characters, Still the speech recognition is really really bad.

It captures sometimes but not perfect. For. e.g. it keeps picking A as E, and sometimes it stuck and keep saying "sorry I didn't understand you.

Please let me know if Plumvoice have a built-in Grammar file for AlphaNum rather than creating and Hosting the Custom one.
if Plumvoice have a built-in Grammar file for AlphaNum what will be the path to access, What it requires in the coding other than SRC.

Any other Pointers, Like changing Nuance recognizer. Or anything anything that i am missing.

I just wish that ASR success rate be like 70-80% at-least.

Please Help on fine tuning the below code.

Code: Select all

<?xml version="1.0"?>
<vxml version="2.0">
<var name="jcode" />


  <form id="jcode1">
    <property name="sensitivity" value="0.5"/>
    <property name="confidencelevel" value="0.5"/>
    <field name="myvar">
      <grammar version="1.0" type="application/srgs+xml" root="_root" mode="voice">
   <rule id="_root">
     <item repeat="4-9">
       <ruleref uri="builtin:grammar/alphanum?entries=http://MyServerPath/Scripts/a_thru_0.txt"/>
     </item>
        </rule>
      </grammar>
      <prompt bargein="flase">
   
     Please speak your AlphaNumeric Account number.
   
      </prompt>
      <filled>
         <assign name="jcode" expr="myvar"/>
             <prompt bargein="true">
                <audio src="http://MyServerPath/Scripts/YouEntered.wav">
                   <voice name="crystal">
                      You have entered 
                   </voice>
                </audio>      
             </prompt>
   
       <prompt bargein="true">
                <voice name="crystal">
                   <say-as type="acronym"> 
                      <value expr="jcode"/> 
                   </say-as>
                </voice>
             </prompt>
      </filled>
      <noinput>
   <prompt bargein="false">
     
       I'm sorry, but I did not get your response.
     
   </prompt>
   <reprompt/>
      </noinput>
    </field>
  </form>
</vxml>

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by support »

Hello headpill,

We have an undocumented alphanum grammar file that is listed below:

Code: Select all

<?xml version="1.0"?>
<vxml version="2.0">
  <form id="jcode">
    <property name="sensitivity" value="0.2"/>
    <property name="confidencelevel" value="0.75"/>
    <field name="myvar">
      <grammar version="1.0" type="application/srgs+xml" root="_root" mode="voice">
   <rule id="_root">
     <item repeat="4-10">
       <ruleref uri="builtin:grammar/alphanum?entries=http://www.plumvoice.com/example/a_thru_0.txt"/>
     </item>
        </rule>
      </grammar>
      <prompt bargein="true">
   <audio src="http://audio.plumgroup.com/root/cvc4.wav">
     Please speak or key in the J-CODE for the service provided.
   </audio>
      </prompt>
      <filled>
   <assign name="jcode" expr="myvar"/>
      </filled>
      <noinput>
   <prompt bargein="false">
     <audio src="http://audio.plumgroup.com/root/999999_163.wav">
       I'm sorry, but I did not get your response.
     </audio>
   </prompt>
   <reprompt/>
      </noinput>
    </field>
  </form>
</vxml>
Make sure your a_thru_0.txt file is listed as the following:
A
B
C
...
Z
0
1
2
...
9

The following links may also be of assistance:
http://support.plumgroup.com/viewtopic.php?f=2&t=1521
http://support.plumgroup.com/viewtopic.php?f=2&t=561


Regards,
Plum Support

headpill
Posts: 40
Joined: Mon Aug 17, 2015 9:34 pm

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by headpill »

Hello Support,

This is exactly what i did and it did not work well, Not even 10% success rate.

So, i was going through other posts regarding AlhpaNum in this forum.

I found this Post very helpful.- http://support.plumvoice.com/viewtopic.php?t=955
I almost cloned the approach and so far it is recognizing better compared to the previous approach and also the one you suggested here,
This approach sometimes fails but i would say now at-least it captures the callers voice and tries to match with close Alpha or digit and very less No Input error.

Still few Problem persists -

1. It can not match the Alphabets correctly 80% of the time, throws semantics error sometimes.
2. I need to spell at-least 8 characters (combination of AlphaDigit) , but before i could complete 8 characters,
it stops listening after input of 4 or 5 characters and starts replaying what it heard and understood while i am still speaking.

May be i am missing something from this Post because it do not have complete code or approach defined in that post.
I see that in the post he mentioned that it almost work for upto 10 characters and captures okay.
Plumvoice support also confirmed after testing his code that "Yes, we've just tested your IVR grammar and while it works okay for spelling up to 5 characters".

My requirement is to capture maximum 8 characters where characters can be repeated 0-8.

Here is Form and Grammar- for your review, please help me to tune in the vxml. Also, should i alter Nusance 3.0 to Alpha or Beta.
The Beta throws semantic error most of the time.

Grammar xml - I created this as xml file and put into our servers folder and call logs shows it is loading correctly.

Code: Select all

<?xml version="1.0" ?>
<grammar mode="voice" root="email" xml:lang="en_us">
<rule id="email" scope="public">
<one-of>
<item repeat="1-">
<ruleref uri="#emailchars" />
</item>
</one-of>
</rule>
<rule id="emailchars" scope="private">
<one-of>
<item>A<tag>SWI_literal="a"</tag></item>
<item>B<tag>SWI_literal="b"</tag></item>
<item>C<tag>SWI_literal="c"</tag></item>
<item>D<tag>SWI_literal="d"</tag></item>
<item>E<tag>SWI_literal="e"</tag></item>
<item>F<tag>SWI_literal="f"</tag></item>
<item>G<tag>SWI_literal="g"</tag></item>
<item>H<tag>SWI_literal="h"</tag></item>
<item>I<tag>SWI_literal="i"</tag></item>
<item>J<tag>SWI_literal="j"</tag></item>
<item>K<tag>SWI_literal="k"</tag></item>
<item>L<tag>SWI_literal="l"</tag></item>
<item>M<tag>SWI_literal="m"</tag></item>
<item>N<tag>SWI_literal="n"</tag></item>
<item>O<tag>SWI_literal="o"</tag></item>
<item>P<tag>SWI_literal="p"</tag></item>
<item>Q<tag>SWI_literal="q"</tag></item>
<item>R<tag>SWI_literal="r"</tag></item>
<item>S<tag>SWI_literal="s"</tag></item>
<item>T<tag>SWI_literal="t"</tag></item>
<item>U<tag>SWI_literal="u"</tag></item>
<item>V<tag>SWI_literal="v"</tag></item>
<item>W<tag>SWI_literal="w"</tag></item>
<item>X<tag>SWI_literal="x"</tag></item>
<item>Y<tag>SWI_literal="y"</tag></item>
<item>Z<tag>SWI_literal="z"</tag></item>
<item>zero<tag>SWI_literal="0"</tag></item>
<item>one<tag>SWI_literal="1"</tag></item>
<item>two<tag>SWI_literal="2"</tag></item>
<item>three<tag>SWI_literal="3"</tag></item>
<item>four<tag>SWI_literal="4"</tag></item>
<item>five<tag>SWI_literal="5"</tag></item>
<item>six<tag>SWI_literal="6"</tag></item>
<item>seven<tag>SWI_literal="7"</tag></item>
<item>eight<tag>SWI_literal="8"</tag></item>
<item>nine<tag>SWI_literal="9"</tag></item>
</one-of>
</rule>
</grammar>
This is the Form hooked up with the phone number. I tried manupulating the confidence level to 0.1 to 0.2.
But still not a good performance. Tested with multiple people in our office.

Code: Select all

<?xml version="1.0"?>
<vxml version="2.0">

<form id="email">
<property name="grammarmaxage" value="0s"/>
<property name="sensitivity" value="0.5"/>
<property name="confidencelevel" value="0.1"/>
<property name="interdigittimeout" value="3s"/>
<field name="em">
<prompt>Please say an AlphaNum Account .</prompt>

<grammar src="http://AbsolutePathOfOuerServer/Scripts/email.xml" type="application/srgs+xml"/>
<filled>
<assign name="email" expr="em"/>
<prompt bargein="false">
          I think you said AlphaNum Account <value expr="email"/> 
        </prompt>
</filled>
      <nomatch>
        I'm sorry, I didn't catch that.
        <reprompt/>
      </nomatch>
</field>
</form> 

</vxml>
Once i reproduce the level of quality that person was getting who posted this approach, i will start rewriting my vxml.

Thank You.

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by support »

Hello,

Try using a grammar type that looks similar to the following:

Code: Select all

     <field name = "your choice">
        <grammar type="application/srgs+xml" root="alphanum" mode="voice">
            <rule id="alphanum" scope="public">
              <item repeat="1-8">
By doing this, you're able to enter in 1-8 chars and since English is the default language, you won't need to define that you want to use English. Also, before grammar, create a field with a name to your liking where you can call the field name after </grammar> to have it repeat your account id back to you. Here is an example:

Code: Select all

 
       </grammar>
          <filled>
            <prompt>
              you said <value expr="your choice"/>.
            </prompt>
          </filled>
Hope this helps.

Regards,
Plum Support

headpill
Posts: 40
Joined: Mon Aug 17, 2015 9:34 pm

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by headpill »

Hello Support,

So, what i understand from your post is that create the grammar in the VXMl itself rather than referencing it in VXML.

I tried that as well and we got improved results. But still not more than 50%.
I think we need a little calibration/Tuning on these property tags. Like, We found that increasing "speedvsaccuracy" to 0.9 and "confidencelevel" value="0.2 significant ally increased the result from 20% to 50%, otherwise we were stuck most of the time on NoInput tag when we call.

For example, Below are most close to accurate account ID's results, when spoken over phone using the below script.

545SSD - 100%
FAQ5203 - 90% (Q as K)
OBMAHTR - 60% (O as zero, B as P, cutoff after 4th character)
OH1O803 - O as zero (even though it is not mentioned in grammar)
AQQ9387 - 80% (3 as C, Q as 2)

I do not understand why Letter "O" is understood as Zero which is not mentioned in grammar at all, is it platform that interpreting and ignoring the grammar written in VXML?
If platform is interfering the grammar then how can we resolve Letter O as O not Zero as input? I mean we are taking input and reading it back to caller, but in between can we write a condition if it is O do not interpret as zero rather take it as O and read it back to caller. Is there anything that can resolve this.

You can try abovelisted numbers and test the result as well.

Can You please review below code and point us what could be the best values for these tags that can work together to increase the result from 50% to at-least 80%.
For example i saw one of the post where they mentioned that setting "grammarmaxage" to "0" gave good result (But not in my case).

I think, if we can put these Properties values in such a way so that when they load together it can produce great result. Please help.

I also included few phonetics that sound like alphabets in the grammar to achieve accuracy, like code below.
<item> sea <tag>SWI_literal="c"</tag></item>

Also, if there is any other Property tag that we should use that is missing here in the code.
Please review the code, any pointers what and how to do some tuning.

<item repeat="1-8"> = what i understand that "The utterance must be spoken 1 to 8 times". But in our alphanum account ID it is not necessary that all the alphabet or number should appear atleast once. Why not using <item repeat="0-8"> meaning The utterance is not required to be repeated, but can be spoken up to 8 times. Bu doing this Is it going to help the ASR in anyway?

Code: Select all


<form id="email">

<property name="grammarmaxage" value="60s"/>
<property name="grammarmaxstale" value="25s"/>
<property name="sensitivity" value="0.5"/>
<property name="confidencelevel" value="0.2"/>
<property name="interdigittimeout" value="5s"/>
<property name="speedvsaccuracy" value="0.9"/> 


<field name="em">


<prompt bargein="false"> Please say a AlphaNumber char.</prompt>

<grammar type="application/srgs+xml" mode="voice" root="alphanum">

<rule id="alphanum" scope="public">
  <one-of>
    <item repeat="1-8">
      <ruleref uri="#chars"/>
    </item>
  </one-of>
</rule>

<rule id="chars" scope="public">
  <one-of>
<item> A <tag>SWI_literal="a"</tag></item>
<item> eh <tag>SWI_literal="a"</tag></item>
<item> ei <tag>SWI_literal="a"</tag></item>
<item> ay <tag>SWI_literal="a"</tag></item>
<item> B <tag>SWI_literal="b"</tag></item>
<item> bi <tag>SWI_literal="b"</tag></item>
<item> bee <tag>SWI_literal="b"</tag></item>
<item> C <tag>SWI_literal="c"</tag></item>
<item> see <tag>SWI_literal="c"</tag></item>
<item> sea <tag>SWI_literal="c"</tag></item>
  </one-of>
</rule>
</grammar>


<filled>
            <prompt>
              you said <value expr="em"/>.
            </prompt>

<nomatch>
      Sorry, try again.
         <reprompt/>
</nomatch>

</field>

</form> 

Thanks.

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by support »

Hello,

A few corrections:
1. Adding phonetics isn't necessary, there are already pronunciation keys for what you are trying to create - it would be best if you removed them.

2. Using <item repeat="0-8"> wouldn't be correct because if the user didn't say anything, it would trigger nomatch. To correct this, it would be logical to do <item repeat="1-8">. By doing this, it is looking for at LEAST 1 character, and a max of 8.

3. Looking at your code, after you used <filled>, you never closed it. Try having it look like this:

Code: Select all

    
  <filled>
    <prompt>
      you said <value expr="em"/>.
    </prompt>
  </filled>

<nomatch>
    ...
    ... 
</nomatch>
Please also note: We are always more than happy to provide coding support, but we cant write your code for you. The forums are for general questions, and are not a dedicated development portal.

Lastly, if you would like help on your program, please visit http://www.plumgroup.com and click on "
talk with sales" provide your credentials to get in contact with a representative about payment options to have dedicated developer support hours.

Regards,
Plum Support

headpill
Posts: 40
Joined: Mon Aug 17, 2015 9:34 pm

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by headpill »

Hello Support,

While taking AlphaNum voice input from Caller, ASR is recognizing Letter O as zero, no matter with how many people we try with or how many times we try it.. it never recognizes Letter O as Letter O but always Zero. What would be resolution for that. Is the Platform grammar file causing this issue?

Please let me know.

Thanks.

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by support »

Hello headpill,

Can you please provide a code sample of the grammar you are using and the implementation in vxml so we may further assist you.

Regards,
Plum Support

headpill
Posts: 40
Joined: Mon Aug 17, 2015 9:34 pm

Re: Alpha-Numeric Input from DTMF and Speech-Recognition

Post by headpill »

Here is the grammar file that i am using inline (within VoiceXML)

Code: Select all

grammar type="application/srgs+xml" mode="voice" root="ROOT">
        <rule id="ROOT" scope="public">
          <one-of>
            <item repeat="1-7">
              <ruleref uri="#chars"/>
            </item>
          </one-of>
        </rule>

        <rule id="chars" scope="public">
          <one-of>
            <item>
              A <tag>SWI_literal="a"</tag>
            </item>
            <item>
              eh <tag>SWI_literal="a"</tag>
            </item>
            <item>
              ei <tag>SWI_literal="a"</tag>
            </item>
            <item>
              ay <tag>SWI_literal="a"</tag>
            </item>
            <item>
              B <tag>SWI_literal="b"</tag>
            </item>
            <item>
              bi <tag>SWI_literal="b"</tag>
            </item>
            <item>
              bee <tag>SWI_literal="b"</tag>
            </item>
            <item>
              C <tag>SWI_literal="c"</tag>
            </item>
            <item>
              see <tag>SWI_literal="c"</tag>
            </item>
            <item>
              sea <tag>SWI_literal="c"</tag>
            </item>
            <item>
              cee <tag>SWI_literal="c"</tag>
            </item>
            <item>
              si <tag>SWI_literal="c"</tag>
            </item>
            <item>
              she <tag>SWI_literal="c"</tag>
            </item>
            <item>
              D <tag>SWI_literal="d"</tag>
            </item>
            <item>
              di <tag>SWI_literal="d"</tag>
            </item>
            <item>
              dee <tag>SWI_literal="d"</tag>
            </item>
            <item>
              E <tag>SWI_literal="e"</tag>
            </item>
            <item>
              ee <tag>SWI_literal="e"</tag>
            </item>
            <item>
              yee <tag>SWI_literal="e"</tag>
            </item>
            <item>
              F <tag>SWI_literal="f"</tag>
            </item>
            <item>
              ef <tag>SWI_literal="f"</tag>
            </item>
            <item>
              eff <tag>SWI_literal="f"</tag>
            </item>
            <item>
              G <tag>SWI_literal="g"</tag>
            </item>
            <item>
              gee <tag>SWI_literal="g"</tag>
            </item>
            <item>
              jee <tag>SWI_literal="g"</tag>
            </item>
            <item>
              H <tag>SWI_literal="h"</tag>
            </item>
            <item>
              aitch <tag>SWI_literal="h"</tag>
            </item>
            <item>
              aych <tag>SWI_literal="h"</tag>
            </item>
            <item>
              haych <tag>SWI_literal="h"</tag>
            </item>
            <item>
              hetch <tag>SWI_literal="h"</tag>
            </item>
            <item>
              I <tag>SWI_literal="i"</tag>
            </item>
            <item>
              eye <tag>SWI_literal="i"</tag>
            </item>
            <item>
              ih <tag>SWI_literal="i"</tag>
            </item>
            <item>
              J <tag>SWI_literal="j"</tag>
            </item>
            <item>
              jay <tag>SWI_literal="j"</tag>
            </item>
            <item>
              K <tag>SWI_literal="k"</tag>
            </item>
            <item>
              kei <tag>SWI_literal="k"</tag>
            </item>
            <item>
              kay <tag>SWI_literal="k"</tag>
            </item>
            <item>
              cay <tag>SWI_literal="k"</tag>
            </item>
            <item>
              L <tag>SWI_literal="l"</tag>
            </item>
            <item>
              el <tag>SWI_literal="l"</tag>
            </item>
            <item>
              ell <tag>SWI_literal="l"</tag>
            </item>
            <item>
              elle <tag>SWI_literal="l"</tag>
            </item>
            <item>
              ale <tag>SWI_literal="l"</tag>
            </item>
            <item>
              M <tag>SWI_literal="m"</tag>
            </item>
            <item>
              em <tag>SWI_literal="m"</tag>
            </item>
            <item>
              N <tag>SWI_literal="n"</tag>
            </item>
            <item>
              en <tag>SWI_literal="n"</tag>
            </item>
            <item>
              in <tag>SWI_literal="n"</tag>
            </item>
            <item>
              O <tag>SWI_literal="O"</tag>
            </item>
            <item>
              ou <tag>SWI_literal="O"</tag>
            </item>
            <item>
              owe <tag>SWI_literal="O"</tag>
            </item>
            <item>
              P <tag>SWI_literal="p"</tag>
            </item>
            <item>
              pea <tag>SWI_literal="p"</tag>
            </item>
            <item>
              pee <tag>SWI_literal="p"</tag>
            </item>
            <item>
              Q <tag>SWI_literal="q"</tag>
            </item>
            <item>
              queue <tag>SWI_literal="q"</tag>
            </item>
            <item>
              cue <tag>SWI_literal="q"</tag>
            </item>
            <item>
              kyoo <tag>SWI_literal="q"</tag>
            </item>
            <item>
              R <tag>SWI_literal="r"</tag>
            </item>
            <item>
              ar <tag>SWI_literal="r"</tag>
            </item>
            <item>
              are <tag>SWI_literal="r"</tag>
            </item>
            <item>
              S <tag>SWI_literal="s"</tag>
            </item>
            <item>
              es <tag>SWI_literal="s"</tag>
            </item>
            <item>
              ess <tag>SWI_literal="s"</tag>
            </item>
            <item>
              T <tag>SWI_literal="t"</tag>
            </item>
            <item>
              tea <tag>SWI_literal="t"</tag>
            </item>
            <item>
              tee <tag>SWI_literal="t"</tag>
            </item>
            <item>
              U <tag>SWI_literal="u"</tag>
            </item>
            <item>
              you <tag>SWI_literal="u"</tag>
            </item>
            <item>
              eu <tag>SWI_literal="u"</tag>
            </item>
            <item>
              V <tag>SWI_literal="v"</tag>
            </item>
            <item>
              vee <tag>SWI_literal="v"</tag>
            </item>
            <item>
              bhi <tag>SWI_literal="v"</tag>
            </item>
            <item>
              W <tag>SWI_literal="w"</tag>
            </item>
            <item>
              doubleyou <tag>SWI_literal="w"</tag>
            </item>
            <item>
              double you <tag>SWI_literal="w"</tag>
            </item>
            <item>
              X <tag>SWI_literal="x"</tag>
            </item>
            <item>
              ex <tag>SWI_literal="x"</tag>
            </item>
            <item>
              ehks <tag>SWI_literal="x"</tag>
            </item>
            <item>
              eks <tag>SWI_literal="x"</tag>
            </item>
            <item>
              Y <tag>SWI_literal="y"</tag>
            </item>
            <item>
              wai <tag>SWI_literal="y"</tag>
            </item>
            <item>
              why <tag>SWI_literal="y"</tag>
            </item>
            <item>
              Z <tag>SWI_literal="z"</tag>
            </item>
            <item>
              zi <tag>SWI_literal="z"</tag>
            </item>
            <item>
              zee <tag>SWI_literal="z"</tag>
            </item>
            <item>
              zed <tag>SWI_literal="z"</tag>
            </item>
            <item>
              0 <tag>SWI_literal="0"</tag>
            </item>
            <item>
              1 <tag>SWI_literal="1"</tag>
            </item>
            <item>
              2 <tag>SWI_literal="2"</tag>
            </item>
            <item>
              3 <tag>SWI_literal="3"</tag>
            </item>
            <item>
              4 <tag>SWI_literal="4"</tag>
            </item>
            <item>
              5 <tag>SWI_literal="5"</tag>
            </item>
            <item>
              6 <tag>SWI_literal="6"</tag>
            </item>
            <item>
              7 <tag>SWI_literal="7"</tag>
            </item>
            <item>
              8 <tag>SWI_literal="8"</tag>
            </item>
            <item>
              9 <tag>SWI_literal="9"</tag>
            </item>
          </one-of>
        </rule>
      </grammar>

Post Reply