python - Speech_Recognition 连接失败并打印此错误
问题描述
我将此代码用于转录器,一切正常,但是当我尝试读取超过 2 分钟的文件时,脚本会打印此错误。
它尝试读取音频文件很长时间,然后才打印错误。
我在网上搜索但找不到正确的答案。
请大家帮忙,谢谢!
Python /root/app.py
from flask import Flask, render_template, request, redirect
import speech_recognition as sr
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def index():
transcript = ""
if request.method == "POST":
print("FORM DATA RECEIVED")
if "file" not in request.files:
return redirect(request.url)
file = request.files["file"]
if file.filename == "":
return redirect(request.url)
if file:
recognizer = sr.Recognizer()
audioFile = sr.AudioFile(file)
with audioFile as source:
data = recognizer.record(source)
transcript = recognizer.recognize_google(data, key=None)
return render_template('index.html', transcript=transcript)
if __name__ == "__main__":
app.run(debug=True, threaded=True)
HTML /模板/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Speech Recognition</title>
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="{{ url_for('static', filename='styles/index.css') }}" />
</head>
<body>
<div id="speechContainer">
<h1>Upload new File</h1>
<form method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<br>
<input type="submit" id="submitButton" value="Transcribe"/>
</form>
{% if transcript != "" %}
<div id="speechTranscriptContainer">
<h1>Transcript</h1>
<p id="speechText">{{ transcript }}</p>
</div>
{% endif %}
</div>
</body>
</html>
问题!!!
speech_recognition.RequestError
speech_recognition.RequestError: recognition connection failed: [Errno 32] Broken pipe
Traceback (most recent call last)
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 1346, in do_open
h.request(req.get_method(), req.selector, req.data, headers,
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1255, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1301, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1250, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1049, in _send_output
self.send(chunk)
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 971, in send
self.sock.sendall(data)
During handling of the above exception, another exception occurred:
File "/usr/local/lib/python3.9/site-packages/speech_recognition/__init__.py", line 840, in recognize_google
response = urlopen(request, timeout=self.operation_timeout)
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 214, in urlopen
return opener.open(url, data, timeout)
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 517, in open
response = self._open(req, data)
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 534, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 494, in _call_chain
result = func(*args)
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 1375, in http_open
return self.do_open(http.client.HTTPConnection, req)
File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 1349, in do_open
raise URLError(err)
During handling of the above exception, another exception occurred:
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2088, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2073, in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2070, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1515, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1513, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1499, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "/Users/edukom/Desktop/Projects-master/Speech-Recognition-Python-Final/app.py", line 59, in index
transcript = recognizer.recognize_google(data, language=language)
File "/usr/local/lib/python3.9/site-packages/speech_recognition/__init__.py", line 844, in recognize_google
raise RequestError("recognition connection failed: {}".format(e.reason))
speech_recognition.RequestError: recognition connection failed: [Errno 32] Broken pipe
The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error.
To switch between the interactive traceback and the plaintext one, you can click on the "Traceback" headline. From the text traceback you can also create a paste of it. For code execution mouse-over the frame you want to debug and click on the console icon on the right side.
You can execute arbitrary Python code in the stack frames and there are some extra helpers available for introspection:
dump() shows all variables in the frame
dump(obj) dumps all that's known about the object
解决方案
推荐阅读
- java - Keycloak 用户存储 SPI - 为什么 getUserById 在从 UserLookupProvider 接口的 getUserByUsername 后调用 4 次
- python - Matplotlib 蜡烛彼此靠得太近
- python - 如何从需要登录的网站上抓取信息
- javascript - 正则表达式获取字符串JS之间的单词
- python - 将多个嵌套字典作为单行放入 Dataframe
- c# - 第一次尝试自动完成
- android - 尽管使用了不同的 ID,但无法启动 Pending Intent 的多个实例
- c - 内存如何存储有符号和无符号字符
- java - 服务网关的单点故障 (Netflix Zuul)
- c# - 将对象转换为统一浮动?