2771|0

295

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

【行空板 Python编程学习主控板】 六、语音控制灯带输出(附蓝牙输出) [复制链接]

评测的时间接近尾声了,按照评测计划,还有最后一个语音控制的测评。先看下实现的视频。

语音控灯带

 

一、实现思路

行空板中通过WiFi连接百度云,调用api可实现语音识别,而且效果非常好,具体可参考本人的上一篇测评,【行空板 Python编程学习主控板】 五、离线语音识别和云语音识别比较

对经过语音识别后的文本信息进行检测,就可以实现语音控制输出了。

 

本次选择的是灯带输出,可以用语音设置输出的颜色。初步设定“打开灯光、关闭灯光、偏红一点、红少一点、偏绿一点、绿少一点、偏蓝一点、蓝少一点”这样的语音指令控制灯带。

二、语音识别

本次代码是在前两次评测的基础上实现的,包括语音识别和所见所得的灯带输出。

由于讯飞平台的语音识别目前还是免费阶段,就选择用讯飞实现语音识别了,百度的语音识别还是收费的,前面的测评使用了24次,需要支付0.08元,处于欠费的状态,调用一直失败,后面充值后就能成功调用了。

讯飞平台的调用也是非常方便,在讯飞平台申请后,创建应用

填充APPID、APISecret、APIKey就可以使用

在代码板块中,“讯飞语音识别”需要加载用户库,输入网址: https://gitee.com/liliang9693/ext-xunfeiyuyin  

然后选择加载

语音识别的具体流程根百度类似

三、代码实现

 切换到代码模式后,首先加载模块

from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from pinpong.board import NeoPixel
from unihiker import GUI
from unihiker import Audio

import xunfeiasr
import time

xunfeiasr主要实现语音识别

xunfeiasr.xunfeiasr_set(APPID="...",APISecret="...",APIKey="...")
print("开始进行录音")
u_audio.record("record.wav",3)
print("录音结束")
ShiBieNeiRong = xunfeiasr.xunfeiasr(r"record.wav")

if (ShiBieNeiRong == ""):
   ShiBieNeiRong = "未能识别"
else:
   ParseShiBieNeiRong()
   yanse_update()
Chinese.config(text=ShiBieNeiRong)

得到识别后的文本后就比较简单了,对比文字实现对应的功能就可以了

def ParseShiBieNeiRong():
    global BoFangBiaoShi
    global ShiBieNeiRong
    global HongZhi
    global LanZhi
    global LvZhi
    global YanSe
    global YanSeZhi
    if (ShiBieNeiRong == "关闭灯光"):
        BoFangBiaoShi = 0
    elif (ShiBieNeiRong == "打开灯光"):
        BoFangBiaoShi = 1
    elif (ShiBieNeiRong == "偏红一点"):
        HongZhi = HongZhi + 16
        if (HongZhi > 255):
            HongZhi = 255
        YanSe[0]= HongZhi
        YanSeZhi = tuple(YanSe)
    elif (ShiBieNeiRong == "红少一点"):
        if (HongZhi < 16):
            HongZhi = 0
        else:
            HongZhi = HongZhi - 16
        YanSe[0]= HongZhi
        YanSeZhi = tuple(YanSe)
    elif (ShiBieNeiRong == "偏绿一点c"):
        LvZhi = LvZhi + 16
        if (LvZhi > 255):
            LvZhi = 255
        YanSe[1]= LvZhi
        YanSeZhi = tuple(YanSe)
    elif (ShiBieNeiRong == "绿少一点"):
        if (LvZhi < 16):
            LvZhi = 0
        else:
            LvZhi = LvZhi - 16
        YanSe[1]= LvZhi
        YanSeZhi = tuple(YanSe)
    elif (ShiBieNeiRong == "偏蓝一点"):
        LanZhi = LanZhi + 16
        if (LanZhi > 255):
            LanZhi = 255
        YanSe[2]= LanZhi
        YanSeZhi = tuple(YanSe)
    elif (ShiBieNeiRong == "蓝少一点"):
        if (LanZhi < 16):
            LanZhi = 0
        else:
            LanZhi = LanZhi - 16
        YanSe[2]= LanZhi
        YanSeZhi = tuple(YanSe)  

设想的是一点点改变颜色,实际效果没有中间过渡,由于时间关系,暂时不解决了。

灯带的输出,依然是P24引脚

p_p24_out=Pin(Pin.P24, Pin.OUT)
p_p24_out.write_digital(0)
np1 = NeoPixel(p_p24_out,10)
for XuHao in range(0, 10):
    np1[XuHao] = (0,0,0)

颜色改变后进行更新

def yanse_update():
    global YanSeZhi
    global DanTiaoDengDaiYanSe
    global BoFangBiaoShi

    XuHao = 0
    if (BoFangBiaoShi == 1):        
        for XuHao in range(10):
            Deng[XuHao].config(color=YanSeZhi)
            np1[XuHao] = YanSeZhi
            DanTiaoDengDaiYanSe[XuHao]=YanSeZhi
            XuHao = XuHao + 1
    else:
        for XuHao in range(10):
            Deng[XuHao].config(color="#000000")
            np1[XuHao] = (0,0,0)
            DanTiaoDengDaiYanSe[XuHao]=(0, 0, 0)
            XuHao = XuHao + 1

由于Python初学,很多代码还是有点懵。

另外,本次测评中的lcd界面的灯带没有同时更新,只能在后面的时间中慢慢完善了

四、蓝牙音乐输出

今天看到论坛中可以通过蓝牙输出音乐了,具体实现如下:

1、蓝牙配对

1)通过命令行进入行空板进入蓝牙配置,建议PowerShell

  • ssh root@10.1.2.3
  • password:dfrobot

2)依次键入以下指令,打开行空板蓝牙功能

bluetoothctl
default-agent
power on

3)开启蓝牙音箱,设置配对模式

4)键入以下指令,扫描蓝牙音箱设备ID,找到并记录蓝牙设备的device ID

scan on

5)依次键入以下命令,进行设备配对

trust xx:xx:xx:xx:xx:xx (Device ID)

pair xx:xx:xx:xx:xx:xx  (Device ID)

connect xx:xx:xx:xx:xx:xx (Device ID)

6)配对完成,退出设置

exit

就可以实现蓝牙音箱播放了,亲测有效哦!

点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
《DSP集成开发环境CCS开发指南》下载

《DSP集成开发环境CCS开发指南》下载

单片机编程讨论

1. C语言和汇编语言在开发单片机时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码 ...

FFT算法的实现

关于FFT算法全国大学生电子设计竞赛连续出了两年了,07年的音频信号分析仪,09年的音频均衡器也可以用FFT去做.国内的学生最不擅长 ...

我的F28035的SPI控制ADS8332程序

本帖最后由 dontium 于 2015-1-23 11:07 编辑 对ADS8332用了两种方法控制,端口模拟SPI及SPI控制器。使用宏SPI_INTEFACE来控 ...

TI Cortex MCU工业安全应用

502213502214

物联网APP开发:物联网APP软件开发需要注意什么?

物联网作为如今的发展趋势,许多企业开始把关注点放到物联网这块大蛋糕上,想要在物联网开发上有所成绩,则需要作出高质量、可延 ...

【RISC-V MCU CH32V103测评】- 8:COMTransmit - 串口调试工具

本帖最后由 MianQi 于 2021-3-9 19:25 编辑 这次的测试内容是:《按键控制LED灯》 - https://bbs.21ic.com/icview-3073806-1- ...

【i.MX6ULL】驱动开发7——按键输入捕获

本帖最后由 DDZZ669 于 2021-11-9 00:04 编辑 前面几篇文章,从最基础的寄存器点灯,到设备树点灯,再到GPIO子系统点灯, ...

BMS电池管理系统中的磁性元件

在节能减碳的大背景下,全球能源结构正在发生深刻的变化,其中一个重要的标志就是,以锂离子电池(以下简称锂电池)为代表的储能 ...

与电路无任何连接的死铜会造成EMI问题吗?

我们都知道,在PCB上那些一端接了电路,另一端悬空的铜箔有可能会造成EMI辐射问题。 但是如果有一条铜箔是和电路没有任何连接的 ...

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表