合宙10月份推出的Air780E模組,是一款LTE Cat.1 bis通信模塊,采用移芯EC618平臺,支持4G全網通。
合宙也推出了相應的開發板,別看開發板身材小,價格低,但是身手不差。
合宙Air780E模組支持TTS/MP3/AMR等語音功能,同時在Air780E開發板內置了順芯7149Audio Codec。
為了方便開發者使用音頻功能,驅動各式喇叭,玩出花兒來,合宙還特別準備了 Air780E音頻擴展板以及喇叭 ,可輕松實現趣味TTS+AMR+MP3語音播放功能。
更更更讓開發者心顫的是,合宙還搞了個音頻擴展板使用創意視頻大賽,想要進一步從開發者腦細胞中榨汁:
然而這還不夠,這真的不夠,合宙居然還提供了一個 合宙Air780E云端音頻配置 ,讓開發者可以零基礎零代碼把板子和擴展板給用起來:
這,這,這你弄了板子,不玩起來,不讓它響起來,你都對不起合宙了。
我第一時間搶了兩塊9塊9包郵的Aire780E開發板,后來又搶了兩塊9塊9包郵的音頻擴展板。真可謂一坑接一坑,坑坑自愿跳??!
下面,就將體驗云喇叭功能的過程,給大家分享,最終讓Air780E開發板+音頻擴展板用方言打麻將。
一、焊接和連線
先按照下圖,在正確的一面,為開發板焊上排針,在擴展板上焊上母座:
然后,插上SIM卡,連接到喇叭,把開發板和擴展板對插起來:
這里的SIM卡支持,可是全網通的,中國移動、聯通、電信通殺,全都支持。
另外一點要表揚合宙的,合宙出的開發板,都貼心的提供了擴展板,可以很方便的進行應用。
二、下載固件
-
為了使用云喇叭功能,需要刷入專門的固件。
-
官方提供了固件的源碼,以及編譯好的固件。
-
方便起見,這里直接使用官方提供的固件。
固件下載地址:http://tools.openluat.com/tools/yunlaba
本文編寫時的固件文件為:
下載固件后,按照下面的教程燒錄固件:https://doc.openluat.com/wiki/37?wiki_page_id=4489#_22
燒錄完成后,就可以開始好好玩了。
三、開機啟動
使用Type-C數據線,給開發板供電,板子上的紅燈就會亮起來:
因為插了SIM卡,需要聯網才能使用,所以稍微等一會,等它聯網成功。
沒想到,等了半天,它居然一聲不吭,就是紅燈亮著,在那里悶頭悶腦的發悶氣。
是有哪里不對嗎?
趕緊看手冊,了解到了詳情:
按照說明,要按一下板子上的開機鍵:
按就按,誰怕誰呀!
按完后,還真害怕了。大半夜的,突然一下響起來,聲兒還賊大,差點把已經睡覺的家人給吵醒了。
按完后,板子開始正常啟動了,綠燈亮了:
正常情況下,喇叭開始響起來:
如果聯網有問題,或者服務器無法連接,也會播放對應的聲音。
現在板子啟動起來了,可以開始好好玩了。
四、喇叭云起來
用Air780E+音頻擴展板,就是想通過云讓喇叭響起來,使用云喇叭工具即可。
合宙提供的云喇叭在線工具地址:http://tools.openluat.com/tools/yunlaba
直接訪問該界面,就能夠給開發板發送語音信息,讓喇叭響起來。
打開該界面后,按照如下的步驟使用:
點擊發送音頻數據到設備后,正常情況下,會提示發送成功:
稍后,音頻擴展板的喇叭就會響起來了。
如果要讓發送的語音音色音速等更豐富,可以先設置語音參數,再生成發送:
可以多多嘗試,找到自己喜歡的或者覺得不錯的參數搭配。
五、探究云喇叭工具如何給設備發送數據
既然云喇叭在線工具是通過網頁操作的,而且它又沒有直接連接到喇叭,那么一定有什么方式讓兩者互通。
通過瀏覽器的開發者調試工具,可以查看端倪。
點擊 發送音頻數據到設備 ,會在調試工具的網絡界面中,看到如下的請求:
從上圖可以看到,云喇叭在線工具給 http://tools.openluat.com/api/site/yunlaba_mqtt 這個地址,POST發送了一些數據。
看名字,應該是發送給MQTT服務了,然后在開發板上,通過MQTT服務,獲取網頁工具發送的數據,再進行播放。
如果有興趣,可以查看固件對應的源碼,其邏輯正是如此。
進一步的,可以查看實際發送了什么數據:
從上圖中,可以看到,具體發送的數據如下:
這是個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:文本內容,會根據語音參數生成語音信息
其中,語音參數配置的序號,是指我根據自己的多次測試嘗試,選定了幾組語音配置信息:
你可以自己嘗試,選擇幾組合適的語音配置信息。
而文本內容部分,就是要發送的語音對應的文本了,注意不要包含空格、單雙引號等。
將上述腳本保存為send_mqtt.sh,然后執行:
./send_mqtt.sh 8615510******** 先賺他個100億再說
(左右移動查看全部內容)
注意將IMEI號替換為自己的開發板的。
發送成功后,喇叭就會根據設置,響起來了。
六、讓Air780E開發板+音頻擴展板用方言打麻將
在上一步的研究基礎上,只要我們可以以不同的語音配置,將不同的語音信息發送給開發板,那么喇叭就能夠以不同的聲音播放不同的內容了。
雖然,這些語音信息,也可以提前全部錄制出來,直接發給開發板播放,但是如果能夠進行動態的生成播放,那還是更加吸引人的。
為了更好玩,我從一段打麻將的小視頻中,提取了對應的對話信息,并經過一定的處理,最終讓Air780E開發板+音頻擴展板播放出來。
原始打麻將的小視頻地址:四川方言:老表打麻將,自摸的牌打出去了,把人笑安逸了
在該視頻中,一共有5個角色,分別標識為:
-
前男(苦命男):也就是主角男
-
前女(女王女):也就是主角男的老婆
-
左女(陰險女):打麻將的女性
-
后男(靦腆男):主角男對面的靦腆悶騷男
-
右男(道貌岸然男):另外一位打麻將的男性
將該視頻中的對話信息提取出來:
并將最后的輸出信息,拷貝到文本文件 對話.txt 中來:
在上一步的send_mqtt.sh中,設置了5組語音參數配置,剛好就是對應5位角色:
-
前男(苦命男):1
-
前女(女王女):0
-
左女(陰險女):2
-
后男(靦腆男):3
-
右男(道貌岸然男):4
因此,在提取信息到Excel中的時候,會設置對應的語音配置編號:
這個編號,在后面的程序中,也會進行調用,從而使用對應的語音配置輸出信息。
最后,再編寫對應的腳本:
#!/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開發板+音頻擴展板 ,那么可以進行更為精細的控制,讓一桌麻將打得更為生動;在其他場合應用,也會更為有趣。
本文由電子發燒友社區發布,轉載請注明以上來源。如需社區合作及入群交流,請添加微信EEFans0806,或者發郵箱liuyong@huaqiu.com。
熱門推薦干貨好文
1、社區精選!PCB多層板設計挑戰賽作品集合
2、超強性能AI芯片,OpenHarmony多系統支持,可定制高性能AP(附10+開發Demo)
3、從零入門物聯網OH開源平臺,從簡單到高階項目,創客、電子愛好者都愛用!
4、低成本ESP32方案,支持OpenHarmony系統開發(附10+項目樣例Demo)
5、NO RTOS移植!32位、64線程開發板,超強實時性體驗!
6、四核64位,超強CPU ,看RK3568“競”開發板DEMO!
7、人工智能也能這么玩, 簡單快速入手,還能自定義AI運算
8、業界首款!支持富設備開發,OpenHarmony開發者都選它!
9、高性能雙核RISC-V,滿足大多數開發,這款國產MCU工程師都愛了!
原文標題:【趣味開發】合宙Air780E開發板趣味應用開發:方言打麻將
文章出處:【微信公眾號:電子發燒友論壇】歡迎添加關注!文章轉載請注明出處。
-
電子技術
+關注
關注
18文章
890瀏覽量
56019 -
電子發燒友論壇
+關注
關注
4文章
197瀏覽量
1090
原文標題:【趣味開發】合宙Air780E開發板趣味應用開發:方言打麻將
文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發燒友論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論