实现本功能需要一定的web技术,明白前后端BS框架结构,会使用JQuery ajax,会使用Python conda或pip进行python库管理,还要会使用Python Web框架:Django或者Flask……其实怎么都好,管那么多干嘛,直接上手即可。

而且这个也没啥特定的实现路线,用不用Web框架又如何。

Python入门的技术难度不高,推荐用这个,当然也可以用Java搭个服务器,直接走Web端(用到网络接口,下面会说到)。如果你想搭建一个本地语音识别的话Python是个不错的选择。

推荐一下需要的软件,Anaconda(官网下的慢,可以找个软件管家或者清华大学开源镜像库下)、VS code或者PyCharm、火狐或者Chrome(我是火狐粉)、uTools(uTools非必须,不过一些地方用起来还是不错的)ffmpeg(一些音频的转换和测试可以用,VVVVVery Good)。

首先要在Niagara站点上使用obix对外开放数据,这里的操作参见Niagara论坛操作:

Niagara快速入门教程(17):如何用obix获取和控制点位 - 新手入门 - Niagara Framework 中文技术社区 - Powered by Discuz!

Niagara社区真是好玩,要看内容得是社区成员,但看怎么申请成为社区成员也得是社区成员才能看(中指!),只能从从业人员那里传播,现在不知道怎么样了。

在这里说一下Python Django部分。

进行操作时无需考虑论坛中的Postman软件调试部分,直接进行Python库的安装。

在python conda环境下终端执行以下命令:

pip install oBIX

然后参考下面的博客链接:

[oBIX包使用教程] 使用 Python 通过 oBIX 协议访问 Niagara 数据 - IUpdatable - 博客园

oBIX只是一个方式,可以翻看一下源码,用一下方法实现数据获取:

保证站点开放了Niagara服务后,直接跑代码也是可以获取数据结果的。

这一方式可以用于JACE,修改IP地址就好,例如:192.168.1.140

from bs4 import BeautifulSoup
import requests
import timestart = time.time()
requests.packages.urllib3.disable_warnings()
response = requests.get('https://localhost/obix/config/Question/', auth=('ObixUser', 'Admin12345'), verify=False)
print('状态码:', response.status_code)
if response.status_code==200:xml_data = response.textsoup = BeautifulSoup(xml_data, 'lxml')refs = soup.find_all('ref')ref_name_list = []ref_value_list = []for ref in refs:ref_name_list.append(ref['name'])ref_value_list.append(ref['display'].split(" ")[0])# print(ref_name_list)# print(ref_value_list)data_dict = dict(zip(ref_name_list,ref_value_list))print(data_dict)

当然也可以使用post方法去设置点位的值:

from bs4 import BeautifulSoup
import requests
import time
start = time.time()
response = requests.post('https://localhost/obix/config/Datarefs/RenTi/set', auth=('ObixUser', 'Admin12345'), data='<bool val="false"/>',verify=False)
if response.status_code==200:print('执行成功')end = time.time()print(end - start)

然后是百度的语音项目,安装一下百度的库:

pip install baidu-aip

百度提供的SDK很多,可以选择Python、Node、Java等等,我尝试过Python和Node,看个人选择。

在百度智能云中新建一个语音识别项目,它会给你提供一个接口,按照其给的说明文档即可完成对接。

其实当你访问Niagara服务下的obix地址时就可以看到数据了,所以可以使用浏览器get的方式获取数据不必纠结python oBIX库。

Postman已经提供了从web端发起数据获取或改变的代码了,图中右上角的代码选项里就有。JavaScript、Jquery、Vue、React、TS的形式都有,有个前提是得搭个后台跑JS。

最后说一下录音问题,录音从前端进行,使用的是recorder.js,这里可以看一下脚本之家的说明:https://www.jb51.net/article/159849.htm ,建议去GitHub上看看,很好用。

将前端的录音文件发送给后端,这个后端看你的选择的技术路线,直接将音频的字节流发送给百度接口即可,它会给你发回识别结果。

如果是直接从前端发起就直接把语音数据发给接口就行了。

图为Django中的接口方式:

def audio(request):APP_ID = '*********'API_KEY = '************************'SECRET_KEY = '**************************'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)if request.method == 'POST':file = request.FILES.get('audio')file = file.read()text = client.asr(file, 'wav', 16000, {'dev_pid': 1537,})result_text = text['result'][0]return JsonResponse({'result':result_text})

当这一切都打通的时候即可想干嘛干嘛,其实这是一个外挂式的服务,弄这个的初衷自然是Niagara框架学不出个所以然,也没啥教程资源,懒得去看了。

技术有限,这是我走通的思路,Niagara的实际开发人员应该看不上这些。

做Niagara做的挺烦的,我终于要摆脱它了,

最后,我要说:Niagara,喝……忒!(吐痰)

楼控软件,Niagara外挂式服务语音控制实现方式相关推荐

  1. 掌控板教程 | 搞定 Siri 语音控制,只要半小时!

    话不多说,先上效果演示视频: 本教程适用于掌控板及其他 ESP32 开发板. # 前言 # 前段时间,我在公众号上面发了一篇文章:掌控板 V1.1 语音识别初体验 在这篇文章中,我使用了还处于测试阶段 ...

  2. [小黑科技] 破解一个电控升降桌,并改造成语音控制(上)—— 模拟中间人与控制手柄交互...

    1.电路图破译 其电路板如下,是一个程序员专用升降桌的控制手柄: 简单看电路板,其原理图猜测是8路并转串,用来收集按键按下信息:两个串转8路并来驱动3个7段数码管: 2.破解其数码管显示原理 因此简单 ...

  3. 智能楼控——新风系统控制思路

    这几条看了一些智能楼控的图纸,同时参加了西门子楼宇自控软件的3天培训,在此仅记录一些新风系统控制的相关内容(控制原理.方式基本大同小异,已在业内是很成熟的技术方案了),不会涉及到西门子楼控软件的介绍. ...

  4. 易语言语音控制输入法源码

    语音控制输入法系统结构:列表输入法,获得键盘布局,获得键盘布局列表,获得键盘布局名称,激活键盘布局, ======窗口程序集1 || ||------__启动窗口_创建完毕 || ||------_语 ...

  5. 保护你的聊天隐私---“外挂式”加密软件设计思路

    保护你的聊天隐私---"外挂式"加密软件设计思路<?xml:namespace prefix = o /> Jack zhai 即时通讯工具(常用的是聊天软件与网上电话 ...

  6. 网欣房地产CRM系统,售楼CRM软件

    网欣房地产CRM系统,售楼CRM软件 房地产项目管理系统,房地产售楼销售管理系统,房地产成本管理系统,物业管理系统 ,工程管理系统 ,企业短信平台系统,房地产信息化软件 www.cnwxsoft.co ...

  7. 开发工具与低代码开发平台丨上海道宁联合Grapecity为您提供各类软件开发工具和服务

    Grapecity 提供软件开发技术和低代码平台 通过各类软件开发工具和服务 提升开发效率 推动软件产业发展 葡萄城研发各类开发控件和 商业智能报表工具 提供控件技术和数据分析工具 基于专业控件的技术 ...

  8. pgadmin连接服务器失败_增值税发票税控软件:连接服务器失败是否使用离线文件进行更新?...

    增值税发票税控软件:连接服务器失败是否使用离线文件进行更新? 第一步:确认本地电脑是否可以正常打开网页: 打开电脑,网页查看一下是否可以正常上网,打开百度发现,可以正常上网. 第二步:请先确认网络配置 ...

  9. WMS智能仓储系统——保姆式服务系统

    随着越来越多企业的高速发展.业务规模的不断扩大,对仓库部门的管理水平和运作效率提出了新的挑战,如何建设一个高效运作的信息化仓库,利用信息化手段实施跟踪订单.了解准确的库存信息,为业务部门提供决策依据, ...

最新文章

  1. 目标检测开源代码汇总 object detection algorithm codes
  2. python判断素数的函数_Python素数prime函数练习_Python源码实操
  3. COJ 2192: Wells弹键盘 (dp)
  4. Java内存泄露的理解与解决
  5. unix中的grep家族
  6. 河北农业大学计算机科学分数线,河北农业大学现代科技学院计算机科学与技术专业2016年在河北理科高考录取最低分数线...
  7. C语言计算机二级考动态分配内存吗,08年计算机二级C语言辅导:malloc动态分配的内存的生存周期是多少?...
  8. python中导入模块的方式_在python中导入模块中的对象有哪几种方式
  9. Ajax方法实现登录页面
  10. SAXReader 解析xml
  11. CPU是沙子做的,凭什么卖那么贵?
  12. R语言-批量读取数据文件以及提取字符串中的数字
  13. 转载 javascript联动菜单
  14. 皕杰报表中的过滤分组函数与过滤分组报表
  15. iOS二维码生成、识别、扫描等
  16. 视频尺寸修改的小方法,同时处理多个视频,新媒体必备
  17. oracle时间戳概念,Oracle时间戳数据types
  18. 掩码认证消息(MAM)详细介绍
  19. 〖全域运营实战白宝书 - 运营角色认知篇⑥〗- 不同企业的 “运营“ 不一样
  20. 图像篡改常用数据集casia

热门文章

  1. 现在计算机采用晶体管作为逻辑开关元件,第一类杠杆在力量上的优点远超过其在活动范围。...
  2. 2021年 ICCV / NeurIPS / AAAI 中Neural Architecture Search (NAS) 神经网络结构搜索相关论文汇总
  3. 线性规划原问题与对偶问题
  4. 在 1G 内存的计算机中能否 malloc(1.2G)
  5. js获取页面的性能指标
  6. 【DDOS】黄金眼一键脚本+客户端app
  7. Kubernetes为什么会赢,容器圈的风云变幻!
  8. python+appium自动化测试遇到的一些坑及问题总结(一)
  9. 宝塔面板定时重启apache、mysql、php5.6等Shell命令
  10. 为什么监控摄像头画面不如手机拍摄视频画面清晰