Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

recognize_google speech recognition broken pipe python

I have an audio file (30 seconds) and want to convert it into text using google.

I am following this guide :

https://realpython.com/python-speech-recognition/#working-with-audio-files

my code is the following :

cut=sr.AudioFile("cutsound.wav") with cut as source: audio = r.record(source) r.recognize_google(audio)

Now i get this endless error message :

---------------------------------------------------------------------------
BrokenPipeError                           Traceback (most recent call last)
~/anaconda3/envs/tf/lib/python3.6/urllib/request.py in do_open(self, http_class, req, **http_conn_args)
   1317                 h.request(req.get_method(), req.selector, req.data, headers,
-> 1318                           encode_chunked=req.has_header('Transfer-encoding'))
   1319             except OSError as err: # timeout error

~/anaconda3/envs/tf/lib/python3.6/http/client.py in request(self, method, url, body, headers, encode_chunked)
   1238         """Send a complete request to the server."""
-> 1239         self._send_request(method, url, body, headers, encode_chunked)
   1240 

~/anaconda3/envs/tf/lib/python3.6/http/client.py in _send_request(self, method, url, body, headers, encode_chunked)
   1284             body = _encode(body, 'body')
-> 1285         self.endheaders(body, encode_chunked=encode_chunked)
   1286 

~/anaconda3/envs/tf/lib/python3.6/http/client.py in endheaders(self, message_body, encode_chunked)
   1233             raise CannotSendHeader()
-> 1234         self._send_output(message_body, encode_chunked=encode_chunked)
   1235 

~/anaconda3/envs/tf/lib/python3.6/http/client.py in _send_output(self, message_body, encode_chunked)
   1064                         + b'\r\n'
-> 1065                 self.send(chunk)
   1066 

~/anaconda3/envs/tf/lib/python3.6/http/client.py in send(self, data)
    985         try:
--> 986             self.sock.sendall(data)
    987         except TypeError:

BrokenPipeError: [Errno 32] Broken pipe

During handling of the above exception, another exception occurred:

URLError                                  Traceback (most recent call last)
~/anaconda3/envs/tf/lib/python3.6/site-packages/speech_recognition/__init__.py in recognize_google(self, audio_data, key, language, show_all)
    839         try:
--> 840             response = urlopen(request, timeout=self.operation_timeout)
    841         except HTTPError as e:

~/anaconda3/envs/tf/lib/python3.6/urllib/request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context)
    222         opener = _opener
--> 223     return opener.open(url, data, timeout)
    224 

~/anaconda3/envs/tf/lib/python3.6/urllib/request.py in open(self, fullurl, data, timeout)
    525 
--> 526         response = self._open(req, data)
    527 

~/anaconda3/envs/tf/lib/python3.6/urllib/request.py in _open(self, req, data)
    543         result = self._call_chain(self.handle_open, protocol, protocol +
--> 544                                   '_open', req)
    545         if result:

~/anaconda3/envs/tf/lib/python3.6/urllib/request.py in _call_chain(self, chain, kind, meth_name, *args)
    503             func = getattr(handler, meth_name)
--> 504             result = func(*args)
    505             if result is not None:

~/anaconda3/envs/tf/lib/python3.6/urllib/request.py in http_open(self, req)
   1345     def http_open(self, req):
-> 1346         return self.do_open(http.client.HTTPConnection, req)
   1347 

~/anaconda3/envs/tf/lib/python3.6/urllib/request.py in do_open(self, http_class, req, **http_conn_args)
   1319             except OSError as err: # timeout error
-> 1320                 raise URLError(err)
   1321             r = h.getresponse()

URLError: <urlopen error [Errno 32] Broken pipe>

During handling of the above exception, another exception occurred:

RequestError                              Traceback (most recent call last)
<ipython-input-41-59c33ef07a2e> in <module>()
----> 1 r.recognize_google(audio)

~/anaconda3/envs/tf/lib/python3.6/site-packages/speech_recognition/__init__.py in recognize_google(self, audio_data, key, language, show_all)
    842             raise RequestError("recognition request failed: {}".format(e.reason))
    843         except URLError as e:
--> 844             raise RequestError("recognition connection failed: {}".format(e.reason))
    845         response_text = response.read().decode("utf-8")
    846 

RequestError: recognition connection failed: [Errno 32] Broken pipe
like image 734
hmmmbob Avatar asked Aug 09 '18 01:08

hmmmbob


People also ask

Why is my speech recognition not working Python?

As error also says, you must install the pyaudio module; because microphone input requires it. You can easily install it by typing pip install PyAudio to your terminal window.

How do you make a speech recognizer in Python?

Recognition of Spoken WordsPyaudio − It can be installed by using pip install Pyaudio command. SpeechRecognition − This package can be installed by using pip install SpeechRecognition. Google-Speech-API − It can be installed by using the command pip install google-api-python-client.

Is Python speech recognition offline?

This requires an active internet connection to work. However, there are certain offline Recognition systems such as PocketSphinx, that have a very rigorous installation process that requires several dependencies. Google Speech Recognition is one of the easiest to use.


1 Answers

The method described in your link uses hacks and not guaranteed to work reliably. Google blocks long files or excessive requests.

Google has an official API which you can use to recognize long files, it is paid though:

like image 150
Nikolay Shmyrev Avatar answered Sep 22 '22 21:09

Nikolay Shmyrev