今天要跟大家分享的是——合宙Air780E開發板、Air780E音頻擴展板喇叭套裝,都是首發9.9元包郵搶到的。通過合宙提供的Air780E云端音頻配置平臺,開發者可以輕松實現趣味TTS+AMR+MP3語音播放功能。
接下來具體分享一下體驗云喇叭功能的過程,最終讓Air780E開發板+音頻擴展板實現視頻中多音色打麻將對話功能。在熟練使用云端工具配置的基礎上,還可以進一步自己編程來實現更為個性有趣的應用。
一、焊接和連線
先按照下圖,在正確的一面,為開發板焊上排針,在擴展板上焊上母座:
然后插上SIM卡,連接到喇叭,把開發板和擴展板對插起來:
這里的SIM卡支持,可是全網通的,中國移動、聯通、電信通殺,全都支持。
另外一點要表揚合宙的,合宙出的開發板,都貼心的提供了擴展板,可以很方便的進行應用。
二、下載固件
為了使用云喇叭功能,需要刷入專門的固件。官方提供了固件的源碼,以及編譯好的固件。
方便起見,這里直接使用官方提供的固件。
固件下載地址:
http://tools.openluat.com/tools/yunlaba
本文編寫時的固件文件為:
燒錄完成后,就可以開始好好玩了。
三、開機啟動
用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開發板+音頻擴展板播放出來。
一共有5個角色,分別標識為:
前男(苦命男):也就是主角男
前女(女王女):也就是主角男的老婆
左女(陰險女):打麻將的女性
后男(靦腆男):主角男對面的靦腆悶騷男
右男(道貌岸然男):另外一位打麻將的男性
將該視頻中的對話信息提取到Excel文件中,文末【閱讀原文】鏈接獲取源文件:
并將最后的輸出信息,拷貝到文本文件對話.txt中來:
11哎呀,婆娘,你怎么又來了嘛
21好不容易打回清凈麻將啊
30我來看會熱鬧
44保長才趣哇
54人家皮蛋來耍嘛就讓她耍會嘛
63人家也想來看會玩意兒嘛
73等人家皮蛋在這兒
80你看嘛,她們都想我來
91那是嘛,你來我就輸了
101肯定想你來啥
……
在上一步的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開發板+音頻擴展板,那么可以進行更為精細的控制,讓一桌麻將打得更為生動;在其他場合應用,也會更為有趣。
-
音頻
+關注
關注
29文章
2839瀏覽量
81373 -
開發板
+關注
關注
25文章
4959瀏覽量
97213
發布評論請先 登錄
相關推薦
評論