- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个脚本,它使用在 Python 的 speech_recognition 中构建的 IBM Speech to Text API。它非常慢。响应时间约为 5 秒即可回复我。我怀疑 while True 循环,导致 CPU 烧毁,但我不知道。
代码如下:
import speech_recognition as sr
import pyttsx
import time
import requests
engine = pyttsx.init()
time_check = time.strftime("%H")
time_check = int(time_check)
# current weather
url = "http://api.openweathermap.org/data/2.5/weather?lat=59.13&lon=10.22&APPID=8f605c186309e3d8f60bb7b2f31ba75c&units=metric" \
""
r = requests.get(url)
response_dict = r.json()
#daily forecast
url_daily = "http://api.openweathermap.org/data/2.5/forecast/daily?q=Sandefjord&mode=JSON&units=metric&cnt=7&appid=8f605c186309e3d8f60bb7b2f31ba75c" \
""
r_daily = requests.get(url_daily)
response_dict_daily = r_daily.json()
days = response_dict_daily["list"]
tomorrow = days[1]
#weather variables
main = response_dict["main"]
wind = response_dict["wind"]
description = response_dict["weather"]
url_1 = "https://newsapi.org/v1/articles?source=techcrunch&apiKey=d35bd4b8699b444fbcd3661e39c0bf49"
f = requests.get(url_1)
response = f.json()
articles = response["articles"]
article_1 = articles[0]
article_2 = articles[1]
article_3 = articles[2]
article_4 = articles[3]
title_1 = article_1["title"]
title_2 = article_2["title"]
title_3 = article_3["title"]
title_4 = article_4["title"]
while True:
r = sr.Recognizer()
with sr.Microphone() as source:
print("Say something!")
audio = r.listen(source)
try:
if "hello" in r.recognize_ibm(audio, username=IBM_USERNAME, password=IBM_PASSWORD):
if time_check < 9:
engine.say("Good morning sir, did you sleep well?")
engine.runAndWait()
elif time_check < 16:
engine.say("Good afternoon sir")
engine.runAndWait()
elif time_check > 16:
engine.say("Good evening sir")
engine.runAndWait()
if "update" in r.recognize_ibm(audio, username=IBM_USERNAME, password=IBM_PASSWORD):
print("Initializing news listing...")
engine.say(title_1)
engine.say(title_2)
engine.say(title_3)
engine.say(title_4)
engine.runAndWait()
if "time" in r.recognize_ibm(audio, username=IBM_USERNAME, password=IBM_PASSWORD):
time_say = time.strftime("%H:%M")
engine.say(time_say)
engine.runAndWait()
if "date" in r.recognize_ibm(audio, username=IBM_USERNAME, password=IBM_PASSWORD):
time_saydate = time.strftime("%B %d")
engine.say(time_saydate)
engine.runAndWait()
if "weather" in r.recognize_ibm(audio, username=IBM_USERNAME, password=IBM_PASSWORD):
temp = main["temp"]
windspeed = wind["speed"]
umbrella = description[1]
description = description["description"]
engine.say("Here is a quick overview of current weather. The temperature is at " + temp + "degrees. The wind speed is at " + windspeed + "meters per second. Overall it is " + description)
if umbrella == "Rain":
engine.say("I recommend you bring an umbrella sir, it is raining")
if "tomorrow" in r.recognize_ibm(audio, username=IBM_USERNAME, password=IBM_PASSWORD):
temp = tomorrow["temp"]
temp_1 = temp["day"]
temp_1 = int(temp_1)
desc = tomorrow["weather"]
desc_1 = desc[0]
desc_2 = desc_1["description"]
engine.say("The weather for tomorrow is " + str(temp_1) + " degrees. The description is " + desc_2)
engine.runAndWait()
if desc_2 == "rain":
engine.say("It is going to rain, I would recommend bringing an umbrella")
engine.runAndWait()
print("Watson thinks you said " + r.recognize_ibm(audio, username=IBM_USERNAME, password=IBM_PASSWORD))
except sr.UnknownValueError:
print("IBM Speech to Text could not understand audio")
engine.say("Couldnt recognize, please try again sir")
engine.runAndWait()
except sr.RequestError as e:
print("Could not request results from IBM Speech to Text service; {0}".format(e))
最佳答案
首先录制音频然后将其发送到服务器是根本错误的。记录需要时间,然后发送数据和返回响应也需要时间。
如果您想要良好的交互,您需要使用 Websockets 将音频流式传输到服务器,而不是使用 HTTP 请求发送它。录制结束服务器会发回解码结果。
speech_recognition 库在这里设计得不好,你应该直接使用 IBM 接口(interface)和 python websocket 模块。 Python 示例在这里:
https://github.com/watson-developer-cloud/speech-to-text-websockets-python
关于Python语音识别响应非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42054151/
我正在尝试检查 Entry 中是否存在重复项,并使用内联消息提醒用户该数字存在。 $(document).ready(function(){ $("#con1").blur(function(
我有一个基于类的 View 。我在引导模式上使用 Ajax。为了避免页面刷新,我想使用此类基于 View 返回 JSON 响应而不是 HTTP 响应,但我只看到了如何为基于函数的 View 返回 JS
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个大型内部企业基于 Web 的应用程序在 IIS6 上运行 ASP.NET 3.5,生成 401 个“未经授权”响应,然后是 200 个“Ok”响应(如 Fiddler 所述)。我知道为什么会发
感谢您研究我的问题。 我有一个node/express服务器,配置了一个server.js文件,它调用urls.js,而urls.js又调用 Controller 来处理http请求,所有这些都配置相
当我使用以下命令时,我得到正确的 JSON 响应: $ curl --data "regno=&dob=&mobile=" https://vitacademics-rel.herokuapp.co
我有一个非常简单的 RESTful 服务,它通过 POST 接收一些表单数据,其目的是在云存储(Amazon S3、Azure Blob 存储等)中简单地保留文本主体(具有唯一 ID)作为一个文件..
UDP 不发送任何 ack,但它会发送任何响应吗? 我已经设置了客户端服务器UDP程序。如果我让客户端向不存在的服务器发送数据,那么客户端会收到任何响应吗? 我的假设是; 客户端 --> 广播服务器地
我有一个电梯项目,其中 有一个扩展 RestHelper 的类,看起来像这样 serve{ "api" / "mystuff" prefix { case a
我们正在寻求覆盖 Kong 错误响应结构并编写自定义消息(即用我们的自定义消息替换“超出 API 速率限制”、“无效的身份验证凭据”等)。 我们要找的错误响应结构(代码是自定义的内部错误代码,与HTT
我正在尝试监听 EKEventStoreChangedNotification 以检查当我的应用程序处于后台时日历是否已更改。 我在 View Controller 的 initWithNibMeth
我了解 javascript,并且正在学习 ASP.NET C# 我想要做什么(完成的是javascript): document.getElementById('divID-1'
是否可以过滤所有 har 对象并仅获取 POST 请求/响应?也许在初始化 BrowserMobProxyServer 期间是这样做的方法?我需要将 har 对象保存到文件中并上传到 har 查看器。
我正在尝试向 Oauth 的 API 发送响应。遗憾的是,Symfony2 文档在解释 $response->headers->set(...); 的所有不同部分方面做得很差。 这是我的 OauthC
我正在尝试测试用例来模拟 api 调用,并使用 python 响应来模拟 api 调用。 下面是我的模拟, with responses.RequestsMock() as rsps: url
在尝试在 Haskell 中进行一些领域驱动设计时,我发现自己遇到了这个问题: data FetchAccessories = FetchAccessories data AccessoriesRes
我正在与 ANT+ USB 棒连接,并用项目 react 器替换我自己天真的“MessageBus”,因为它看起来非常合适。 USB接口(interface)本质上是异步的(单独的输入/输出管道),我
我正在将项目迁移到AFNetworking 2.0。使用AFNetworking 1.0时,我编写了代码来记录控制台中的每个请求/响应。这是代码: -(AFHTTPRequestOperation *
我有以下代码段。 ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){
我有问题......我在 php 中有一个监听器脚本可以执行以下操作: if ($count != 1) {echo 'no';} else { echo "yes";} 因此它会回显"is"或“
我是一名优秀的程序员,十分优秀!