准备工作硬件部分:旭日x3派,usb免驱摄像头,电源适配器,烧录ubuntu系统的sd卡,usb扬声器,显示屏(或者vnc/ssh远程连接)
软件部分:thonny ide集成开发环境注意:购买麦克风时要购买二合一的usb麦克风,切勿购买3.5mm耳机接口传输的麦克风。
首先更新软件源和所有软件,只需要使用快捷键ctrl+alt+t打开命令行,输入以下命令,耐心等待即可。
# 更新软件源 apt-get update # 更新升级所有软件 apt-get upgrade
开发工具依然是沿用thonny,作为一款轻量化的python集成开发环境,对新手十分友好,简单易上手,后续安装各种python依赖库也相当方便。安装完成后同样是使用快捷键ctrl+alt+t打开命令行,输入thonny启动,然后开始项目的重头戏——安装项目依赖库,需要用到的第三方库和版本如下,大家可以根据这个顺序进行安装,以免遗漏(也可以复制到一个新的txt文件利用pip一次性安装)。
cffi==1.12.3 gevent==1.4.0 greenlet==0.4.15 pycparser==2.19 six==1.12.0 websocket==0.2.1 websocket-client==0.56.0
注意:有些库安装失败的话代码可能不会有高亮提示,但运行时会报错,所以,出现报错第一时间检查第三方库是否成功安装。
本文着重介绍需要用到的python标准gui库——tkinter。
在python程序中,tkinter是python的一个模块,它可以像其他模块一样在python交互式shell中(或者“.py”程序中)导入,导入tkinter模块后,就可使用tkinter模块中的函数、方法等进行gui编程。同时,开发者也可以使用tkinter库中的文本框、按钮、标签等组件实现gui开发。
首先,需检查tkinter是否成功导入,如运行无误则说明导入成功,否之,则需要重新安装tkinter库。
import tkinter
接着创建一个窗口,先使用http://tkinter.tk生成一个主窗口对象,然后才能使用tkinter模块中其他的函数和方法等元素。生成主窗口以后才可以向里面添加组件,或者直接调用其mainloop()方法进行消息循环。示例如下:
import tkinter #导入tkinter模块 top = tkinter.tk()#生成一个主窗口对象 top.mainloop()#进入消息循环
我们要有交互,就需要有组件。组件与窗口一样,也是通过tkinter模块中相应的组件函数生成的。在生成组件以后,就可以使用pack、grid或place等方法将它添加到窗口中,以下示例给窗口增添两个按钮:
import tkinter #导入tkinter模块 root = tkinter.tk()#生成一个主窗口对象 label= tkinter.label(root, text=python, tkinter!) label.pack()#将标签添加到窗口中 button1 = tkinter.button(root, text=按钮1)#创建按钮1 button1.pack(side=tkinter.left)#将按钮1添加到窗口中 button2 = tkinter.button(root, text=按钮2)#创建按钮2 button2.pack(side=tkinter.right)#将按钮2添加到窗口中 root.mainloop()#进入消息循环
至此,用tkinter库创建一个带交互功能的窗口已经完成,大家感兴趣可以继续学习其他组件,这里就不再赘述。
接下来进行云服务器部署,本项目选用云端语音平台,登录平台后,通过右上角「控制台」,或右上角下拉菜单的「我的应用」进入控制台。如果账户未曾创建过应用,平台会引导创建,创建完成后,便可通过左侧的服务列表,选择要使用的服务。
在服务管理面板中,将看到这个服务对应的可用量、历史用量、服务接口的验证信息,还有可以调用的api和sdk。值得注意的是,要将应用创建后生成的appid,apisecret和apikey去替换代码中的appid,apisecret和apikey一定要一一对应,否则会影响代码的正常运行!
def run(): global wsparam wsparam = ws_param(appid='你的appid', apikey='你的apikey',apisecret='你的apisecret') websocket.enabletrace(false) wsurl = wsparam.create_url() ws = websocket.websocketapp(wsurl, on_message=on_message, on_error=on_error, on_close=on_close) ws.on_open = on_open ws.run_forever(sslopt={cert_reqs: ssl.cert_none}, ping_timeout=2)
随后选择需要的语种和服务即可,支持除中文和英语外的51种外语,24种方言和1种民族语言。
实现原理本项目主要就是利用python程序录制本地mp3格式的用户音频,并将音频上传到云端语音平台进行实时转写,最后利用gui库在屏幕上展示转写结果(云端语音平台翻译文本的方法和窗口的实现,点击文末阅读原文即可获取)。
效果展示结果显示,本项目对本地资源占用较小,得益于旭日x3派的高算力和高性能,温度的控制让人十分满意(和上一个项目手语翻译终端同时运行也没有问题)。
性能测试系统测试方案:将程序导入旭日x3派中,接入电源后等待初始化完成,在安静的室内环境下,在麦克风前分别测试普通话,英语,方言(东北话/四川话),将转写终端实时转写的准确率记录,同时将识别的总时长记录收集。
测试数据如下:
结果分析:接收到语音信息后到完成转写结果的显示总时长在0.5秒之内,可基本实现实时转译,对普通话和英文以及51种外语,24种方言和1种民族语言的识别率在95%以上。
结论:实现语音转写除了支持普通话和英语外,支持51个外国语种(包括日语、俄语、泰语、捷克语等常用语种)、24种方言(包括四川话、广东话、河南话、上海话,闽南语等常用方言),另外,还支持一种民族语言(彝语),真正做到无障碍沟通交流。
本文转自地平线开发者社区
原作者:鑫辰大海王
高电压三元固态电池研究成果
单结晶体管各管脚的判别方法/性能好坏的判断
光耦检测仪的制作方法
plc梯形图编程规则
未来汽车这样?Atmel展示触控芯片解决方案
开发者说 | 手语翻译系统系列之使用旭日X3派实现实时语音转写
采用EP1C20芯片和S698IP核实现平台计算机的设计
一文看懂工业交换机竞争格局
探索新的发展模式:电商走上绿色转型之路
NVIDIA Jetson AI计算机平台现在起开始支持亚马逊AWS RoboMaker
Web 3.0时代和元宇宙需要的网络生态高度重合
苹果的手机陀螺仪怎么工作的,它与机械陀螺仪有哪些异同?
链路状态协议
极海半导体成功获选中国IC独角兽企业
离线语音控制吸顶灯:智能家居的新里程碑
小环形天线:现场测试
iOS13或将不支持iPhone6以下设备
SmartClass OLA-54/-55/-55M光功率衰减器的功能及应用范围
环保局长的名字叫电池
Ansys Zemax光学设计软件产品概述