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

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

3天内不再提示

无门槛!巧用合宙Air780E云喇叭,实现多音色『打麻将』

合宙LuatOS 2023-01-29 10:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天要跟大家分享的是——合宙Air780E开发板Air780E音频扩展板喇叭套装都是首发9.9元包邮抢到的。通过合宙提供的Air780E云端音频配置平台,开发者可以轻松实现趣味TTS+AMR+MP3语音播放功能。

接下来具体分享一下体验云喇叭功能的过程,最终让Air780E开发板+音频扩展板实现视频中多音色打麻将对话功能。在熟练使用云端工具配置的基础上,还可以进一步自己编程来实现更为个性有趣的应用。

一、焊接和连线


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

44c591e6-96e8-11ed-ad0d-dac502259ad0.jpg

44ddd1a2-96e8-11ed-ad0d-dac502259ad0.jpg

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

44ef2006-96e8-11ed-ad0d-dac502259ad0.jpg

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

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

二、下载固件


为了使用云喇叭功能,需要刷入专门的固件。官方提供了固件的源码,以及编译好的固件。

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

固件下载地址:

http://tools.openluat.com/tools/yunlaba

4500be2e-96e8-11ed-ad0d-dac502259ad0.png

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

45126bce-96e8-11ed-ad0d-dac502259ad0.png


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

三、开机启动


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

45310ae8-96e8-11ed-ad0d-dac502259ad0.jpg

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

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

是有哪里不对吗?

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

4540ee7c-96e8-11ed-ad0d-dac502259ad0.png

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

458797e6-96e8-11ed-ad0d-dac502259ad0.png

按就按,谁怕谁呀!

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

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

459e745c-96e8-11ed-ad0d-dac502259ad0.jpg

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

播报"欢迎使用合宙云端音频播放设备"

播报"服务器连接成功"

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

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

四、喇叭云起来


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

合宙云喇叭在线工具:
http://tools.openluat.com/tools/yunlaba

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

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

45aff484-96e8-11ed-ad0d-dac502259ad0.png

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

45bd05ac-96e8-11ed-ad0d-dac502259ad0.png

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

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

45d1878e-96e8-11ed-ad0d-dac502259ad0.png

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

五、给设备发送数据


接下来可以探究云喇叭工具如何给设备发送数据——既然云喇叭在线工具是通过网页操作的,而且它又没有直接连接到喇叭,那么一定有什么方式让两者互通。

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

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

45de0bd0-96e8-11ed-ad0d-dac502259ad0.png

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

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

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

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

45edd60a-96e8-11ed-ad0d-dac502259ad0.png

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

45fbb22a-96e8-11ed-ad0d-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:文本内容,会根据语音参数生成语音信息。

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

4607943c-96e8-11ed-ad0d-dac502259ad0.png

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

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

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

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

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

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

六、喇叭一响,麻将打起!



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

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

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

一共有5个角色,分别标识为:

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

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

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

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

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

将该视频中的对话信息提取到Excel文件中,文末【阅读原文】链接获取源文件:

462e9104-96e8-11ed-ad0d-dac502259ad0.gif

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

11哎呀,婆娘,你怎么又来了嘛

21好不容易打回清净麻将啊

30我来看会热闹

44保长才趣哇

54人家皮蛋来耍嘛就让她耍会嘛

63人家也想来看会玩意儿嘛

73等人家皮蛋在这儿

80你看嘛,她们都想我来

91那是嘛,你来我就输了

101肯定想你来啥

……

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

前男(苦命男):1

前女(女王女):0

左女(阴险女):2

后男(腼腆男):3

右男(道貌岸然男):4

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

文末【阅读原文】链接获取源文件:

463bd224-96e8-11ed-ad0d-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开发板+音频扩展板,那么可以进行更为精细的控制,让一桌麻将打得更为生动;在其他场合应用,也会更为有趣。

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

    关注

    31

    文章

    3134

    浏览量

    84927
  • 开发板
    +关注

    关注

    25

    文章

    6122

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    Air780EGH串口电路设计攻略:硬件工程师必知要点

    作为硬件工程师,设计Air780EGH的UART串口电路需关注多个技术维度。本文聚焦关键要点,涵盖主串口与扩展串口特性、电平兼容性处理、休眠唤醒配置及调试串口安全使用,助力打造高可靠性串口系统
    的头像 发表于 08-14 17:53 608次阅读
    <b class='flag-5'>Air780</b>EGH串口电路设计攻略:硬件工程师必知要点

    Air780EGH开源代码来袭!定位功能快速入门指南

    欢迎探索Air780EGH开源生态!最新版本解锁定位功能源代码,无论你是新手还是资深开发者,都能通过简洁的示例代码快速上手。从初始化配置到实时定位数据获取,一站式解决定位开发痛点。 下文将以
    的头像 发表于 07-29 16:13 420次阅读
    <b class='flag-5'>Air780</b>EGH开源代码来袭!定位功能快速入门指南

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

    例,带你快速上手定位功能的基本使用方法,可根据实际需求灵活扩展和应用。   一、Air780EGH定位示例源码开放 Air780EGH示例持续更新中,本文将讲解Air780EGH核心板实现
    的头像 发表于 07-29 16:11 469次阅读
    揭秘<b class='flag-5'>Air780</b>EGH定位功能:源码开放助力极速开发 !

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

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

    优化你的设计:Air780EPM场景化ADC硬件电路指南!

    提升ADC性能需从场景需求出发。本文针对Air780EPM在数据采集中的常见挑战,如噪声抑制、动态范围适配等,提供场景化的优化方案与电路设计建议,助力打造高性价比的硬件系统。 最近有工程师朋友问
    的头像 发表于 06-13 18:02 626次阅读
    优化你的设计:<b class='flag-5'>Air780</b>EPM场景化ADC硬件电路指南!

    解锁Air780EPM:N种GPIO操控LED的实战技巧!

    在物联网项目中,灵活使用Air780EPM的GPIO控制LED至关重要。本文将展示实现方式,涵盖硬件配置与软件编程,满足不同场景需求。 今天特别分享基于Air780EPM的GPIO控制LED
    的头像 发表于 05-28 16:56 548次阅读
    解锁<b class='flag-5'>Air780</b>EPM:N种GPIO操控LED的实战技巧!

    新手必看!4G模组Air780EPM——GPIO的设计说明

    Air780EPM的GPIO设计需兼顾硬件可靠性与软件灵活性,开发者应基于具体应用场景权衡复用功能优先级,并遵循电源管理规范以延长设备生命周期。通过模块化配置与精细化调试,可最大化释放模组性能潜力
    的头像 发表于 03-20 17:48 605次阅读
    新手必看!4G模组<b class='flag-5'>Air780</b>EPM——GPIO的设计说明

    手把手教你!4G模组Air780EPM——GPIO的设计说明

    4G模组Air780EPM作为广和通推出的高性能Cat.1bis无线通信模块,凭借其低功耗、高集成度及丰富的外设接口,在工业物联网、智能终端、车载设备等领域展现出卓越的适配性。 一、概述
    的头像 发表于 03-17 16:07 843次阅读
    手把手教你!4G模组<b class='flag-5'>Air780</b>EPM——GPIO的设计说明

    Air780EPM 模块串口电路设计硬件指导

    串口作为Air780EPM模块的核心通信接口,承担着设备控制、数据传输及外设交互等关键功能,在物联网终端、智能设备、工业自动化等场景中不可或缺。 一、概述   串口作为 Air780EPM 模块最最
    的头像 发表于 03-07 17:56 597次阅读
    <b class='flag-5'>Air780</b>EPM 模块串口电路设计硬件指导

    简单快捷的技巧!NTP时间同步,用对指令是关键

    源(例如原子钟、GPS)接收精确的协调世界时UTC,客户端再从服务器请求和接收时间。  很多场景中由于业务需要,模组必须保持正确的系统时钟,才能正常工作。 以低功耗4G模组经典型号Air780E
    的头像 发表于 01-23 14:44 1595次阅读
    简单快捷的技巧!NTP时间同步,用对指令是关键

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

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

    Air8000工业引擎:多IO多功能,即将量产

    科技近日宣布,其工业引擎Air8000即将进入量产阶段。这款引擎集成了4G、Wi-Fi、BLE、GNSS、Gsensor及电源管理等多项功能,专为工业应用而设计,展现了强大的场景解决能力
    的头像 发表于 01-07 14:56 2888次阅读

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

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

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

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