Recently, I developed a voiceprint recognition application on the Android platform with my friends. It took several months to complete the application in the early stage. The name is defined as "superlock.
You can download it at http://code.google.com/p/voiceprint-model-builder-for-superlock/downloads/list.
Let me briefly introduce the Start Plan:
The problem was raised mainly from Android, which is now the mainstream mobile phone operating system. The screen lock and on-screen applications are still traditional passwords, focus activation, and handshakes, as well as face recognition launched in the last 4.0. Apart from the real fingerprint recognition launched by Moto (with a fingerprint modulo), fingerprint recognition on the market is a bit of talk. So I came up with an application that uses voiceprint for recognition.
At first, the biggest problem was to worry about whether the processing speed of mobile phones could keep up. Later, I tried it and it was no longer a problem. However, the audio frequency produced by the Android phone recording is sometimes inconsistent, which is the biggest problem. Therefore, some mismatched images may occur during testing. But in most cases, they are consistent.
Generally, each person's voice has its own characteristics, so we can hear the speaker, that is, the only one.
Different sounds are mainly caused by differences in sound quality and tone. There are actually differences in the size, morphology, and function of human vocal organs. Vocal control organs include vocal cords, Soft Jaw, tongue, teeth, lips, etc. Vocal joint refers to the throat, mouth, and nasal cavity. Minor differences in these organs will lead to changes in the vocal flow, forming a difference. In addition, the pronunciation habits of people are also slow, and the sizes of the force are different, which leads to the difference in sound intensity and sound length. Voice recognition not only relies on different voices, but also on the relative stability of human acoustic characteristics.
However, in real life, people often have business mistakes identified by voice. Even if the caller is a friend or relative, we are not sure about the identity of the caller. Therefore, when no incoming call is displayed or the number is kept, we often "Zhang guanli Dai ".
We referenceGuangdong sci-tech newsThe article compares voiceprint with fingerprint:
Fingerprint Lock PK voiceprint lock
Security risks:
Fingerprints adopt a single and fixed authentication method, which has a permanent risk of password loss.
Voiceprint adopts two-factor authentication of "semantic + voiceprint", in which the semantic can be dynamically adjusted, without the risk of permanent password loss.
Ease of use:
The fingerprint must be exposed to your fingers. The fingers are too dirty and the texture is too light.
Voiceprint is a non-contact opening method, which can completely free people's hands and clean.
Intrusion Concealment:
Fingerprints are easily residual and can be stolen without prior knowledge.
Voiceprint is sensitive to the channel, and the recording is useless. Imitation is ineffective and sound must be triggered during intrusion, which has a strong psychological deterrent effect.
Recognition speed:
When the actual fingerprint storage capacity is too large, the recognition speed slows down.
The unique recognition speed of voiceprint algorithms has nothing to do with the number of people. Each recognition time is less than 1 second.
Device vulnerability:
The fingerprint optical contact surface is easy to wear, the silicon contact surface is vulnerable to electrostatic damage, the equipment is vulnerable to malicious damage, and the use and maintenance costs are high.
Voiceprint sound is not vulnerable to damage without being exposed to the device, resulting in low maintenance costs.
We can see the uniqueness of voiceprint.
The following code shows the conversion effect of the pagination bullets on the main interface:
1/************************* copyright (c) 2011 ************************
2
3:
4
5 Cheung. S. Kei
6
7. Contact Information:
8
SupperLock0@gmail.com
10 QQ: 757689594
11
12 modification time:
13
14 2011-09-03
15
16 function description:
17
18. Flip effect circle icon
19
20 Copyright Disclaimer:
21
22. Please respect developers' labor, copy or modify the content of this program, and enter the address.
23
24 ************************ copyright (c) 2011 ************************/
25
26 package com. Kei. Android. superlock. UI;
27
28 Import Android. content. context;
29 Import Android. Graphics. Canvas;
30 Import Android. Graphics. color;
31 Import Android. Graphics. paint;
32 import Android. util. log;
33 import Android. View. view;
34
35 public class circleview extends view {
36
37 // output log display status
38 Private Static final string log_tag = "circleview ";
39 Private Static final Boolean dbg = true;
40
41 private paint mpaint;
42 // width and height
43 private int mbackgroundwidth;
44 private int mbackgroundheight;
45 private int mscreenheight;
46 private int mfinalcenter, mfinalheight;
47 // radius
48 private int mcircleradius;
49
50 private Boolean isactive = false;
51
52 public circleview (context, int screenwidth, int screenheight, Boolean isactive ){
53 super (context );
54 mpaint = new paint ();
55 // de-sawtooth
56 mpaint. setantialias (true );
57 mscreenheight = screenheight;
58 mbackgroundheight = mscreenheight/36;
59 mbackgroundwidth = mbackgroundheight * 2;
60 mcircleradius = mbackgroundheight/2-2;
61 // the center point remains unchanged
62 mfinalcenter = mcircleradius;
63 mfinalheight = mbackgroundheight;
64 this. isactive = isactive;
65}
66
67 @ override
68 protected void ondraw (canvas ){
69 // todo auto-generated method stub
70 super. ondraw (canvas );
71 If (isactive ){
72 // circle
73 mbackgroundheight = mscreenheight/38;
74 mcircleradius = mbackgroundheight/2-2;
75} else {
76 mbackgroundheight = mscreenheight/60;
77 mcircleradius = mbackgroundheight/2-2;
78}
79
80 mpaint. setcolor (color. Black );
81 canvas. drawcircle (mfinalcenter + 1, mfinalcenter + 3, mcircleradius, mpaint );
82 mpaint. setcolor (color. White );
83 canvas. drawcircle (mfinalcenter + 2, mfinalcenter + 2, mcircleradius, mpaint );
84}
85
86 @ override
87 protected void onmeasure (INT widthmeasurespec, int heightmeasurespec ){
88 final int width = mbackgroundwidth;
89 final int Height = mfinalheight;
90 if (DBG) log ("-width:" + width + "-Height:" + height );
91 setmeasureddimension (width, height );
92}
93
94 private void log (string MSG ){
95 log. E (log_tag, MSG );
96}
97
98 public void updateinvalidate (){
99 this. invalidate ();
100}
101
102 public void reset (){
103 isactive = false;
104 this. invalidate ();
105}
106
107 Public void active (){
108 isactive = true;
109 This. invalidate ();
110}
111
112}
The above is a program preview. You are welcome to download and try it out.