Inspiration
With the growth of applications like meerkat and periscope in the video streaming space, we thought the audio streaming space was something which we could venture upon. We wished to come up with an app that was spontaneous and had the capability to go viral.
What it does
Imagine you are going around USC you see the band tailgating the football team and you like what they are playing. You just take out your mobile phone, open voices and cast this audio byte. Voices limits audio bytes to unto 90 seconds. When you cast out your audio byte, you will have to choose a radius upto which this byte is to be cast to. We know the exact coordinates of where this stream was recorded. The user can optionally add a 50 character text message to describe what the audio byte is about (eg) #USC #Tailgate #USCvUCLA. Once you cast this audio byte into the platform there is no talking it back, it's for everyone to listen to.
When I login to the web-application or mobile application I will be able to see the streams around me on a map. The streams are marked by colors from dark red to red based on their popularity. Hovering on these streams would given me meta information about byte. Clicking on it would play the byte. I will be able to 'like' the byte or 'comment' on it as well.
How I built it
These audio bytes are subjected to a temperature metric. Bytes created by popular users will be 'hotter'. We assign an absolute value of hotness to the byte once it's created. As more users start listening to it, liking it or commenting on it we increase the temperature of the stream by linear amounts. If a stream remains inactive for a long time their temperatures start to drop exponentially over time. With inspiration from 'exponential-decay' of radio-active elements and applying to this problem we came up with an efficient metric to gauge the effective popularity of bytes. We set a lower bound threshold on the hotness when we query bytes. We used simple mysql spatial queries to fetch bytes around a location with their specified radius.
We built a RAILS API server on top of a MYSQL database. The API server provides well defined HTTP api calls for login, byte creation, listing bytes around a location in a paginated fashion, to comment on streams, like streams (etc). The web / mobile apps interact with this API server based on these defined APIs and interface with the user. The web application was a front end SPA with angular-js. We were also working on android and IOS applications.
Challenges I ran into
We set out to build an API backend, a web-app, an android app and an IOS app. We failed miserably in managing our time. I think we over-engineered the product and started thinking outside the confines of presenting this product at the end of the a hackathon which caused us a lot of time. (eg) I like to TDD, so I spent a lot of time writing tests for the API backend code. We were only able to build a functional API server. All the other three of our front ends are a work in progress.
Accomplishments that I'm proud of
I believe that this is a great idea. If engineered to scale and built with a nice funky feel to it, I believe this app can go viral.
What I learned
I personally gained a lot of experience from this project as a leader. Right from convincing my team mates that this is an Idea worth investing their time in, to defusing conflicts, taking calls on feasibility.
What's next for Voices
This is just the beginning. Over the next one month we are hoping to spend time on this and engineer it right and build it to scale. We are looking to do a soft launch around USC.
As a longterm vision, I see a lot of scope for Voices in terms of a tool to gauge the sentiment of people around a specific region on various topics. I believe this has tremendous value much more than a service like twitter because we get much more insight from audio data. With the learning technologies available at hand and with considerable data this platform will help gauge sentiments of people much more accurately.
Log in or sign up for Devpost to join the conversation.