Mini Project Final Draft

Embed Size (px)

DESCRIPTION

ivrs system, design project basics

Citation preview

  • IVRS BASED COLLEGE RESULT INFORMATION SYSTEM

    B. Tech Mini-Project Report

    Submitted in partial fulfillment for the award of the Degree of Bachelor of Technology in Electronics and Communication Engineering

    By

    (1)Amal Roshan B110511EC

    (2) Dennis Leslie Jacob B110357EC

    (3) Jithin VJ- B110011EC

    (4) Animesh Mukherjee- B110826EC

    (5) Deepak Surendran-B110172EC

    Under the guidance of

    Dr.A.V.Babu (Associate Professor, ECED)

    Department of Electronics and Communication Engineering NATIONAL INISTITUTE OF TECHNOLOGY CALICUT

    NIT Campus P.O., Calicut - 673601, India 2014

  • CERTIFICATE

    This is to certify that the thesis entitled IVRS BASED COLLEGE RESULT INFORMATION SYSTEM is a bona fide record of the mini-project done by Amal Roshan(Roll No.B110511EC),

    Dennis Leslie Jacob (Roll No. B110357EC), Jithin VJ (Roll No.B110011EC),Animesh Mukherjee(Roll No. B110826EC) and Deepak Surendran (Roll No.B110172EC) under my

    supervision and guidance, in partial fulfillment of the requirements for the award of Degree of Bachelor of Technology in Electronics and Communication Engineering from National Institute of

    Technology Calicut for the year 2015.

    Dr A.V. Babu (Guide)

    Associate Professor Dept. of Electronics and Communication Engineering

    Place: Date:

  • ACKNOWLEDGEMENT We take this opportunity to express our profound gratitude and deep regards to our guide Professor A V Babu for his exemplary guidance, monitoring and constant encouragement throughout the course of this thesis. The blessing, help and guidance given by him time to time shall carry us a long way in the journey of life on which we are about to embark. We are obliged to our fellow classmates for the valuable information provided by them in their respective fields. We are also thankful for our project evaluators Dr.P C Subramaniam, Ms.Bindiya T.S and Mrs. Suja K J for pointing out the drawbacks and for their valuable feedback.

    Lastly, we thank almighty, parents, brothers, sisters and friends for their constant encouragement without which this assignment would not be possible.

  • INTRODUCTION

    Interactive voice response (IVR) is a technology that allows a computer to interact with humans through the use of voice and DTMF tones input via keypad.

    In telecommunications, IVR allows customers to interact with a companys host system via a telephone keypad or by speech recognition, after which they can service their own inquiries by following the IVR dialogue. IVR systems can respond with pre-recorded or dynamically generated audio to further direct users on how to proceed. IVR applications can be used to control almost any function where the interface can be broken down into a series of simple interactions. IVR systems deployed in the network are sized to handle large call volumes.

    IVR technology is also being introduced into automobile systems for hands-free operation. Current deployment in automobiles revolves around satellite navigation, audio and mobile phone systems.

    It is common in industries that have recently entered the telecommunications industry to refer to an automated attendant as an IVR. The terms, however, are distinct and mean different things to traditional telecommunications professionals, whereas emerging telephony and VoIP professionals often use the term IVR as a catch-all to signify any kind of telephony menu, even a basic automated attendant. The term voice response unit (VRU), is sometimes used as well.

  • Objective: The objective of our project is to develop an Interactive Voice Response System that can be used to provide information such as announcement of results via a user demanded query. The system should have proper responses for every query that is demanded.

    Methodology: The project is divided in following parts as under methodologies:

    1. Database: At first we require a source of information which is created in the form of excel sheets that include student details like name, roll number, year, cgpa and attendance. Further details are included like faculty names for different courses and average marks. These excel files are then accessed via matlab during the initiation of the system. The information can be accessed by following the instructions as delivered by the system.

    The user that is the caller presses keys on his keypad which are converted into DTMF tones and sent via his mobile phone to the mobile phone in the system. The audio output of the mobile phone at the receiver is given as input to the dtmf decoder which changes it into a digital output .This digital output is used by the microcontroller and sent to the computer via USB. Matlab accesses the serial port of the laptop and gets the user input from there.

    In Matlab a FSM is created. The inputs from the serial output

    2. Creation of a FSM: FSM or finite state machine is created in the matlab so that based upon the queries different states or LEVELS OF INFORMATION can be accessed. The coding is done in the matlab using its indigenous methods and functions. Further the database is linked to the FSM so that the system can now provide information based upon the queries.

    3. Providing an Input interface: The system should be able to get inputs from users, that is ensured by the serial communication process between the system and the user can provide inputs by pressing keys that generate Dual tone multi frequency (DTMF) signals that are decoded to provide proper levels of information. The pressed key from the input is acquired at the system and is decoded by the DTMF decoder which is serially connected to the FSM.

    4. Wireless signal detector circuit and receiver: The receiver phone has automatic call answer on i.e. it receives call itself. The presence of a call is detected by a ring detector circuit that can be used to initiate the IVRS system i.e. to make it go to its first state from where it starts the process of information announcement.

    4.1 Working of signal detector: Under zero signal conditions the threshold value is adjusted using a rheostat and this threshold value is used to compare the detected signals and light up the LED which is used as the detector. The cellphone signals are from 0.9 GHz to 3 GHz and the detector is thus designed using capacitors like 100nF.

    Overview of working of the circuit: The IVRS system is initiated by a call from some user that acts to bring the FSM to its zero state. This call is detected and decoded using the wireless signal detector and the DTMF decoder. After that the user can retrieve information as per his/her choice by pressing suitable keys as query inputs. Pressing * reverts the process and it begins from the zero state again if the user is not sure about the previous query.

  • BLOCK DIAGRAM

    WIRELESS SIGNAL DETECTOR

    In order to detect the incoming calls and know whether there is an active call going on we use the following wireless signal detector circuit. The presence of a call is detected by a ring detector circuit that can be used to initiate the IVRS system i.e. to make it go to its first state from where it starts the process of information announcement. Use of buzzer is optional.

    CIRCUIT DIAGRAM

  • Working of the signal detector circuit:

    In the absence of any wireless signals, the input or antenna only has some noise voltage which is less than the voltage at Pin 3, as it is a fixed DC voltage. Now the o/p of U1-A is high and thus voltage at Pin5 is high, then we adjust the voltage at Pin6 using the potentiometer to get a proper higher value that keeps the Pin7 at a high state so that LED is reverse biased and does not glow.

    What happens when there is a wireless signal in the neighborhood? As the antenna pics up a wireless signal of frequency say some GHz ranged, the capacitor C2 gets short.Effectively,the differential voltage appearing across U!-A is very small, hence the o/p is also very low,ie PIN 5 is at low, and Pin6 is at high. So the output of the U1-B is low i.e. Pin 7 is at low and hence LED is forward biased. Thus wireless signals are detected. Some points about the circuit: 1. The IC LM-358 is a dual op-amp ice that has pin configuration as shown in the figure. Its dc gain is 100dB and it is both op amps are internally compensated. The first op-amp has a feedback while the other doesnt. So most of amplification is done by U1-B, hence input differential voltage of U1-B is of interest and is adjusted thus using potentiometer. 2. The IC LM 358 doesnt amplify signals in GHz range, rather it attenuates such high frequency as the unity gain frequency of the LM358 is of the order MHz so it will attenuate signals with higher frequencies.

  • DUAL TONE MULTIPLE FREQUENCY

    DTMF is a signalling system for identifying the keys or better say the number dialled on a pushbutton or DTMF keypad. The early telephone systems used pulse dialling or loop disconnect signalling. This was replaced by multi frequency (MF) dialling. DTMF is a multi-frequency tone dialling system used by the push button keypads in telephone and mobile sets to convey the number or key dialled by the caller. DTMF has enabled the long distance signalling of dialled numbers in voice frequency range over telephone lines. This has eliminated the need of telecom operator between the caller and the called and evolved automated dialling in the telephone switching centres. DTMF (Dual tone multi frequency) as the name suggests uses a combination of two sine wave tones to represent a key. These tones are called row and column frequencies as they correspond to the layout of a telephone keypad.

    TYPICAL DTMF KEYPAD

    A DTMF keypad (generator or encoder) generates a sinusoidal tone which is mixture of the row and column frequencies. The row frequencies are low group frequencies. The column frequencies belong to high group frequencies. This prevents misinterpretation of the harmonics. Also the frequencies for DTMF are so chosen that none have a harmonic relationship with the others and that mixing the frequencies would not produce sum or product frequencies that could mimic another valid tone. The high-group frequencies (the column tones) are slightly louder than the low-group to

  • compensate for the high-frequency roll off of voice audio systems. The row and column frequencies corresponding to a DTMF keypad have been indicated in the above figure.

    DTMF tones are able to represent one of the 16 different states or symbols on the keypad. This is equivalent to 4 bits of data, also known as nibble. Most DTMF decoders can process at least 10 tones per second under the worst of conditions, so DTMF can easily convey 40 (10 x 4) bits or 5 bytes of data per second which is nowhere near to the performance of a good communication modem, which can operate nearly 600 times faster (28,800 bits per second). But DTMF signalling is lot more robust under noisy line conditions. It should be noted that the numbers and symbols on the keypad do not always match the binary values of DTMF decoders. Most notably, the 0 on the keypad is represented in DTMF by a decimal value of 10 or binary value of 1010. The binary codes corresponding to symbols in a DTMF keypad are listed below.

    DECIMAL VALUE BINARY VALUE KEYBOARD SYMBOL 0 0000 D

    1 0001 1 2 0010 2 3 0011 3

    4 0100 4 5 0101 5

    6 0110 6 7 0111 7

    8 1000 8 9 1001 9

    10 1010 0 11 1011 *

    12 1100 # 13 1101 A

    14 1110 B 15 1111 C

  • Applications DTMF tones are thus mainly used at the telephone switching centres for detection of dialled/called number. They are also used by certain radio and cable TV networks. These networks use DTMF tones to signal a network station or local cable operator when a local advertisement is to be inserted or for station identification. In broadcasting, this is known as local insertion. DTMF tones were also used by terrestrial stations for turning on and shutting off remote transmitters.

    DTMF (dual tone multi frequency) is the signal to the phone company that you generate when you press an ordinary telephone's touch keys. In the United States and perhaps elsewhere, it's known as "Touchtone" phone (formerly a registered trademark of AT&T). DTMF has generally replaced loop disconnect ("pulse") dialling. With DTMF, each key you press on your phone generates two tones of specific frequencies. So that a voice can't imitate the tones, one tone is generated from a high-frequency group of tones and the other from a low frequency group. Here are the signals you send when you press your touchtone phone keys: A number of companies make microchips that send and receive DTMF signals. The Telephony Application Program Interface (TAPI) provides a way for a program to detect DTMF digits.

    Example: 1209 Hz on 697 Hz to make the 1 tone

    The DTMF keypad is laid out in a 44 matrix in which each row represents a low frequency and each column represents a high frequency. Pressing a single key sends a sinusoidal tone for each of the two frequencies. For example, the key 1 produces a superimposition of tones of 697 and 1209 hertz (Hz). Initial pushbutton designs employed levers, so that each button activated two contacts. The tones are decoded by the switching centre to determine the keys pressed by the user.

  • APPLICATION OF DTMF IN IVRS TECHNOLOGY Dtmf helps us to decode the signal inputs sent by the user to the server (in our case the laptop) that helps in choosing between the alternatives. The GSM technology coupled with DTMF acts as a powerful tool to access data and helping the user to get the required output. Here we use the dtmf decoder module with IC MT8870D. This decoder IC decodes DTMF tones to 4 bit binary value. Connect this with your cell phones earphone jack (3.5mm), dial your number from another cell phone and press any keys. Those keys will be decoded to 4 bit values on the DTMF decoder module connected on first cell phone. The decoded binary output is sent to the Arduino that sends signals to the laptop. Laptop have the preloaded excel sheets that act as the database .The matlab audio out function helps to output the required result in the form of audio. ARDUINO UNO Arduino is a single-board microcontroller, intended to make the application of interactive objects or environments more accessible.[1] The hardware consists of an open-source hardware board designed around an 8-bit Atmel AVR microcontroller, or a 32-bit Atmel ARM. Current models feature a USB interface, 6 analog input pins, as well as 14 digital I/O pins which allows the user to attach various extension boards. Introduced in 2005, it was designed to give students an inexpensive and easy way to program interactive objects. It comes with a simple integrated development environment (IDE) that runs on regular personal computers and allows to write programs for Arduino using C or C++. The current prices of Arduino boards run around $30 and those of related "clones" as low as $9. Arduino boards can be purchased pre-assembled or as do-it-yourself kits. Hardware design information is available for those who would like to assemble an Arduino by hand. It was estimated in mid-2011 that over 300,000 official Arduinos had been commercially produced, and in 2013 that 700,000 official boards were in users' hands.

  • What Arduino can do ?

    Arduino can sense the environment by receiving input from a variety of sensors and can affect its surroundings by controlling lights, motors, and other actuators. The microcontroller on the board is programmed using the Arduino programming language (based on Wiring) and the Arduino development environment (based on Processing). Arduino projects can be stand-alone or they can communicate with software running on a computer (e.g. Flash, Processing, and MaxMSP). The boards can be built by hand or purchased preassembled; the software can be downloaded for free. The hardware reference designs (CAD files) are available under an open-source license, you are free to adapt them to your needs. Arduino Code

    Analog input- The Arduino samples the analog output of the signal detector circuit. It is sampled using ADC of the Arduino board. It has an ADC which can convert analog values in the range of 0 to 5V into 1024 levels. This is compared with a threshold value to detect whether a call is active or not. If the values are high constantly it indicates that there is no call. There will be some fluctuations in the output when there is an active call. These fluctuations are detected. The threshold set is 500 if the sensor value falls below 500 we assume a call is detected. If the sensor value remains high above 500 for a long time (here 1000 is the number of times used). The DTMF decoder output is read from the I/O pins. There will be change in the DTMF output

  • only when a user presses any key. The Arduino compares the read value (Val) with the previous value (preval) it reads and sends it to the laptop only if there is any change the DTMF output.

    int preval;

    int val;

    int call;

    int count = 0;

    int sensorPin = A0;

    int sensorValue = 0;

    void setup()

    {

    // start serial port at 9600 bps:

    Serial.begin(9600);

    Serial.println('a');

    char a = 'b';

    while(a!='a')

    {

    a = Serial.read();

    }

    //pinMode(0, INPUT);

    pinMode(3, INPUT);

    pinMode(4, INPUT);

    pinMode(5, INPUT);

    pinMode(6, INPUT);

    }

    void loop()

    {

    //val =dtmf();

    val =0;

    if(digitalRead(3)==1)

  • val =val+1;

    if(digitalRead(4)==1)

    val =val+2;

    if(digitalRead(5)==1)

    val =val+4;

    if(digitalRead(6)==1)

    val =val+8;

    sensorValue = analogRead(sensorPin);

    if(sensorValue1000)

    call= 0;

    }

    if(val != preval&&call==1)// sends dtmf output to the serial port if there is any change in dtmf //output and call is active

    {

    Serial.println(val);

    preval =val;

    }

    else

    {

    }

    }

  • MATLAB Matlab is a high-level language and interactive environment for numerical computation, visualization, and programming. Using MATLAB, you can analyze data, develop algorithms, and create models and applications. The language, tools, and built-in math functions enable you to explore multiple approaches and reach a solution faster than with spreadsheets or traditional programming languages, such as C/C++ or Java. We can use MATLAB for a range of applications, including signal processing and communications, image and video processing, control systems, test and measurement, computational finance, and computational biology. More than a million engineers and scientists in industry and academia use MATLAB, the language of technical computing.

    OVERVIEW OF CODE

    Matlab application is run on the laptop. It keeps reading the serial port. Matlab first imports all the excels sheets. It then setups serial communication with the Arduino board. It repeatedly reads the serial port to check for inputs from Arduino board. When the phone is not in a call matlab receives no input and waits for an input. The code is based on an FSM model. In the model there are some variables to hold state information. An array is made to hold the information of the state table. Whenever a new input is received from the serial port it uses this input and the value of the current state to determine the next state. So the main script contains an infinite loop which reads the current input and accesses the table (runs state change script) to find which the next state is. Once it enters the new state it runs the audio out script which contains all the required audio outputs corresponding to the state. The roll number, branch etc. which are given as input by the user are stored in separate variables which are used to access the excel files for the required data as requested by the user. Matlab uses text to speech conversion to convert techniques to read out the details which will reach audio the user.

    Matlab code

    Main script: This script should be run in Matlab in the beginning. This script runs all the other necessary scripts. In =11; prev =11; setup_text_to_speech_converter disp('speech converter ready'); get_data disp('data ready'); setup_state_machine [s] = setupSerial('COM7'); audio_out

  • while(1) %gets input from serial port in1 = fscanf(s); in = str2num(in1) %in = input('enter input from serial'); %code for exchanging 10 and 0 if(in==12) in= prev; else prev = in; end if(size(in)~=0)%checks if there is any input string statechange;%changes state according to input if(in~=11) audio_out;%makes corresponding audio output end end end % DTMF CODES % 1 1 % .... % 9 9 % 10 0 % 11 * % 12 # % 13 A % 14 B % 15 C % 0 D

    setup_text_to_speech_converter: This consists of all the statements to enable text to speech conversion (TTS). After this any the statement speak. Speak (string) read out the string. Speak is just a function of Speech Synthesizer class.

  • NET.addAssembly('System.Speech'); speak = System.Speech.Synthesis.SpeechSynthesizer; speak.Volume = 100; get data: This script is used to import all the necessary excel files. This same code is repeated for each excel file. All the numeric data is available in an array form by using the command eeef.data.Sheet1; it returns a floating point array with all numeric data in arrat form. char(eeef.textdata.Sheet1); gets all text data in array form and can be used to an array of strings

    eeef = importdata('eeef.xls'); %code for extracting all information regarding numeric data eeef_list = eeef.data.Sheet1; eeef_roll_max = max(eeef_list,[],1); eeef_roll_max = eeef_roll_max(1); %code for extracting all information regarding text data eeef_textinfo = char(eeef.textdata.Sheet1); [eeef_no_of_rows,eeef_no_of_colheaders] = size(eeef.textdata.Sheet1);

    This same code is repeated for each excel file. All the numeric data is available in a

    setup_state_machine: state table is an array of structures. Each structure corresponds to a particular state (current state) max input is the maximum input (max_input) is valid any input higher than this is invalid. If the input is invalid the next state is state_to_max_input. The array table consists of a 2 tuple consisting of the input and the new state corresponding to this input. This table will be used by the next script to change the state. The variables in the end are used to store state information about the roll number, year branch etc.

    state table = [struct('current_state',1,'max_input',2,'state_to_max_input',1,'table',[1,2;2,13]),%welcome and enter roll number make change here struct('current_state',2,'max_input',3,'state_to_max_input',10,'table',[1,11;2,11;3,11])%enter branch struct('current_state',3,'max_input',10,'state_to_max_input',4,'table',[1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5;9,5;10,5]),%first digit

  • struct('current_state',4,'max_input',10,'state_to_max_input',4,'table',[1,5;2,5;3,5;4,5;5,5;6,5;7,5;8,5;9,5;10,5]),%first digit incorrect struct('current_state',5,'max_input',10,'state_to_max_input',5,'table',[1,6;2,6;3,6;4,6;5,6;6,6;7,6;8,6;9,6;10,6]),%second digit struct('current_state',6,'max_input',10,'state_to_max_input',6,'table',[1,7;2,7;3,7;4,7;7,7;6,7;7,7;8,7;9,7;10,7]),%third digit struct('current_state',7,'max_input',2,'state_to_max_input',8,'table',[1,9;2,9;3,9;4,9;5,9]),%attendance or marks struct('current_state',8,'max_input',2,'state_to_max_input',8,'table',[1,9;2,9;3,9;4,9;5,9]),%attendance or marks struct('current_state',9,'max_input',2,'state_to_max_input',9,'table',[1,9;2,9;3,9;4,9;5,9])%marks struct('current_state',10,'max_input',4,'state_to_max_input',11,'table',[1,11;2,11;3,11])%enter branch incorrect struct('current_state',11,'max_input',4,'state_to_max_input',12,'table',[1,3;2,3;3,3;4,3])%enter year struct('current_state',12,'max_input',4,'state_to_max_input',12,'table',[1,3;2,3;3,3;4,3]) struct('current_state',13,'max_input',3,'state_to_max_input',14,'table',[1,15;2,15;3,15]) struct('current_state',14,'max_input',3,'state_to_max_input',14,'table',[1,15;2,15;3,15]) struct('current_state',15,'max_input',10,'state_to_max_input',15,'table',[1,17;2,17;3,17;4,17;5,17;6,17;7,17;8,17;9,17;10,17])%enter course code struct('current_state',16,'max_input',10,'state_to_max_input',17,'table',[1,17;2,17;3,17;4,17;5,17;6,17;7,17;8,17;9,17;10,17])%enter course code struct('current_state',17,'max_input',10,'state_to_max_input',17,'table',[1,18;2,18;3,18;4,18;5,18;6,18;7,18;8,18;9,18;10,18])%enter course code struct('current_state',18,'max_input',2,'state_to_max_input',19,'table',[1,20;2,20;3,20;4,20]) struct('current_state',19,'max_input',2,'state_to_max_input',19,'table',[1,20;2,20;3,20;4,20]) struct('current_state',20,'max_input',2,'state_to_max_input',20,'table',[1,20;2,20;3,20;4,20])] State =1; roll_number= 0; faculty_or_student =0; current_year = 0; coursecode=0; branch =0;

  • setup_serial: This is a function that returns a serial object that can be used to access the serial port. The baud rate, number of databits and stopbits are set and initial handshaking protocol is used to make sure serial communication with the arduino is done properly.

    function [ s] = setupSerial(comPort ) s = serial(comPort); set(s,'DataBits',8); set(s,'StopBits',1); set(s,'BaudRate',9600); set(s,'Parity','none'); fclose(s); fopen(s); a = 'b'; while(a~='a') a = fread(s,1,'uchar'); end if(a == 'a') disp('serial communication setup successfully'); end fprintf(s,'a') end

    Statechange: The state change script checks whether input is 11 which is used to indicate restart. If in =11 it goes backs to initial state and resets all state variables. If the input is not 11 it uses the state table to decide which the next state is.

    if(in~=11) if(in>statetable(state). max_input||in ==0) state = statetable(state). state_to_max_input; else state = statetable(state).table(in,2); end else state =1; roll_number =0; coursecode =0; faculty_or_student =0; current_year = 0; in =11; audio_out; branch =0; disp('new call or restart'); end

  • audio_out: There is an output corresponding to each state which consists of some speech output. In case the input is supposed to change some state variable (other than state which is changed in state change script) like roll number or branch that change is also made here. if(in==10) in=0; elseif(in==0) in= 10; end switch(state) case {1} speak.Speak('Welcome to National Institute of Technology Interactive voice Response System'); speak.Speak('Anytime you want to restart press star symbol and if consequtive inputs are same press hash symbol'); speak.Speak('Press 1 if you want to know student marks,Press 2 if you want to know course details'); roll_number=0; current_year = 0; faculty_or_student =0; case {2} speak.Speak('You have chosen student marks'); faculty_or_student =1; speak.Speak(' press 1 for electrical press 2 for electronics press 3 for computer science '); case {3} current_year = in; switch( current_year) case {1} speak.Speak('You have chosen first year'); case {2} speak.Speak('You have chosen second year'); case {3} speak.Speak('You have chosen third year'); case {4} speak.Speak('You have chosen fourth year'); otherwise end speak.Speak(' please enter roll number'); case {4} speak.Speak(' please enter roll number'); case {5} roll_number =in;

  • disp(roll_number); case {6} roll_number =roll_number*10+in; disp(roll_number); case {7} roll_number =roll_number*10+in; disp(roll_number); switch(branch) case {1} switch(current_year) case {1} if(roll_number>eee1_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(eee1_list(roll_number,1))); speak.Speak('Name entered in marklist is'); speak.Speak(eee1_textinfo(eee1_no_of_rows+roll_number+1,:)); speak.Speak('press 1 for grade point average two for attendance'); end case {2} if(roll_number>eee2_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(eee2_list(roll_number,1))); speak.Speak('Name entered in marklist is'); speak.Speak(eee2_textinfo(eee2_no_of_rows+roll_number+1,:)); speak.Speak('press 1 for grade point average two for attendance'); end case {3} if(roll_number>eee3_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(eee3_list(roll_number,1)));

  • speak.Speak('Name entered in marklist is'); speak.Speak(eee3_textinfo(eee3_no_of_rows+roll_number+1,:)); speak.Speak('press 1 for grade point average two for attendance'); end case {4} if(roll_number>eee4_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(eee4_list(roll_number,1))); speak.Speak('Name entered in marklist is'); speak.Speak(eee4_textinfo(eee4_no_of_rows+roll_number+1,:)); speak.Speak('press 1 for grade point average two for attendance'); end otherwise end case {2} switch(current_year) case {1} if(roll_number>ece1_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(ece1_list(roll_number,1))); speak.Speak('Name entered in marklist is'); speak.Speak(ece1_textinfo(ece1_no_of_rows+roll_number+1,:)); speak.Speak('press 1 for grade point average two for attendance'); end case {2} if(roll_number>ece2_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(ece2_list(roll_number,1))); speak.Speak('Name entered in marklist is');

  • speak.Speak(ece2_textinfo(ece2_no_of_rows+roll_number+1,:)); speak.Speak('press 1 for grade point average two for attendance'); end case {3} if(roll_number>ece3_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(ece3_list(roll_number,1))); speak.Speak('Name entered in marklist is'); speak.Speak(ece3_textinfo(ece3_no_of_rows+roll_number+1,:)); speak.Speak('press 1 for grade point average two for attendance'); end case {4} if(roll_number>ece4_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(ece4_list(roll_number,1))); speak.Speak('Name entered in marklist is'); speak.Speak(ece4_textinfo(ece4_no_of_rows+roll_number+1,:)); speak.Speak('press 1 for grade point average two for attendance'); end otherwise end case {3} switch(current_year) case {1} if(roll_number>cse1_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(cse1_list(roll_number,1))); speak.Speak('Name entered in marklist is'); speak.Speak(cse1_textinfo(cse1_no_of_rows+roll_number+1,:));

  • speak.Speak('press 1 for grade point average two for attendance'); end case {2} if(roll_number>cse2_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(cse2_list(roll_number,1))); speak.Speak('Name entered in marklist is'); speak.Speak(cse2_textinfo(cse2_no_of_rows+roll_number+1,:)); speak.Speak('press 1 for grade point average two for attendance'); end case {3} if(roll_number>cse3_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(cse3_list(roll_number,1))); speak.Speak('Name entered in marklist is'); speak.Speak(cse3_textinfo(cse3_no_of_rows+roll_number+1,:)); speak.Speak('press 1 for grade point average two for attendance'); end case {4} if(roll_number>cse4_roll_max) speak.Speak(' roll number incorrect Please enter again'); state = 4; roll_number = 0; else speak.Speak('entered roll number is'); speak.Speak(num2str(cse4_list(roll_number,1))); speak.Speak('Name entered in marklist is'); speak.Speak(cse4_textinfo(cse4_no_of_rows+roll_number+1,:)); speak.Speak('press 1 for grade point average two for attendance'); end otherwise end

  • otherwise end case {8} speak.Speak('press 1 for grade point average two for attendance'); case {9}%marks if(in == 1) speak.Speak('your grade point average is'); else speak.Speak('your attendance is'); end switch(branch) case{1} switch(current_year) case{1} text = num2str(eee1_list(roll_number,2+in)); case{2} text = num2str(eee2_list(roll_number,2+in)); case{3} text = num2str(eee3_list(roll_number,2+in)); case{4} text = num2str(eee4_list(roll_number,2+in)); otherwise end case {2} switch(current_year) case{1} text = num2str(ece1_list(roll_number,2+in)); case{2} text = num2str(ece2_list(roll_number,2+in)); case{3} text = num2str(ece3_list(roll_number,2+in)); case{4} text = num2str(ece4_list(roll_number,2+in)); otherwise end case {3} switch(current_year) case{1} text = num2str(cse1_list(roll_number,2+in)); case{2} text = num2str(cse2_list(roll_number,2+in)); case{3} text = num2str(cse3_list(roll_number,2+in)); case{4} text = num2str(cse4_list(roll_number,2+in)); otherwise

  • end otherwise end speak.Speak(text); speak.Speak('press 1 for grade point average two for attendance or else press star symbol to restart'); case{10} speak.Speak('Branch entered was incorrect press 1 for electrical press 2 for electronics press 3 for computer science '); case{11} branch =in; switch(branch) case {1} speak.Speak('You have chosen electrical'); case {2} speak.Speak('You have chosen electronics'); case {3} speak.Speak('You have chosen computer science'); otherwise end disp(branch); speak.Speak('Please enter your current year '); case{12} speak.Speak('Entered year is incorrect please enter again'); case{13} speak.Speak('press 1 for electrical press 2 for electronics press 3 for computer science '); case{14} speak.Speak('Branch entered was incorrect press 1 for electrical press 2 for electronics press 3 for computer science '); case{15} branch = in; speak.Speak('Please enter the course code'); case{16} case{17} if(in
  • else speak.Speak('entered course code was '); speak.Speak(num2str(eeef_list(coursecode,1))); speak.Speak('name of course entered was'); speak.Speak(eeef_textinfo(eeef_no_of_rows+coursecode+1,:)); speak.Speak('Press 1 to know faculty in charge else Press 2 to know average marks in previous year'); end case{2} if(coursecode>ecef_roll_max) speak.Speak('course code entered was incorrect '); state =16; else speak.Speak('entered course code was '); speak.Speak(num2str(ecef_list(coursecode,1))); speak.Speak('name of course entered was'); speak.Speak(ecef_textinfo(ecef_no_of_rows+coursecode+1,:)); speak.Speak('Press 1 to know faculty in charge else Press 2 to know average marks in previous year'); end case{3} if(coursecode>csef_roll_max) speak.Speak('course code entered was incorrect '); state =16; else speak.Speak('entered course code was '); speak.Speak(num2str(csef_list(coursecode,1))); speak.Speak('name of course entered was'); speak.Speak(csef_textinfo(csef_no_of_rows+coursecode+1,:)); speak.Speak('Press 1 to know faculty in charge else Press 2 to know average marks in previous year'); end otherwise end case{19} speak.Speak('Invalid input Press 1 to know faculty in charge else Press 2 to know average marks in previous year'); case{20} switch(branch) case{1} if(in==1) speak.Speak('faculty in charge is'); speak.Speak(eeef_textinfo(2*eeef_no_of_rows+coursecode+1,:)); elseif(in==2) speak.Speak('average marks in previous year'); speak.Speak(num2str(eeef_list(coursecode,4))); end

  • speak.Speak('Press 1 to know faculty in charge else Press 2 to know average marks in previous year'); case{2} if(in==1) speak.Speak('faculty in charge is'); speak.Speak(ecef_textinfo(2*ecef_no_of_rows+coursecode+1,:)); elseif(in==2) speak.Speak('average marks in previous year'); speak.Speak(num2str(ecef_list(coursecode,4))); end speak.Speak('Press 1 to know faculty in charge else Press 2 to know average marks in previous year'); case{3} if(in==1) speak.Speak('faculty in charge is'); speak.Speak(csef_textinfo(2*csef_no_of_rows+coursecode+1,:)); elseif(in==2) speak.Speak('average marks in previous year'); speak.Speak(num2str(csef_list(coursecode,4))); end speak.Speak('Press 1 to know faculty in charge else Press 2 to know average marks in previous year'); otherwise end if(in~=1&&in~=2) speak.Speak('Press 1 to know faculty in charge else Press 2 to know average marks in previous year'); end speak.Speak('Or Press star symbol to restart'); otherwise end

  • RESULTS AND COMMENTS: The IVRS based system can be used to provide accurate information stored in a database using interface with the user and the system. In our project we draw the following conclusions and comments

    1. The expected performance of an ideal IVRS system differs from the achieved because of the initial latency that is caused due to linking of database to the FSM which takes some time (about 15 seconds) that is more than ideal value.

    2. The performance of this system is limited by the large size of the database and slow pace of accessing it.

    3. Most of the components used are working to detect signals about threshold values like wireless signal detector and the DTMF decoder. The threshold values can shift due to change in temperature or aging thus it can give faulty service if used for long.

    UACKNOWLEDGEMENT