Often people speak too loud in office environments, where people need to concentrate on work. It needs some overcoming for the individual to ask the offender to be more silent. It would be great if the offender is detected automatically and notified.
What it does
People can install an iOS app and send periodically data to our service. Our service analyzes if someone is too loud and at the moment we can show on a monitoring frontend who is too loud. It also shows a graph of the past volume in a room.
How we built it
- We have an iOS app with Swift that periodically sends audio data to a container in heroku with python and flask.
- First in the background we analyze if a sample is too loud.
- If it is too loud, we send the sample too a microsoft service to identify the loudest speaker
- The loudest speaker is written into a text file in s3, where the frontend can pull it periodically
- We also write the data for volume graphs in s3, where the frontend also pulls it periodically
- The frontend is build in vue.js
- For the speaker identification we needed to submit training data, which we saved in dynamo.
Challenges we ran into
- In the beginning we had no idea how the speaker identification works, so we first had to do a lot of research for available services.
- Uploading audio samples from the iOS app to our service
- Push notifications with firebase
- Send a lot of audio data to our service
Accomplishments that we proud of
- Have a more or less reliable speaker identification
- connection of a lot of parts into a working application
What we learned
- process audio in python
- use microsoft speech services
What's next for decibell
- properly set up the push notifications
- improve latency of when the loudest speaker is identified