Voice Authentication App Tutorial
Voice Authentication App Tutorial
NOTE: Not all mobile devices/operating systems currently have the required
hardware/software to run the PAC extension used in this unit. We highly recommend
testing beforehand with our test app to make sure it is compatible. Instuctions for
testing are included in Appendix 1. If your device is not compatible, you can still play
with the PAC website to learn how to train a model. You will not be able to try it in App
Inventor.
1. Navigate browser to https://c1.appinventor.mit.edu/
You’re going to train an audio classifier from scratch! First, you have to teach it
what you want to classify. This is the “training” phase. You want to train two voices,
so find a friend or family member to be your partner for this activity.
2. Click on the + icon to add labels for you and your partner’s voice.
In this example, there are two possible classifications for the model:
Nikhil and Natalie.
Your model is going to learn to distinguish between you and your partner saying the
word “Hello.” You will record some voice clips for the model to train on.
3. Test your computer’s microphone and get a sense of how long each
voice clip will be.
Practice by pressing record and saying “Hello” loudly and clearly (you may need to
grant microphone access).
Make sure you only speak while the red recording bar is active.
As your microphone warms up, you may need to remove some bad recordings by
pressing the blue “x” in the top right corner of each image.
4. Clear any practice recordings and record 5-10 good examples of you
and your partner saying “Hello.”
Click the “RECORDING FOR” button to change which person you are recording.
Double check that your recorded examples look similar to the ones shown below
(remember you can remove any odd-looking examples and record them again).
5. Using your examples, you will now “train” the model. Press the
“train” button, and then press “train model” using the default
parameters.
6. Now that your model is trained, it’s time to test it!
Press record to record a voice clip and see how the model classifies the clip!
(Don’t worry about who the “RECORDING FOR” button is set to). Just see how the
model performs for you and your partner’s voices.
Hover over each of the labels to see the model’s confidence in its classification.
You can press the “train” button in the navbar to return to the training screen and
record more examples (then retrain your updated model following step 4).
7. Once you’re confident in your model, press the “Export” button to
export your new model!
8. Now it’s time to build your Voice Authentication App using this
exported model!
Download the Voice Authentication Diary App Inventor project file (aia) from this
link:
Voice_authentication_diary.aia
Navigate to http://ai2.appinventor.mit.edu/, go to My Projects, and import the file
you just downloaded.
This will be a Diary app authenticated by your voice saying “Hello”. Only
you will be able to open your diary. Anyone else, in this case, your
partner, won’t be able to get into your diary.
Note that your Diary app has two screens. You will focus on Screen1,
where your voice will be authenticated. That will take you to Screen2,
your diary.
Open up the “voice_authentication_diary” app you just imported. In the Designer,
drag in the following components and rename them and set their properties as
follows.
Component Drawer Name Properties
Click on PersonalAudioClassifier1 i n the B
locks palette, and drag out a
PersonalAudioClassifier1.GotClassification block.
Set StatusLabel.Text to the result parameter in the event block.
Add an if-then-else b
lock from the Control Drawer, and attach an equals (=) block
from the Logic drawer.
The result returned is a list with the classifications from the model. The list will
contain two sub-lists. Each sub-list will contain the label the classifier thinks is a
match, followed by the confidence level. For example:
[ [Nikhil, 0.88527] , [Natalie, 0.34812] ]
The classifier has 88% confidence that the voice matches Nikhil, and only 34%
confidence the voice matches Natalie. You want to pull out the first item in the first
sublist, in this case “Nikhil” and test if that is the person whose diary this is.
To do this, use two s elect list item blocks from the L
ists drawer. First, get the first
item (index) from get result (your main list). That then becomes your list to extract
again the first item (index), which in this example is “Nikhil”.
If there is a match, you want to say “Success!” using the T extToSpeech1 component,
and then open Screen2.
If there is not a match, you can assume your partner (or someone else) tried to open
your Diary app, so add a message using TextToSpeech telling them they are shut
out.
Your blocks should look something like the ones below. The r ed box should contain
your name (using the label you used in c1.appinventor.mit.edu). The b lue box should
contain a phrase that the app will speak out loud if it doesn’t think the voice is you!
11. And you’re done! Take a quick look at Screen2 provided in the
template. It simply allows you to type whatever you want in your
diary. There is a back button to return to Screen1. The task is
left to you to build out the diary aspect of this app. One
recommendation is to use TinyDB and store your diary entries on
your device so you can save and read your previous diary entries.
12. The PersonalAudioClassifier extension does not currently work
with the MIT AI2 Companion, so you must build the application
using the Build menu in App Inventor. Choose the “provide QR
code for .apk” o ption, and then use a QR Code Reader app, or
the MIT AI2 Companion on your device to scan the QR code.
Follow the instructions to install the app on your phone or tablet.
13. Test it out! You should be able to say “Hello” and proceed to
Screen2. Your partner, however, should be blocked from seeing
your diary.
Tips to Test and Debug
On Screen1, StatusLabel displays the result returned from the
Classifier. If your app does not work as expected, check what the
Classifier is returning. Check that your name appears first in the
returned result list. If not, you might have to go back and train
your model again!
Another possibility is that the confidence level is too low. Can
you figure out how to add code to test that the confidence level
is greater than 80%? Remember, the second value in your sublist
is the confidence level.
Appendix 1
Testing Hardware
In order to check beforehand if the Diary app will work on your device, we’ve provided a project
to test it out. Start by downloading this Test_PAC.apk (link) onto your computer. Install the app
on your device. Run the app. You should see a “Waiting…” label at the top of the screen in the
app. After at most a minute, the label display should change to “Ready and working!”. If the
label does not change, it means your device will not work with the PAC extension.