2   Demonstration

This chapter presents a demonstration application that can be used to test the training and authentication steps. The application asks the user to enter and confirm a 4-digit number, which is then used as the key for storing the user's voice print.

Note: The BeVocal VoiceXML interpreter combines a Café account-specific value with any specified key and uses the combination to identify a voice print. As a consequence, VoiceXML applications running in under two different accounts can use the same key (for example, 1234) to identify different users.

If a voice print is already registered for the key, the user skips the training dialog and goes directly to authentication. To effect this flow of control, the first <bevocal:register> element has its mode attribute set to skip. If no voice print is registered for the user's key, this element registers a new voice print and sets the user_status variable to new. After that, the application is redirected to the authentication dialog if the user_status variable still has the initial value of old.

Testing Speaker Verification

You can run this demo from a BeVocal Café account and experiment to test how Speaker Verification works. Try these tests with a number of different speakers:

 •  Have one user register a voice print in the training dialog.Then have different people (imposters) call and provide the same key.
  If an imposter is accepted by the authentication dialog, a false acceptance has occurred.
 •  Have the same person register a voice print and go through the authentication dialog a number of times.
  If the same person who provided the voice print (the "true speaker") is rejected during authentication, a false rejection has occurred.

As different speakers experiment with the demonstration application, try to get a sense of how frequently an imposter was accepted and how frequently a true speaker was rejected.

For some applications, false acceptance is a more serious concern. To maintain security, it is better to reject an authorized user occasionally than to allow an unauthorized user to access sensitive information. For other applications, security it not as crucial and the inconvenience of rejecting an authorized user outweighs any problems caused by accepting an unauthorized user.

The verification mechanism can be adjusted to reduce either false acceptance or false rejection. When the verifier attempts to minimize false acceptance, however, false rejection increases and vice-versa. The BeVocal interpreter uses settings that try to achieve a balance, favoring a lower incidence of false acceptance. We are interested in knowing whether these settings are appropriate for your application.

BeVocal encourages you to try this experimental VoiceXML extension for Speaker Verification, and is very interested in your feedback! Please post your thoughts, observations, and suggestions to the BeVocal Café news groups.

Sample Interactions

In this interaction with the demonstration, the user's registers a voice print and is verified to be the authentic user.

Application:

Welcome to the Speaker Verification demo.

Please say or enter the last 4 digits of your telephone number. This number will identify you for access to the secure application.

User:

3 0 4 2

Application:

I heard three zero four two. Is that correct? Say Yes or No.

User:

Yes

Application:

Okay, Let's continue.

I need some samples of your speech to create an identifying voice print. Please say your 10-digit telephone number.

User:

408-656-3042

Application:

Please say any 5 digit number and repeat it.

User:

2 4 5 8 9 2 4 5 8 9

Application:

Your voice print has been registered.

Do you wish to continue with authentication?

User:

Yes

Application:

Please say your 10-digit telephone number.

User:

408-656-3042

Application:

Your identity has been verified.

Thanks for using the secure application. Good-bye.

The same user calls back and goes through the authentication step only.

Application:

Welcome to the Speaker Verification demo.

Please say or enter the last 4 digits of your telephone number. This number will identify you for access to the secure application.

User:

3 0 4 2

Application:

I heard three zero four two. Is that correct? Say Yes or No.

User:

Yes

Application:

A voice print has already been registered for the identifying number three zero four two. Let's see if your voice matches that voice print.

Application:

Please say your 10-digit telephone number.

User:

408-656-3042

Application:

Your identity has been verified.

Thanks for using the secure application. Good bye.

Next, an impostor calls and is rejected by the authentication step.

Application:

Welcome to the Speaker Verification demo.

Please say or enter the last 4 digits of your telephone number. This number will identify you for access to the secure application.

User:

3 0 4 2

Application:

I heard three zero four two. Is that correct? Say Yes or No.

User:

Yes

Application:

A voice print has already been registered for the identifying number three zero four two. Let's see if your voice matches that voice print.

Application:

Please say your 10-digit telephone number.

User:

408-656-3042

Application:

Please say any five digit number.

User:

1 2 3 4 5

Application:

I'm still not sure of your identity. Lets try again

Please say your 10-digit telephone number.

User:

408-656-3042

Application:

Please say any five digit number.

User:

8 9 7 8 9

Application:

Sorry. You are not authorized to access the secure application. Good-bye

Application Code

 <?xml version="1.0" ?>
 <!DOCTYPE vxml PUBLIC "-//BeVocal Inc//VoiceXML 2.0//EN" 
 "http://cafe.bevocal.com/libraries/dtd/vxml2-0-bevocal.dtd">
  
 <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
   
   <!-- *********************************************************** -->
   <!-- * Variables:                                              * -->
   <!-- *    key will be set to the user's identifying key.       * -->
   <!-- *    user-status will be set to 'old' if a voice print    * -->
   <!-- *    already exists for this user and 'new' if a new      * -->
   <!-- *    voice print is created for the user.                 * -->
   <!-- *********************************************************** -->
   <var name="key" />    
   <var name="user_status" expr="'old'" />
   
   <!-- *********************************************************** -->
   <!-- * Training Dialog                                         * -->
   <!-- *********************************************************** -->
   <form id="training_form">
     <block>
       <prompt>
         Welcome to the Speaker Verification demo
       </prompt>
     </block>
     
     <!-- ******************************************************* -->
     <!-- * Ask the user for a 4-digit number, which will be    * -->
     <!-- * used as a key for Speaker Verification.             * -->
     <!-- ******************************************************* -->
     <field name="phone4" type="digits">
       <prompt>
         Please say or enter the last 4 digits of your telephone number.
         This number will identify you for access to the
         secure application 
       </prompt>
     </field>
 
     <field name="confirm_key" type="boolean">
       <prompt> I heard <value expr="phone4"/> </prompt>
       <prompt> Is that correct? Say Yes or No </prompt>
       <filled>
         <if cond="confirm_key">
           <prompt> Okay, Let's continue </prompt>
           <assign name="key" expr="phone4"/>
         <else/>
           <clear namelist="phone4 confirm_key"/>
         </if>
       </filled>
     </field>
 
 
     <!-- ******************************************************* -->
     <!-- * Create a new voice print unless one is already      * -->
     <!-- * registered for this user's key.                     * -->
     <!-- ******************************************************* -->
     <bevocal:register name="register_step1" type="phone" keyExpr="key" mode="skip">
       <prompt>
         I need some samples of your speech to create an 
         identifying voice print. Please say your 10-digit telephone number
       </prompt>
       <filled>
         <assign name="user_status" expr="'new'"/>
       </filled>
       </bevocal:register>
     <!-- ******************************************************* -->
     <!-- * Proceed to authentication if the user already had a * -->
     <!-- * registered voice print.                             * -->
     <!-- ******************************************************* -->
     <block>
       <if cond="user_status == 'old'">
         <prompt>
           A voice print has already been registered for 
           the identifying number <value expr="key"/>.
           Let's see if your voice matches that voice print
         </prompt>
         <goto next="#authentication_form"/>
       </if>
     </block>
     <!-- ******************************************************* -->
     <!-- * Refine the  voice print with another speech sample. * -->
     <!-- ******************************************************* -->
     <bevocal:register name="register_step2" type="digits" keyExpr="key">
       <prompt>
         Please say any 5 digit number and repeat it.
       </prompt>
     </bevocal:register>
   
     <filled namelist="register_step1 register_step2"> 
       <prompt>
         Your voice print has been registered
       </prompt>
     </filled>
       
     <field name="confirm_continue" type="boolean">
       <prompt>
         Do you wish to continue with authentication?
       </prompt>
       <filled>
         <if cond="confirm_continue">
           <goto next="#authentication_form"/>
         <else/>
           <prompt>
             Thank you for registering to use this application.
           </prompt>
           <exit/>
         </if>
       </filled>
     </field>
   </form>
   
   <!-- *********************************************************** -->
   <!-- * Authenticaion Dialog                                    * -->
   <!-- *********************************************************** -->
   <form id="authentication_form" >
     <bevocal:verify name="compare1" type="phone" keyExpr="key">
       <prompt> 
         Please say your 10-digit telephone number 
       </prompt>
       <filled>
         <if cond="compare1$.decision == 'accepted'">
           <prompt>
             Your identity has been verified 
           </prompt>
           <goto next="#secure_form"/>
         <elseif cond="compare1$.decision == 'rejected'" />
           <prompt>
             Sorry you are not authorized to access 
             the secure application. Goodbye
           </prompt>
           <exit/>
         </if>
       </filled>
     </bevocal:verify>
     
     <bevocal:verify name="compare2" type="digits" keyExpr="key">
       <prompt> 
         Please say any five digit number   
       </prompt>
       <filled>
         <if cond="compare2$.decision == 'accepted'">
           <prompt>
             Your identity has been verified 
           </prompt>
           <goto next="#secure_form"/>
         <elseif cond="compare2$.decision == 'rejected'" />
           <prompt>
             Sorry. You are not authorized to access 
             the secure application. Goodbye
           </prompt>
           <exit/>
         <elseif cond="compare2$.decision == 'unsure'" />
           <prompt>
             I'm still not sure of your identity. Lets try again   
           </prompt>
           <clear namelist="compare1 compare2"/>
         </if>
       </filled>
     </bevocal:verify>
   </form>    
     
     
   <!-- *********************************************************** -->
   <!-- * Simulated Secure Interaction                            * -->
   <!-- *********************************************************** -->
   <form id="secure_form" >
     <block>
       <prompt>
         Thanks for using the secure application. Good bye.
       </prompt>
     </block>
   </form>    
 </vxml>
   
 

[Show Frames]   [FIRST] [PREVIOUS] [NEXT]
BeVocal, Inc. Café Home | Developer Agreement | Privacy Policy | Site Map | Terms & Conditions
Part No. 520-0008-01R01 | © 1999-2007, BeVocal, Inc. All rights reserved | 1.877.33.VOCAL