2984|0

309

帖子

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 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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