[Tutor] sending a wav file to a website?

eryksun eryksun at gmail.com
Wed Feb 13 08:33:01 CET 2013


On Tue, Feb 12, 2013 at 3:48 PM, richard kappler <richkappler at gmail.com> wrote:
> So the question is, how do I get a wav file to a website like the one listed
> above and retrieve the text result using python (or don't I)? I've looked at
> and played around with urllib, I get how it works, I'm pretty comfy with it,
> but it seems to be for sending text only? Or is it?

Are you looking to use Google's speech recognition service? It's meant
for use with the Chrome browser. I suppose you can play around with it
for non-commercial, personal use. Bear in mind Google can pull the
plug on public access to the API at any time. Here's the unofficial
spec:

https://gist.github.com/1730160

And a rough draft:

    import urllib
    import urllib2
    import json

    SPEECH_URL = 'https://www.google.com/speech-api/v1/recognize'
    CLIENT = 'chromium'
    USER_AGENT = (
      'Mozilla/5.0 (X11; Linux x86_64) '
      'AppleWebKit/537.4 (KHTML like Gecko) '
      'Chrome/22.0.1229.56 Safari/537.4')

    def gspeech(data, rate=16000, lang='en-US', maxresults=10):
        params = urllib.urlencode({
          'lang': lang,
          'maxresults': maxresults,
          'client': CLIENT})
        url = '{0}?{1}'.format(SPEECH_URL, params)
        header = {
          'Content-Type': 'audio/x-flac; rate={0}'.format(rate),
          'User-Agent': USER_AGENT}
        request = urllib2.Request(url, data, header)
        data = urllib2.urlopen(request).read()
        return json.loads(data)

Sample data:
http://archive.org/details/MichaelGraySampleSamplewav

    >>> url = ('http://archive.org/download/'
    ...        'MichaelGraySampleSamplewav/Sample.flac')
    >>> data = urllib2.urlopen(url).read()
    >>> result = gspeech(data, 44100, 'en-UK')
    >>> result['hypotheses'][0]['utterance']
    u"I'm speaking normally"
    >>> result['hypotheses'][0]['confidence']
    0.7365484


More information about the Tutor mailing list