Projets-2015-2016-Sonotone-SRS

The document provides a template of the Software Requirements Specification (SRS). It is inspired of the IEEE/ANSI 830-1998 Standard.

Read first:
 * http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Presentations/PPTX/Ch4.pptx
 * http://en.wikipedia.org/wiki/Software_requirements_specification
 * IEEE Recommended Practice for Software Requirements Specifications IEEE Std 830-1998

=1.  Introduction=

1.1 Purpose of the requirements document
The Software Requirements Specification (SRS) is a document describing the software system of our project: Sonotone adjustable by its user. It describes how the system is supposed to work with functional and non functional requirements.

1.2 Scope of the product
The Hearing aid is a technology well-knowned and well-used to correct impaired hearing. Designed to amplify sound for the wearer, this type of device requires a large amount of knowledge in signal process, electronics, software development and about the functionning of a human ear. For this project, we only focused on the software aspect.

The main problem when someone acquire a hearing aid is that you need to see a audioprothésis. The time and the money you will spend in a sonotone is not related to the technology but to the adjustements of the prosthesis.

The main goal of this project is to allow any user to adjust his hearing aid by himself. This will be made by our software which allows to simply modify the frequences heard with an equalizer.

1.3 Definitions, acronyms and abbreviations
Hearing aid / Sonotone : an electroacoustic device which is designed to amplify sound for the wearer

Hard of hearing person : A person whoch is partially deaf.

1.4 References
Fiche

http://air.imag.fr/index.php/Projets-2015-2016-Sonotone

Home Page

http://air.imag.fr/index.php/Sonotone

1.5 Overview of the remainder of the document
=2.  General description=

2.1 Product perspective
The main aim of the project is to provide a new type of software in hearing aids. The software will allow partially deaf people to adjust their sonotone themsleves.

2.2 Product functions
Apply differents filters on surrounding sound

Apply a gain on differents range of frequency

Use an audiogram to set the parameters of our software

Apply these filters on real-time signal

2.3 User characteristics
The User is able to change the parameters of the filters apply on the surrounding sound

After making his audiogram's results, the user is able to set his hearing aid.

With the advanced options, the user is able to apply any filters he want at specify frequency.

2.4 General constraints
We don't know precisely the hardware caracteristics of a hearing aid. Especially the speed of the processor, the microphone, the amplifier and how the sound is restituated.

Python module : NUMPY SCYPI

Real-time : PYAUDIO

2.5 Assumptions and dependencies
The Hardware part is composed of a small processor with a low calcul capacity. Our software has thereofore to be performant and well optimized.

=3.Specific requirements, covering functional, non-functional and interface requirements=
 * document external interfaces,
 * describe system functionality and performance
 * specify logical database requirements,
 * design constraints,
 * emergent system properties and quality characteristics.

3.1 Requirement X.Y.Z (in Structured Natural Language)
Function: Amplifying sounds to enable people who have hearing problems to hear properly

Description: The sonotone captures any sound and aplifies the wanted frequencies with the adapted gain

Inputs: Settings according to the person's audiogram

Source: Ambient noise (including people talking)

Outputs: Same ambient noise with given frequencies amplified

Destination: This device is designed to be used by patially deaf people to replace the cost of a hearing aid specialist

Action:
 * Signal processing of the sound that comes in. Apply the needed filters to the sound with python modules so that the sound coming out is audible by the partially deaf user
 * Sets the adequate filters with the initial settings to be able to do live processing

Non functional requirements:
 * Easy to use : friendly interface
 * Relatively cheap : has to be less expensive than the hearing aid specialist consultation

Pre-condition:

Post-condition:

Side-effects:

=4. Product evolution=

Improved Filters :

As for now, our filters are not as good as professional filters. They are efficient enough for our live equalizer but we still observe saturation and interference on some frequencies. That could be fixed by starting over every filters with other techniques and hence it could be an evolution of the software.

A feature that apply the correct filters directly from an audiogram by parsing it:

The raw audiogram would be given to the software and the correct filters would be applied automatically to create the "perfect" correction without having to touch yourself the frequencies and filters.

=5. Appendices=

Improved the user interface:

A live overview of the filters applied could be added to improve the user experience. With such a feature, the user would be able to visualize how the signal is actually modified by the filters he decided to apply.

=6. Index=

https://sourceforge.net/projects/equalizerapo/

https://sites.google.com/site/haskell102/home/frequency-analysis-of-audio-file-with-python-numpy-scipy

http://stackoverflow.com/questions/2356779/importing-sound-files-into-python-as-numpy-arrays-alternatives-to-audiolab

https://github.com/tmwoz/pyEQ

http://docs.scipy.org/doc/scipy-0.15.1/reference/signal.html

https://scipy.github.io/old-wiki/pages/Cookbook/FIRFilter.html

http://www.blog-audioprothesiste.fr/tag/traitement-du-signal/

http://zone.ni.com/reference/en-XX/help/371325F-01/lvdfdtconcepts/notch_peak_filters/

http://www.dsprelated.com/showcode/169.php

https://gist.github.com/endolith/5455375

https://gist.github.com/ttm/3851044

http://scipy.github.io/old-wiki/pages/Cookbook/ApplyFIRFilter

http://www.dsprelated.com/freebooks/sasp/

http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

https://developer.mbed.org/handbook/SciPy-FIR-Filter