0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

合宙Air780E开发板趣味应用开发:方言打麻将

电子发烧友开源社区 来源:未知 2023-01-09 19:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

合宙10月份推出的Air780E模组,是一款LTE Cat.1 bis通信模块,采用移芯EC618平台,支持4G全网通。

合宙也推出了相应的开发板,别看开发板身材小,价格低,但是身手不差。

合宙Air780E模组支持TTS/MP3/AMR等语音功能,同时在Air780E开发板内置了顺芯7149Audio Codec。

为了方便开发者使用音频功能,驱动各式喇叭,玩出花儿来,合宙还特别准备了 Air780E音频扩展板以及喇叭 ,可轻松实现趣味TTS+AMR+MP3语音播放功能。

d8c05f56-9013-11ed-bfe3-dac502259ad0.png

更更更让开发者心颤的是,合宙还搞了个音频扩展板使用创意视频大赛,想要进一步从开发者脑细胞中榨汁:

然而这还不够,这真的不够,合宙居然还提供了一个 合宙Air780E云端音频配置 ,让开发者可以零基础零代码把板子和扩展板给用起来:

d9ccc4d4-9013-11ed-bfe3-dac502259ad0.png

这,这,这你弄了板子,不玩起来,不让它响起来,你都对不起合宙了。

我第一时间抢了两块9块9包邮的Aire780E开发板,后来又抢了两块9块9包邮的音频扩展板。真可谓一坑接一坑,坑坑自愿跳啊!

da3c4372-9013-11ed-bfe3-dac502259ad0.jpg

下面,就将体验云喇叭功能的过程,给大家分享,最终让Air780E开发板+音频扩展板用方言打麻将。

一、焊接和连线

先按照下图,在正确的一面,为开发板焊上排针,在扩展板上焊上母座:

da6ff2d0-9013-11ed-bfe3-dac502259ad0.jpg

daa372ea-9013-11ed-bfe3-dac502259ad0.jpg

然后,插上SIM卡,连接到喇叭,把开发板和扩展板对插起来:

dac4bd24-9013-11ed-bfe3-dac502259ad0.jpg

这里的SIM卡支持,可是全网通的,中国移动、联通、电信通杀,全都支持。

另外一点要表扬合宙的,合宙出的开发板,都贴心的提供了扩展板,可以很方便的进行应用。

二、下载固件

  • 为了使用云喇叭功能,需要刷入专门的固件。

  • 官方提供了固件的源码,以及编译好的固件。

  • 方便起见,这里直接使用官方提供的固件。

固件下载地址:http://tools.openluat.com/tools/yunlaba

daf0a04c-9013-11ed-bfe3-dac502259ad0.png

本文编写时的固件文件为:

db1f9780-9013-11ed-bfe3-dac502259ad0.png

下载固件后,按照下面的教程烧录固件:https://doc.openluat.com/wiki/37?wiki_page_id=4489#_22

烧录完成后,就可以开始好好玩了。

三、开机启动

使用Type-C数据线,给开发板供电,板子上的红灯就会亮起来:

db3f39aa-9013-11ed-bfe3-dac502259ad0.jpg

因为插了SIM卡,需要联网才能使用,所以稍微等一会,等它联网成功。

没想到,等了半天,它居然一声不吭,就是红灯亮着,在那里闷头闷脑的发闷气。

是有哪里不对吗?

赶紧看手册,了解到了详情:

db6d6352-9013-11ed-bfe3-dac502259ad0.png

按照说明,要按一下板子上的开机键:

db8f512e-9013-11ed-bfe3-dac502259ad0.png

按就按,谁怕谁呀!

按完后,还真害怕了。大半夜的,突然一下响起来,声儿还贼大,差点把已经睡觉的家人给吵醒了。

按完后,板子开始正常启动了,绿灯亮了:

dc148a88-9013-11ed-bfe3-dac502259ad0.jpg

正常情况下,喇叭开始响起来:

dc30b050-9013-11ed-bfe3-dac502259ad0.png

如果联网有问题,或者服务器无法连接,也会播放对应的声音。

现在板子启动起来了,可以开始好好玩了。

四、喇叭云起来

用Air780E+音频扩展板,就是想通过云让喇叭响起来,使用云喇叭工具即可。

合宙提供的云喇叭在线工具地址:http://tools.openluat.com/tools/yunlaba

直接访问该界面,就能够给开发板发送语音信息,让喇叭响起来。

打开该界面后,按照如下的步骤使用:

dc5788f6-9013-11ed-bfe3-dac502259ad0.png

点击发送音频数据到设备后,正常情况下,会提示发送成功:

dc84a7f0-9013-11ed-bfe3-dac502259ad0.png

稍后,音频扩展板的喇叭就会响起来了。

如果要让发送的语音音色音速等更丰富,可以先设置语音参数,再生成发送:

dcd9d522-9013-11ed-bfe3-dac502259ad0.png

可以多多尝试,找到自己喜欢的或者觉得不错的参数搭配。

五、探究云喇叭工具如何给设备发送数据

既然云喇叭在线工具是通过网页操作的,而且它又没有直接连接到喇叭,那么一定有什么方式让两者互通。

通过浏览器的开发者调试工具,可以查看端倪。

点击 发送音频数据到设备 ,会在调试工具的网络界面中,看到如下的请求:

dd177c24-9013-11ed-bfe3-dac502259ad0.png

从上图可以看到,云喇叭在线工具给 http://tools.openluat.com/api/site/yunlaba_mqtt 这个地址,POST发送了一些数据。

看名字,应该是发送给MQTT服务了,然后在开发板上,通过MQTT服务,获取网页工具发送的数据,再进行播放。

如果有兴趣,可以查看固件对应的源码,其逻辑正是如此。

进一步的,可以查看实际发送了什么数据:

dd7e4198-9013-11ed-bfe3-dac502259ad0.png

从上图中,可以看到,具体发送的数据如下:

dda4de0c-9013-11ed-bfe3-dac502259ad0.png

这是个JSON格式的数据,格式如下:

  • tpoic:表示信息发布的主题,具体为:test20220929/IMEI号,后面的IMEI号,就是开发板上Air780E的IMEI,也就是网页工具上填写的

  • text:表示要发布的语音信息,如果设置了语音参数,就会带有一定的参数标记。

了解到以上信息后,可以基本确定一点,如果我们也能按照要求,给上述地址,发送对应的JSON格式的数据,那么也能在程序中,直接使用云喇叭工具提供的后台服务,来控制我们自己的喇叭了。

要发送JSON数据给直接的服务网址,可以用Python、nodejs、PHP、Go、Java等语言编程进行,也可以直接使用命令行的curl命令来发送数据。

下面是一个最简单的发送信息的shell脚本,该脚本需要在Linux或者macOS环境中运行。如果是在Windows环境,则可以在WSL中运行。

#!/bin/bash


# Air780E模组的IMEI
imei=$1


# 0-4,自己测试选定的几组语音参数
idx=$2


# 要发送的文本内容,不能包含空格,单双引号
msg=$3


if [[ $idx -eq 0 ]];then
# 女1
class="[m53][n0][s7][t7][v1]"
fi


if [[ $idx -eq 1 ]];then
# 男1
class="[m51][n0][s6][v1]"
fi


if [[ $idx -eq 2 ]];then
# 男2
class="[m52][n0][s5][v1]"
fi


if [[ $idx -eq 3 ]];then
# 女2
class="[m53][n0][s6][t5][v1]"
fi


if [[ $idx -eq 4 ]];then
# 男3
class="[m55][n0][s6][v1]"
fi
curl -v 'http://tools.openluat.com/api/site/yunlaba_mqtt' 
 -H 'Accept: application/json, text/plain, */*' 
 -H 'Accept-Language: zh,en-US;q=0.9,en;q=0.8,zh-CN;q=0.7,it;q=0.6,ru;q=0.5,zh-TW;q=0.4' 
 -H 'Cache-Control: no-cache' 
 -H 'Content-Type: application/json' 
 -H 'Cookie: _clck=awncqb|1|f7t|0' 
 -H 'DNT: 1' 
 -H 'Origin: http://tools.openluat.com' 
 -H 'Pragma: no-cache' 
 -H 'Proxy-Connection: keep-alive' 
 -H 'Referer: http://tools.openluat.com/tools/yunlaba' 
 -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.46' 
 --data-raw '{"topic":"test20220929/'$imei'","text":"'{$class}{$msg}'"}' 
 --compressed 
 --max-time 2 
 --insecure

(左右移动查看全部内容)

在上述脚本中,首先接收3个参数:

  • imei:IMEI号,对应网页中的IMEI号

  • idx:语音参数配置的序号

  • msg:文本内容,会根据语音参数生成语音信息

其中,语音参数配置的序号,是指我根据自己的多次测试尝试,选定了几组语音配置信息:

ddbf48b4-9013-11ed-bfe3-dac502259ad0.png

你可以自己尝试,选择几组合适的语音配置信息。

而文本内容部分,就是要发送的语音对应的文本了,注意不要包含空格、单双引号等。

将上述脚本保存为send_mqtt.sh,然后执行:

./send_mqtt.sh 8615510******** 先赚他个100亿再说

(左右移动查看全部内容)

注意将IMEI号替换为自己的开发板的。

发送成功后,喇叭就会根据设置,响起来了。

六、让Air780E开发板+音频扩展板用方言打麻将

在上一步的研究基础上,只要我们可以以不同的语音配置,将不同的语音信息发送给开发板,那么喇叭就能够以不同的声音播放不同的内容了。

虽然,这些语音信息,也可以提前全部录制出来,直接发给开发板播放,但是如果能够进行动态的生成播放,那还是更加吸引人的。

为了更好玩,我从一段打麻将的小视频中,提取了对应的对话信息,并经过一定的处理,最终让Air780E开发板+音频扩展板播放出来。

原始打麻将的小视频地址:四川方言:老表打麻将,自摸的牌打出去了,把人笑安逸了

在该视频中,一共有5个角色,分别标识为:

  • 前男(苦命男):也就是主角男

  • 前女(女王女):也就是主角男的老婆

  • 左女(阴险女):打麻将的女性

  • 后男(腼腆男):主角男对面的腼腆闷骚男

  • 右男(道貌岸然男):另外一位打麻将的男性

将该视频中的对话信息提取出来:

e1d18c64-9013-11ed-bfe3-dac502259ad0.pnge2098cd6-9013-11ed-bfe3-dac502259ad0.pnge2234f9a-9013-11ed-bfe3-dac502259ad0.pnge24bedce-9013-11ed-bfe3-dac502259ad0.png

并将最后的输出信息,拷贝到文本文件 对话.txt 中来:

e2759048-9013-11ed-bfe3-dac502259ad0.png

在上一步的send_mqtt.sh中,设置了5组语音参数配置,刚好就是对应5位角色:

  • 前男(苦命男):1

  • 前女(女王女):0

  • 左女(阴险女):2

  • 后男(腼腆男):3

  • 右男(道貌岸然男):4

因此,在提取信息到Excel中的时候,会设置对应的语音配置编号:

e2a4eec4-9013-11ed-bfe3-dac502259ad0.png

这个编号,在后面的程序中,也会进行调用,从而使用对应的语音配置输出信息。

最后,再编写对应的脚本:

#!/bin/bash
# Air780E开发板方言打麻将


send_cmd(){
curl -v 'http://tools.openluat.com/api/site/yunlaba_mqtt' 
 -H 'Accept: application/json, text/plain, */*' 
 -H 'Accept-Language: zh,en-US;q=0.9,en;q=0.8,zh-CN;q=0.7,it;q=0.6,ru;q=0.5,zh-TW;q=0.4' 
 -H 'Cache-Control: no-cache' 
 -H 'Content-Type: application/json' 
 -H 'Cookie: _clck=awncqb|1|f7t|0' 
 -H 'DNT: 1' 
 -H 'Origin: http://tools.openluat.com' 
 -H 'Pragma: no-cache' 
 -H 'Proxy-Connection: keep-alive' 
 -H 'Referer: http://tools.openluat.com/tools/yunlaba' 
 -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.46' 
 --data-raw '{"topic":"test20220929/'$1'","text":"'{$2}'"}' 
 --compressed 
 --insecure 2>&1 | grep HTTP
 echo ""
}


# Air780E模组的IMEI
imei=$1


send_text=""
send_count=0
while read line;
do
  send_count=$(echo $line | cut -d " " -f 1)
  idx=$(echo $line | cut -d " " -f 2)
  msg=$(echo $line | cut -d " " -f 3)
  echo i=$send_count idx=$idx msg=$msg


  if [[ $idx -eq 0 ]];then
  # 女1
  class="[m53][n0][s7][t7][v1]"
  fi


  if [[ $idx -eq 1 ]];then
  # 男1
  class="[m51][n0][s6][v1]"
  fi


  if [[ $idx -eq 2 ]];then
  # 男2
  class="[m52][n0][s5][v1]"
  fi


  if [[ $idx -eq 3 ]];then
  # 女2
  class="[m53][n0][s6][t5][v1]"
  fi


  if [[ $idx -eq 4 ]];then
  # 男3
  class="[m55][n0][s6][v1]"
  fi


  send_text="$send_text$class$msg"


  if [[ $((send_count%5)) -eq 0 ]];then
    echo ""
    echo $send_text
    send_cmd $imei "$send_text"
    send_text=""
    sleep 1
  fi
done < 对话.txt


if [[ "$send_text" != "" ]];then
  echo $send_text
  send_cmd $imei "$send_text"
fi

(左右移动查看全部内容)

上述脚本的主要逻辑如下:

  • 循环读取 对话.txt 的每一行内容

  • 根据预先设置好的角色语音配置序号,生成对应的带标记的预发送信息

  • 累加要发送的信息,每满5条,就调用一次发送接口发送信息

将脚本保存为 duihua_damajiang.sh后,然后执行该脚本:

./duihua_damajiang.sh 8615510********

(左右移动查看全部内容)

注意将IMEI号替换为自己的开发板的。

运行后,待对话信息发送成功后,喇叭响起来,一圈麻将就打起来了。

打麻将的实际效果,可以点击查看:

七、总结

Air780E开发板+音频扩展板 ,将云语音应用的门槛大幅降低,可以说无门槛入门了。

在熟练使用云端工具配置的基础上,还可以进一步自己编程来实现更为个性化的功能。

如果你有多套 Air780E开发板+音频扩展板 ,那么可以进行更为精细的控制,让一桌麻将打得更为生动;在其他场合应用,也会更为有趣。

更多热点文章阅读
  • DevEco Studio新特性分享-跨语言调试,让调试更便捷高效
  • 基于 OpenHarmony 的智联北斗海防系统
  • 玩转OpenHarmony智能家居:如何实现树莓派“碰一碰”设备控制
  • 玩转OpenHarmony社交场景:即时通讯平台
  • HarmonyOS多媒体框架介绍

提示:本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com。


原文标题:合宙Air780E开发板趣味应用开发:方言打麻将

文章出处:【微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电子发烧友
    +关注

    关注

    33

    文章

    584

    浏览量

    33982
  • 开源社区
    +关注

    关注

    0

    文章

    95

    浏览量

    776

原文标题:合宙Air780E开发板趣味应用开发:方言打麻将

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Air780EPM嵌入式开发:LuatOS下的MQTT通信实践

    通过LuatOS脚本在Air780EPM开发板上实现MQTT通信,是物联网设备开发中高效且便捷的解决方案。 一、MQTT 协议详解   1.1 什么是 MQTT? MQTT(Message
    的头像 发表于 09-30 16:11 1610次阅读
    <b class='flag-5'>Air780</b>EPM嵌入式<b class='flag-5'>开发</b>:LuatOS下的MQTT通信实践

    实战Air780EPM:构建4G共享网关,服务WiFi与有线设备!

    通过Air780EPM开发板,我们可以轻松实现4G网络作为数据出口,为周边的WiFi设备和以太网设备提供互联网共享,适用于移动办公、远程部署等场景。 一、多网融合概述   Air780EPM
    的头像 发表于 09-30 16:03 877次阅读
    实战<b class='flag-5'>Air780</b>EPM:构建4G共享网关,服务WiFi与有线设备!

    揭秘Air780EGH定位功能:源码开放助力极速开发

    Air780EGH定位模块源代码全面开放!无需复杂前置知识,只需跟随本文教程,即可从零开始搭建定位系统。代码注释清晰,示例完整,助你短时间内掌握定位功能核心用法。 下文将以Air780EGH核心
    的头像 发表于 07-29 16:11 479次阅读
    揭秘<b class='flag-5'>Air780</b>EGH定位功能:源码开放助力极速<b class='flag-5'>开发</b> !

    开发板畅游网络:RT-Thread CherryUSB 驱动 RNDIS 模块详解 | 技术集结

    本文通过在RT-Thread操作系统上,使用CherryUSB软件包作为USBHost协议栈,驱动AIR780E4GCat.1模块的RNDIS功能,并成功接入lwIP网络协议栈,最终在开发板上实现了
    的头像 发表于 07-02 17:04 2985次阅读
    让<b class='flag-5'>开发板</b>畅游网络:RT-Thread CherryUSB 驱动 RNDIS 模块详解 | 技术集结

    Air8101多网融合战略升级:Air780EPM模块助力4G联网落地

    应用迈向新高度。 本文将分享Air8101核心通过外挂Air780EPM整机开发板,实现4G联网的功能示例。   一、硬件准备工作   1.1  所需硬件
    的头像 发表于 06-23 16:53 375次阅读
    <b class='flag-5'>Air</b>8101多网融合战略升级:<b class='flag-5'>Air780</b>EPM模块助力4G联网落地

    【新品】远距离图传数传模块开发板、蓝牙模块开发板、无线模块开发板

    ,搭配亿佰特自研的远距离图传+数传为一体的远距离无线模块E611-900NW20S进行使用。该款开发板具备完整的功能,拥有16Mbps的传输速率,可实现传输4路108
    的头像 发表于 06-12 19:33 903次阅读
    【新品】远距离图传数传模块<b class='flag-5'>开发板</b>、蓝牙模块<b class='flag-5'>开发板</b>、无线模块<b class='flag-5'>开发板</b>

    多功能+高扩展能力加持,Air8000开发板最新资料

    开发者福利来袭!Air8000开发板兼具全面功能与强大扩展性的开发神器,将让物联网开发、原型设计等任务更高效,加速项目从概念到产品的转化。
    的头像 发表于 06-09 14:18 519次阅读
    多功能+高扩展能力加持,<b class='flag-5'>Air</b>8000<b class='flag-5'>开发板</b>最新资料

    技术篇——Air8000开发板,一站式满足多功能高扩展开发需求!

    对于追求高效开发的你来说,Air8000开发板最新资料库的开放绝对不容错过。无论是智能控制、数据采集还是多场景应用开发,其多功能内核与高扩展接口,为各类项目提供“即插即用”式的解决方案
    的头像 发表于 06-04 15:59 458次阅读
    技术篇——<b class='flag-5'>Air</b>8000<b class='flag-5'>开发板</b>,一站式满足多功能高扩展<b class='flag-5'>开发</b>需求!

    揭秘Air780EPM开发陷阱:20个避坑指南与最佳解决方案

    :www.air780epm.cn 问题01: Air780EPM在PSM+模式下,dtimer定时器可以开几个?   答案: 同一时间只能有64个定时器的任务;如果要支持超过64个定时器任务,执行完就得释放,同时继续创建定时器任务,需要加延时(实测100ms延时没问题)
    的头像 发表于 05-21 16:04 604次阅读
    揭秘<b class='flag-5'>Air780</b>EPM<b class='flag-5'>开发</b>陷阱:20个避坑指南与最佳解决方案

    开发宝典:4路低功耗ADC接口,Air780EPM二次开发必看!

    开发的每一个技术细节,助力开发者构建稳定、高效的数据采集解决方案。   最新开发资料详见: www.air780epm.cn Air780E
    的头像 发表于 04-01 14:57 490次阅读
    <b class='flag-5'>开发</b>宝典:4路低功耗ADC接口,<b class='flag-5'>Air780</b>EPM二次<b class='flag-5'>开发</b>必看!

    快速开发实战——4路低功耗ADC接口,Air780EPM二次开发必看!

    Air780EPM 模组,内置4MB大内存RAM,支持LCD、摄像头、Modbus、以太网、CAN;具备更强大的二次开发资源,更完善的外设能力,也更适于工业场景。   最新开发资料详见
    的头像 发表于 04-01 14:56 529次阅读
    快速<b class='flag-5'>开发</b>实战——4路低功耗ADC接口,<b class='flag-5'>Air780</b>EPM二次<b class='flag-5'>开发</b>必看!

    深度解析——使用Luatools工具烧录一个具体的项目到Air780EPM核心中!

    本篇文章重点介绍如何使用Luatools工具烧录一个具体的项目到Air780EPM开发板中。 一、准备好项目文件   在烧录项目文件到Air780EPM开发板之前,你需要准备好以下几种
    的头像 发表于 03-25 15:06 612次阅读
    深度解析——使用Luatools工具烧录一个具体的项目到<b class='flag-5'>Air780</b>EPM核心<b class='flag-5'>板</b>中!

    功耗表现最佳有没有?——Air780EPS

    今天一起来聊聊Air780EPS模组~ 一、Air780EPS核心信息描述 软件开发Air780EPS软件上既支持传统的AT指令,也支持基于Lua脚本
    的头像 发表于 01-10 15:29 909次阅读
    功耗表现最佳有没有?——<b class='flag-5'>Air780</b>EPS

    要Open开发,又要低功耗低成本?建议等新方案

    、联通三大运营商。 仅比Air700E系列相对大一些: Air700ECQ/Air700EAQ/Air700EMQ; 与Air780E系列模
    的头像 发表于 12-24 17:09 722次阅读
    要Open<b class='flag-5'>开发</b>,又要低功耗低成本?建议等新方案

    【正点原子STM32H7R3开发套件试用体验】4G联网工业设备控制网关

    资料,了解STM32H7R3开发套件的功能。 2. 接入Air780E,实现开发板通过4G联网 3. 对接FastBee物联网平台,实现数据上报和命令下发 4. 移植OTA功能,实现在线OTA升级 5.
    发表于 12-18 14:14