今天要跟大家分享的是——合宙Air780E開發(fā)板、Air780E音頻擴(kuò)展板喇叭套裝,都是首發(fā)9.9元包郵搶到的。通過合宙提供的Air780E云端音頻配置平臺(tái),開發(fā)者可以輕松實(shí)現(xiàn)趣味TTS+AMR+MP3語(yǔ)音播放功能。
接下來(lái)具體分享一下體驗(yàn)云喇叭功能的過程,最終讓Air780E開發(fā)板+音頻擴(kuò)展板實(shí)現(xiàn)視頻中多音色打麻將對(duì)話功能。在熟練使用云端工具配置的基礎(chǔ)上,還可以進(jìn)一步自己編程來(lái)實(shí)現(xiàn)更為個(gè)性有趣的應(yīng)用。
一、焊接和連線
先按照下圖,在正確的一面,為開發(fā)板焊上排針,在擴(kuò)展板上焊上母座:
然后插上SIM卡,連接到喇叭,把開發(fā)板和擴(kuò)展板對(duì)插起來(lái):
這里的SIM卡支持,可是全網(wǎng)通的,中國(guó)移動(dòng)、聯(lián)通、電信通殺,全都支持。
另外一點(diǎn)要表?yè)P(yáng)合宙的,合宙出的開發(fā)板,都貼心的提供了擴(kuò)展板,可以很方便的進(jìn)行應(yīng)用。
二、下載固件
為了使用云喇叭功能,需要刷入專門的固件。官方提供了固件的源碼,以及編譯好的固件。
方便起見,這里直接使用官方提供的固件。
固件下載地址:
http://tools.openluat.com/tools/yunlaba
本文編寫時(shí)的固件文件為:
燒錄完成后,就可以開始好好玩了。
三、開機(jī)啟動(dòng)
用Type-C數(shù)據(jù)線,給開發(fā)板供電,板子上的紅燈就會(huì)亮起來(lái):
因?yàn)椴辶薙IM卡,需要聯(lián)網(wǎng)才能使用,所以稍微等一會(huì),等它聯(lián)網(wǎng)成功。
沒想到,等了半天,它居然一聲不吭,就是紅燈亮著,在那里悶頭悶?zāi)X的發(fā)悶氣。
是有哪里不對(duì)嗎?
趕緊看手冊(cè),了解到了詳情:
按照說(shuō)明,要按一下板子上的開機(jī)鍵:
按就按,誰(shuí)怕誰(shuí)呀!
按完后,還真害怕了。大半夜的,突然一下響起來(lái),聲兒還賊大,差點(diǎn)把已經(jīng)睡覺的家人給吵醒了。
按完后,板子開始正常啟動(dòng)了,綠燈亮了:
正常情況下,喇叭開始響起來(lái):
播報(bào)"歡迎使用合宙云端音頻播放設(shè)備"
播報(bào)"服務(wù)器連接成功"
如果聯(lián)網(wǎng)有問題,或者服務(wù)器無(wú)法連接,也會(huì)播放對(duì)應(yīng)的聲音。
現(xiàn)在板子啟動(dòng)起來(lái)了,可以開始好好玩了。
四、喇叭云起來(lái)
Air780E開發(fā)板+音頻擴(kuò)展板,就是想通過云讓喇叭響起來(lái),使用云喇叭工具即可。
合宙云喇叭在線工具:
http://tools.openluat.com/tools/yunlaba
直接訪問該界面,就能夠給開發(fā)板發(fā)送語(yǔ)音信息,讓喇叭響起來(lái)。
打開該界面后,按照如下的步驟使用:
點(diǎn)擊發(fā)送音頻數(shù)據(jù)到設(shè)備后,正常情況下,會(huì)提示發(fā)送成功:
稍后,音頻擴(kuò)展板的喇叭就會(huì)響起來(lái)了。
如果要讓發(fā)送的語(yǔ)音音色音速等更豐富,可以先設(shè)置語(yǔ)音參數(shù),再生成發(fā)送:
可以多多嘗試,找到自己喜歡的或者覺得不錯(cuò)的參數(shù)搭配。
五、給設(shè)備發(fā)送數(shù)據(jù)
接下來(lái)可以探究云喇叭工具如何給設(shè)備發(fā)送數(shù)據(jù)——既然云喇叭在線工具是通過網(wǎng)頁(yè)操作的,而且它又沒有直接連接到喇叭,那么一定有什么方式讓兩者互通。
通過瀏覽器的開發(fā)者調(diào)試工具,可以查看端倪。
點(diǎn)擊發(fā)送音頻數(shù)據(jù)到設(shè)備,會(huì)在調(diào)試工具的網(wǎng)絡(luò)界面中,看到如下的請(qǐng)求:
從上圖可以看到,云喇叭在線工具給http://tools.openluat.com/api/site/yunlaba_mqtt 這個(gè)地址,POST發(fā)送了一些數(shù)據(jù)。
看名字,應(yīng)該是發(fā)送給MQTT服務(wù)了,然后在開發(fā)板上,通過MQTT服務(wù),獲取網(wǎng)頁(yè)工具發(fā)送的數(shù)據(jù),再進(jìn)行播放。
如果有興趣,可以查看固件對(duì)應(yīng)的源碼,其邏輯正是如此。
進(jìn)一步的,可以查看實(shí)際發(fā)送了什么數(shù)據(jù):
從上圖中,可以看到,具體發(fā)送的數(shù)據(jù)如下:
這是個(gè)JSON格式的數(shù)據(jù),格式如下:
tpoic:
表示信息發(fā)布的主題,具體為:test20220929/IMEI號(hào),后面的IMEI號(hào),就是開發(fā)板上Air780E的IMEI,也就是網(wǎng)頁(yè)工具上填寫的。
text:
表示要發(fā)布的語(yǔ)音信息,如果設(shè)置了語(yǔ)音參數(shù),就會(huì)帶有一定的參數(shù)標(biāo)記。
了解到以上信息后,可以基本確定一點(diǎn)——如果我們也能按照要求,給上述地址發(fā)送對(duì)應(yīng)的JSON格式的數(shù)據(jù),那么也能在程序中,直接使用云喇叭工具提供的后臺(tái)服務(wù),來(lái)控制我們自己的喇叭了。
要發(fā)送JSON數(shù)據(jù)給直接的服務(wù)網(wǎng)址,可以用Python、nodejs、PHP、Go、Java等語(yǔ)言編程進(jìn)行,也可以直接使用命令行的curl命令來(lái)發(fā)送數(shù)據(jù)。
下面是一個(gè)最簡(jiǎn)單的發(fā)送信息的shell腳本:
該腳本需要在Linux或者macOS環(huán)境中運(yùn)行。如果是在Windows環(huán)境,則可以在WSL中運(yùn)行。
手機(jī)橫屏/上下滑動(dòng)查看完整內(nèi)容:
#!/bin/bash
# Air780E模組的IMEI
imei=$1
# 0-4,自己測(cè)試選定的幾組語(yǔ)音參數(shù)
idx=$2
# 要發(fā)送的文本內(nèi)容,不能包含空格,單雙引號(hào)
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個(gè)參數(shù):
imei:IMEI號(hào),對(duì)應(yīng)網(wǎng)頁(yè)中的IMEI號(hào);
idx:語(yǔ)音參數(shù)配置的序號(hào);
msg:文本內(nèi)容,會(huì)根據(jù)語(yǔ)音參數(shù)生成語(yǔ)音信息。
其中,語(yǔ)音參數(shù)配置的序號(hào),是指我根據(jù)自己的多次測(cè)試嘗試,選定了幾組語(yǔ)音配置信息:
你可以自己嘗試,選擇幾組合適的語(yǔ)音配置信息。
而文本內(nèi)容部分,就是要發(fā)送的語(yǔ)音對(duì)應(yīng)的文本了,注意不要包含空格、單雙引號(hào)等。
將上述腳本保存為send_mqtt.sh,然后執(zhí)行:
./send_mqtt.sh 8615510********
先賺他個(gè)100億再說(shuō)
注意將IMEI號(hào)替換為自己的開發(fā)板的。
發(fā)送成功后,喇叭就會(huì)根據(jù)設(shè)置,響起來(lái)了。
六、喇叭一響,麻將打起!
在上一步的研究基礎(chǔ)上,只要我們可以用不同的語(yǔ)音配置,將不同的語(yǔ)音信息發(fā)送給開發(fā)板,那么喇叭就能夠以不同的聲音播放不同的內(nèi)容了。
雖然,這些語(yǔ)音信息,也可以提前全部錄制出來(lái),直接發(fā)給開發(fā)板播放,但是如果能夠進(jìn)行動(dòng)態(tài)的生成播放,那還是更加吸引人的。
為了更好玩,我從一段打麻將的小視頻中,提取了對(duì)應(yīng)的對(duì)話信息,并經(jīng)過一定的處理,最終讓Air780E開發(fā)板+音頻擴(kuò)展板播放出來(lái)。
一共有5個(gè)角色,分別標(biāo)識(shí)為:
前男(苦命男):也就是主角男
前女(女王女):也就是主角男的老婆
左女(陰險(xiǎn)女):打麻將的女性
后男(靦腆男):主角男對(duì)面的靦腆悶騷男
右男(道貌岸然男):另外一位打麻將的男性
將該視頻中的對(duì)話信息提取到Excel文件中,文末【閱讀原文】鏈接獲取源文件:
并將最后的輸出信息,拷貝到文本文件對(duì)話.txt中來(lái):
11哎呀,婆娘,你怎么又來(lái)了嘛
21好不容易打回清凈麻將啊
30我來(lái)看會(huì)熱鬧
44保長(zhǎng)才趣哇
54人家皮蛋來(lái)耍嘛就讓她耍會(huì)嘛
63人家也想來(lái)看會(huì)玩意兒嘛
73等人家皮蛋在這兒
80你看嘛,她們都想我來(lái)
91那是嘛,你來(lái)我就輸了
101肯定想你來(lái)啥
……
在上一步的send_mqtt.sh中,設(shè)置了5組語(yǔ)音參數(shù)配置,剛好就是對(duì)應(yīng)5位角色:
前男(苦命男):1
前女(女王女):0
左女(陰險(xiǎn)女):2
后男(靦腆男):3
右男(道貌岸然男):4
因此,在提取信息到Excel中的時(shí)候,會(huì)設(shè)置對(duì)應(yīng)的語(yǔ)音配置編號(hào)。
文末【閱讀原文】鏈接獲取源文件:
這個(gè)編號(hào),在后面的程序中,也會(huì)進(jìn)行調(diào)用,從而使用對(duì)應(yīng)的語(yǔ)音配置輸出信息。
最后,再編寫對(duì)應(yīng)的腳本:
手機(jī)橫屏/上下滑動(dòng)查看完整內(nèi)容:
#!/bin/bash
# Air780E開發(fā)板方言打麻將
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 < 對(duì)話.txt
if [[ "$send_text" != "" ]];then
echo $send_text
send_cmd $imei "$send_text"
fi
上述腳本的主要邏輯如下:
循環(huán)讀取 對(duì)話.txt 的每一行內(nèi)容;
根據(jù)預(yù)先設(shè)置好的角色語(yǔ)音配置序號(hào),生成對(duì)應(yīng)的帶標(biāo)記的預(yù)發(fā)送信息;
累加要發(fā)送的信息,每滿5條,就調(diào)用一次發(fā)送接口發(fā)送信息。
將腳本保存為duihua_damajiang.sh,然后執(zhí)行該腳本:
./duihua_damajiang.sh 8615510********
注意將IMEI號(hào)替換為自己的開發(fā)板的。
運(yùn)行后,待對(duì)話信息發(fā)送成功后,喇叭響起來(lái),一圈麻將就打起來(lái)了。
七、總結(jié)
Air780E開發(fā)板+音頻擴(kuò)展板,將云語(yǔ)音應(yīng)用的門檻大幅降低,可以說(shuō)無(wú)門檻入門了。
在熟練使用云端工具配置的基礎(chǔ)上,還可以進(jìn)一步自己編程來(lái)實(shí)現(xiàn)更為個(gè)性化的功能。
如果你有多套Air780E開發(fā)板+音頻擴(kuò)展板,那么可以進(jìn)行更為精細(xì)的控制,讓一桌麻將打得更為生動(dòng);在其他場(chǎng)合應(yīng)用,也會(huì)更為有趣。
-
音頻
+關(guān)注
關(guān)注
29文章
2877瀏覽量
81547 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5050瀏覽量
97471
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論