RequestError:识别连接失败:[Errno 11001] getaddrinfo failed

时间:2021-07-03 00:42:44

标签: python-3.x error-handling speech-recognition pydub

我正在尝试使用以下代码将语音转换为文本:

# importing libraries 
import speech_recognition as sr 
import os 
from pydub import AudioSegment
from pydub.silence import split_on_silence

# create a speech recognition object
r = sr.Recognizer()

# a function that splits the audio file into chunks
# and applies speech recognition
def get_large_audio_transcription(path):
    """
    Splitting the large audio file into chunks
    and apply speech recognition on each of these chunks
    """
    # open the audio file using pydub
    sound = AudioSegment.from_wav(path)  
    # split audio sound where silence is 700 miliseconds or more and get chunks
    chunks = split_on_silence(sound,
        # experiment with this value for your target audio file
        min_silence_len = 500,
        # adjust this per requirement
        silence_thresh = sound.dBFS-14,
        # keep the silence for 1 second, adjustable as well
        keep_silence=500,
    )
    folder_name = "audio-chunks"
    # create a directory to store the audio chunks
    if not os.path.isdir(folder_name):
        os.mkdir(folder_name)
    whole_text = ""
    # process each chunk 
    for i, audio_chunk in enumerate(chunks, start=1):
        # export audio chunk and save it in
        # the `folder_name` directory.
        chunk_filename = os.path.join(folder_name, f"chunk{i}.wav")
        audio_chunk.export(chunk_filename, format="wav")
        # recognize the chunk
        with sr.AudioFile(chunk_filename) as source:
            audio_listened = r.record(source)
            # try converting it to text
            try:
                text = r.recognize_google(audio_listened)
            except sr.UnknownValueError as e:
                print("Error:", str(e))
            else:
                text = f"{text.capitalize()}. "
                print(chunk_filename, ":", text)
                whole_text += text
    # return the text for all chunks detected
    return whole_text

text = get_large_audio_transcription(DIRECTORY+'audiofile.wav')

一开始,这很顺利,系统打印了生成的文本。但是,过了一会儿,它会产生以下错误:

回溯(最近一次调用最后一次):

文件“C:\Users\20200016\Anaconda3\lib\urllib\request.py”,第 1350 行,在 do_open 中 h.request(req.get_method(), req.selector, req.data, headers,

文件“C:\Users\20200016\Anaconda3\lib\http\client.py”,第 1255 行,在请求中 self._send_request(method, url, body, headers, encode_chunked)

文件“C:\Users\20200016\Anaconda3\lib\http\client.py”,第 1301 行,在 _send_request 中 self.endheaders(body, encode_chunked=encode_chunked)

文件“C:\Users\20200016\Anaconda3\lib\http\client.py”,第 1250 行,在 endheaders 中 self._send_output(message_body, encode_chunked=encode_chunked)

文件“C:\Users\20200016\Anaconda3\lib\http\client.py”,第 1010 行,在 _send_output 中 self.send(msg)

文件“C:\Users\20200016\Anaconda3\lib\http\client.py”,第 950 行,发送 self.connect()

文件“C:\Users\20200016\Anaconda3\lib\http\client.py”,第 921 行,在连接中 self.sock = self._create_connection(

文件“C:\Users\20200016\Anaconda3\lib\socket.py”,第 787 行,在 create_connection 中 对于 getaddrinfo(host, port, 0, SOCK_STREAM) 中的 res:

文件“C:\Users\20200016\Anaconda3\lib\socket.py”,第 918 行,在 getaddrinfo 中 对于 _socket.getaddrinfo(host, port, family, type, proto, flags) 中的 res:

gaierror: [Errno 11001] getaddrinfo 失败

在处理上述异常的过程中,又发生了一个异常:

Traceback (most recent call last):

  File "C:\Users\20200016\Anaconda3\lib\site-packages\speech_recognition\__init__.py", line 840, in recognize_google
    response = urlopen(request, timeout=self.operation_timeout)

  File "C:\Users\20200016\Anaconda3\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)

  File "C:\Users\20200016\Anaconda3\lib\urllib\request.py", line 525, in open
    response = self._open(req, data)

  File "C:\Users\20200016\Anaconda3\lib\urllib\request.py", line 542, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +

  File "C:\Users\20200016\Anaconda3\lib\urllib\request.py", line 502, in _call_chain
    result = func(*args)

  File "C:\Users\20200016\Anaconda3\lib\urllib\request.py", line 1379, in http_open
    return self.do_open(http.client.HTTPConnection, req)

  File "C:\Users\20200016\Anaconda3\lib\urllib\request.py", line 1353, in do_open
    raise URLError(err)

URLError: <urlopen error [Errno 11001] getaddrinfo failed>


During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "<ipython-input-8-f3473d5cc92f>", line 1, in <module>
    interview_text = get_large_audio_transcription('C:/Users/20200016/Documents/Prive/BNVKI/interviewpart2.wav')

  File "<ipython-input-7-35a903d9c342>", line 43, in get_large_audio_transcription
    text = r.recognize_google(audio_listened)

  File "C:\Users\20200016\Anaconda3\lib\site-packages\speech_recognition\__init__.py", line 844, in recognize_google
    raise RequestError("recognition connection failed: {}".format(e.reason))

RequestError: recognition connection failed: [Errno 11001] getaddrinfo failed

我能做些什么来克服这个问题?

0 个答案:

没有答案