/speech2text

Using Google Speech to Text API Provide a Simple Interface to Convert Audio Files

Primary LanguageRuby

Speech2Text

Using the power of ffmpeg/flac/Google and ruby here is a simple interface to play with to convert speech to text.

Using a new undocumentd speech API from Google with the help of this article: mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/

We’re able to provide a very simple API in Ruby to decode simple audio to text.

The API from Google is not yet public and so may change. It also seems to be very fragile as more times than not it will return a 500, so the library has retry code built in - for larger audio files 10+ failures may return before a successful result is retrieved…

It also appears that the API only likes smaller audio files so there is a built in chunker that allows us to split the audio up into smaller chunks.

Installation

Add this line to your application’s Gemfile:

gem 'speech2text'

And then execute:

$ bundle

Or install it yourself as:

$ gem install speech2text

You must also install the ffmpeg utility on your local machine. If you are using OS X, the easiest way to do this is to install brew. You may need to instal XQuartz before installing ffmpeg:

$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
# You may be prompted to install XQuartz. Get it at https://xquartz.macosforge.org
$ brew install ffmpeg

Example

require 'speech'

audio = Speech::AudioToText.new("i-like-pickles.wav")
puts audio.to_text.inspect
=> {"captured_json"=>[["I like pickles", 0.92731786]], "confidence"=>0.92731786}

Command Line

speech2text i-like-pickles.wav
cat i-like-pickles.json
{"captured_json"=>[["I like pickles", 0.92731786]], "confidence"=>0.92731786}