sound-1781569_1280

At Exotel Labs we analyze tons of anonymized voice samples for addressing varied research problem in the voice space. While there are multiple techniques to this, a proven methodology to do voice analysis begins with converting audio into Hidden Markov Models (HMM).HTK is the Hidden Markov Model Toolkit originally developed at the Machine Intelligence Lab of the Cambridge University Engineering Department that helps in speech analyses, among a variety of applications. This blog will enumerate steps to convert a standard .wav audio file into its corresponding .htk format.Though primarily stored in the WAV format, its characteristics include --- 16...

untitled-design-1

I would like to continue the blog series I started earlier - Introducing Digital Audio - with this story about frequencies and elucidating what they mean. Frequency is a word that one frequently encounters when they read any book or research paper related to digital signal processing on any multimedia. And, when it comes to audio, there are different types of frequencies.To begin with, let us consider an original analog signal. The amplitude of an analog signal varies in the timeline between positive values and negative values. When the wave crosses the zero amplitude 2 times, it means that it...

direction

At Exotel, our platform is hosted on AWS. We have scaled exponentially over the last few years. What was a month worth of transactions a few years back now happens in a single day! What we use at Exotel At Exotel, we use a variety of AWS services such as EC2, DynamoDB, ElasticCache and so on. Services such as EC2 instances give us great flexibility in deploying and managing our in-house developed services. Other managed services like ElasticSearch & ElasticMapReduce take care of cluster management and let the developer focus purely on application development. The Managed Vs. Self Hosted Dilemma As developers, one decision...

Uber Notification

Exotel HQ, Bangalore, 6:30 PM. The view from the roof of our office is one like no other. We face west only to see the beautiful Ulsoor lake and serene Buffalo Ganj smack dab in the middle of it. The warm, familiar smell of petrichor reminds me that it's that time of the year again. My friends leave early to avoid the downpour but I stay behind, with the intent to watch the sun burrow itself into the ground behind the now-drizzle.It’s now 7:00 PM, and I step out of the office. There are grand plans for the evening, and...

go-programming

Exotel is proud to be an active supporter of "Women Who Go" initiative. This global initiative seeks to create an active Go community for women engineers. The group's efforts include imparting Go programming skills, organizing study groups and workshops, evaluating Go  for varied use cases, and the like. More information on the group and their activities can be found here.Recently, the first India chapter of this initiative came into existence. Cindy Sridharan and Sarah Adams from the "Women Who Go" community initiated the conversation for a similar chapter. Bangalore is hosting the GopherCon India, 2016, and therefore is an ideal candidate...

go-generate

Go is a great systems language. It’s simple, doesn’t have too many frills and gets the job done. In addition to that, the tooling around Go has made it a great language for teams. For instance, gofmt formats the code in the codebase in a standard manner because life is too short for inconsistent code. GoVet prints inconsistencies in the code; such as Printf calls whose arguments don’t match with the format string. This ensures that the code produced by all team members has the same look and feel. One other tool in the Go kitty is “go generate”....

Untitled design (3)

This post is the first in a series of posts on Audio Processing written by Balaraman. Balaraman works in Labs division of Exotel where he analyses and researches huge volumes and audio data that we generate every day. Prior to Exotel, he founded crifpify.it, a video editing app. Real world audio is a continuous analog signal. But, we convert it to digital domain for easy compression & storage, easy transmission & faithful reproduction, easy manipulation (low-cost DSP processors + powerful algorithms). Analog is a continuous valued continuous time signal. That means it will have value for all the time instants with an...

Understanding (3)

"The problem with digital architecture", says Peter Eisenman, "is that an algorithm can produce endless variations, so an architect has many choices". This statement equally rings true when designing modern distributed systems that require careful thought and in-depth analysis before design decisions are made.A lot has been said about Go’s context library, and its use in pipelined processing for HTTP request-response. There are use cases where the context library can be an off-the-shelf solution to maintaining context flow. However, how does Go's context library help in designing other highly concurrent and distributed system? What is the code complexity when using...

BDD-for-go

Most engineering teams know that testing is important but it’s often overlooked due to constraints of time or just pure laziness. There’s enough literature out there touting the benefits of testing. I’m not going to reiterate those arguments, but trust me on this: “You do need to test your application. Not manually, but in an automated fashion.”Recently, we have been migrating a bunch of our platform services to Golang. Reasons for this merit a separate blog post on its own. But for the rest of the tutorial, I’m going to show you how to do BDD in Golang. What is Behaviour...

Hiring

A year back we were around 25 folks, 10 of us were part of the engineering team. This has been a year of growth, in terms of the number of calls/SMS-es that have flown through our system - we connect 2 million people a day via our platform. Our tried and tested stack was beginning to burst at the seams. We started to redo a considerable part of our stack to ensure it scaled well, and at the same time we set the ball rolling to rewrite our entire stack from scratch because it became evident our current stack would only...