The whole aim of using computers is to make our lives easier, by helping us solve everyday problems. So, any improvement that further achieves this aim is readily welcomed. Wireless devices were introduced for this very purpose of convenience, these days more people are beginning to accept devices like wireless headsets etc. (Dragan, 2015); Especially the rather busy ones such as office workers and regular drivers who use their hands more often than the next man. This technology is also being used in various other industries, for example in gaming (Razer, 2015); wireless controllers and the like are provided for the convenience of the player.
Since the advent of computing, we have continuously looked for ways to make working with computers easier and more convenient, one of such methods is controlling or operating the computer using voice commands, this process is known as speech recognition. By definition, speech recognition is the ability of a machine or program to identify words and phrases in a spoken language and convert them to a machine-readable format. It can be applied in various systems including: Interactive Voice Response systems (as used in customer care lines), Voice controlled GPS systems (as used in cars), automatic subtitling in movies and various others, etc. (LumenVox, 2010).
Voice control further improves the convenience provided by such devices, and it has already been applied in various systems. For example, the aforementioned driver could control the GPS system in his car without letting go of the steering wheel, while the busy secretary could simply tell her phone to dial a number while she works on an important file. Although, the more technically savvy users may prefer to use such a system because they prefer talking to typing, or simply because it’s fun.
SOFTWARE AND HARDWRAE REQUIREMENTS SPECIFICATION
A Software Requirements Specification (SRS) is a complete description of the behaviour of the system to be developed. It includes set of use cases that describes all the interactions the user will have with the software. Use cases are also known as functional requirements. In addition to use cases, SRS also contain non-functional requirements. Non-functional requirements which impose constraints on the design or implementation (such as performance engineering requirements, quality standards or design constraints)
The purpose of this SRS document is to provide detailed information about various requirements to all the developers who are working in this project.
• Project Maaya is an Interactive Desktop Assistant capable of performing various tasks of the Computer by using voice recognition.
• Maaya will be able to understand various user input through voice and respond interactively (such as Google now or Siri).
• Maaya will be useful in many situations such as
? When the user is busy doing other works
? When user needs to perform unknown actions such as opening critical paths of system etc.
The remainder of this document includes two chapters. The first one providing information about system functionality and system interaction with the users. It also introduces different stakeholders and their interaction with the system followed by the system constraints followed assumptions about the product. The second chapter provides the requirements specification in detailed terms and a description of the different system interfaces. Different specification techniques are used in order to specify the requirements more precisely for different audiences.
3.2 Overall Description
3.2.1 Product Perspective
The Project Maaya inherits the basic functionalities and features of well-known products such as Google assistant, Siri, Cortana, Amazon Eco and other products. Project Maaya is a hybrid of all these products in terms of functionality and usability.
3.2.2 Product function
3.2.3 User Characteristics
? Interacting with application using voice
? Issuing commands
? Clear speech
? Respond to application
3.3 Software requirements
? Operating System: Windows 7 and above
? Microsoft Visual Studio 2017
? Media Player (such as VLC, KMP etc.)
3.4 Hardware requirements
? Processor: Intel Core i3 and above
? Hard Disk: 160 GB and above
? RAM: 4 GB and above
? GPU: (optional)
? Microphone: Standard
? Speakers: Standard
3.5 Functional Requirements
3.5.1 Introduction: Project-Maaya is an Interactive Desktop Assistant capable of performing various tasks of the Computer by using voice recognition
3.5.2Inputs: Commands through voice
3.5.3 Processing: Recognize the speech, perform the specified task and provide voice response
3.5.4 Outputs: Interactive voice and visual response
3.5.5 Error Handling: Speak error message on unsuccessful events
3.5 Non-Functional Requirements
3.5.1 Performance: Performance of the application must be optimal
3.3.2 Reliability: The application must provide consistent functionality with less than 1% of failure rate
3.3.3 Availability: The application must be available when user needs it. The application should respond with minimum or no delay.
3.3.4 Security: The application must be protect itself from external attacks or unauthorized access.
3.3.5 Maintainability: The application must be maintained by providing frequent updates and bug fixes.
3.3.6 Portability: The application can be easily installable on various versions of Windows.
Design is the first step in the development phase in any engineering product or system. Design is the planning that lays the basics for the making of every object or system. This document consists of several phases. Each of the above is explained in detail below.
4.1 Abstract Design
4.1.1 Architectural Design
The architectural design shows the conceptual model of the proposed system.
Fig 4.1 Architectural Design of Project-Maaya
4.2 Detailed Design
4.2.1 Use Case Diagram
A use case diagram is an interaction between users and system. It captures the goal of the users and the responsibilities of the system to its users.
Fig 4.2.1 Use case diagram of Project-Maaya
4.2.3 Sequence Diagram
A sequence diagram in Unified Modelling Language (UML) is a kind of interaction diagram that shows how process operates with one another and in what order. It is construct of a message sequence chart. It shows a parallel vertical lines, different process or objects that give simultaneously and as horizontal arrows. The message exchanged between them in order in which they occur. This allows the specification of simple runtime scenarios in a graphical manner.
Fig 4.2.3 Sequence diagram of Project-Maaya
Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard algorithm or policy. In computer science an implementation is a realization of a technical specification or algorithm as a programme, software programme components, and other computer system.
5.2 Pseudo code
TESTING AND RESULTS
Testing is a process of executing a program with explicit intension of finding errors if any, which makes the program fail. This phase is an important part of the software development. It performs a very critical role for quality assurance and for ensuring reliability of software. It is the process of finding errors and missing operations and also a complete verification to determine whether the objectives are met and the user requirements are satisfied.
The purpose of testing is:
? To verify the interaction between objects
? To verify the proper integration of all the components of the software.
? To verify that all the requirements have been correctly implemented.
? To identify and ensure defects are addressed prior to deployment of the software.
There are two basic approaches to test – Black-Box or functional testing and White-Box or structural testing.
6.2 Black-Box Testing
Black-Box testing or Functional Testing is an approach to testing where the testes are derived from the program or component specification. The system is a black box whose behavior can only be determined by studying its input and the related outputs. In functional testing the structure of the program is not considered. Test cases are decided slowly on the basis of the requirements or the specification of the program module and the internals of the module or the program are not considered for the selection of the test cases. Due to its nature, functional testing is often called as “Black-Box Testing”.
6.3 Unit Testing
Unit testing is a software development process in which the smallest testable parts of an application called units are individually and independently for operation. Unit testing is often automated but it can also be done manually. This testing mode is a component of Extreme Programming (XP) a programming method of software development that tales a meticulous approach to building a product by means of continual testing and revision.
Testing is done unit wise by taking each and every module which has been explained this section
6.4 Integration Testing
Integration testing takes as its input modules that have been unit tested, groups them in larger aggregates applies test designed in an integration test plan to those aggregates and delivers as its input the integrated system ready for system testing. In our project integration process involves building the system and testing the resultant system for problems that arise from component integration. There are complex interactions between the system components when an anomalous output is discovered it may be hard to find the source of the error. To make it easier to locate errors we should always use an incremental approach to system integration and testing.