想了解更多內容,請訪問:
51CTO和華為官方戰略合作共建的鴻蒙技術社區
https://harmonyos.51cto.com/#zz
參考連老師博文:https://harmonyos.51cto.com/posts/1842
通過訊飛開放平臺可以將語音實時轉換為文字,我們可以實現語音控制開關燈。大致流程如下:
1、創建應用,下載sdk,編譯demo可執行程序(本文採用的Linux SDK);
2、通過應用的唯一APPID,登錄到訊飛開放平臺;
3、用戶輸入語音,Linux SDK程序通過麥克風接收到語音數據,上傳到訊飛開放平臺;
4、平臺返回語音翻譯的文字,由Linux SDK程序通過udp socket通信的方式發送給開發板;
5、開發板接收到數據,執行控制開關燈的動作;
平臺準備
1、訊飛控制臺:https://console.xfyun.cn/app/myapp,首先申請帳號。實名認證後可以領取免費的語音服務;
2、創建新應用;
3、下載對應的SDK,編譯demo程序,本文採用的Linux SDK;
PC(Linux SDK)準備
1、本文選擇的是和開發板位於同一wifi下的虛擬機,解壓Linux_iat1227_5fe1be98.zip,採用demo程序//samples/iat_online_record_sample;
2、編譯程序,編譯成功生成可執行程序iat_online_record_sample;
cd samples/iat_online_record_sample source 64bit_make.sh
3、登錄平臺應用需要唯一的APPID即可;
const char* login_params = "appid = 5fe1be98, work_dir = .";
4、Linux SDK程序接收到平臺返回結果,通過udp socket發送數據到開發板;
static void show_result(char *string, char is_over) { printf("\rResult: [ %s ]", string); if(is_over) { putchar('\n'); /* sendto */ struct sockaddr_in serv_addr; bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; inet_pton(AF_INET, IP, (void *)&serv_addr.sin_addr); serv_addr.sin_port = htons(PORT); ssize_t send_len = sendto(SOCKFD, string, strlen(string), 0, (const struct sockaddr *)&serv_addr, sizeof(serv_addr)); printf("send_len=%ld, [%s]\n", send_len, string); } }
開發板準備
1、開發板編寫一個udp socket server程序,根據接收到的命令控制開關燈;
bzero(buf, sizeof(buf)); recv_len = recvfrom(sockfd, buf, sizeof(buf), 0, (struct sockaddr *)&cli, &addrlen); if(recv_len > 0) { printf("recv: len=%u, [%s] \n", recv_len, buf); /* GPIO_10: RED GPIO_11: GREEN GPIO_12: YELLOW */ if(strncmp(buf, "開燈", strlen("開燈")) == 0) { GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 1); } else if(strncmp(buf, "關燈", strlen("關燈")) == 0) { GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 0); } else { printf("Unknown command.\n"); } }
總體測試
1、啟動開發板,連接好wifi,監聽udp埠;IP:192.168.124.14 PORT:12345;
2、啟動Linux SDK demo程序,./iat_online_record_sample;IP:192.168.124.10;
3、用戶對PC麥克風輸入語音「開燈」,列印信息如下,接收訊飛平臺文字,發送數據到開發板;
4、開發板接收到數據,列印信息如下,GPIO控制燈亮;
5、用戶對PC麥克風輸入語音「關燈」,列印信息如下,接收訊飛平臺文字,發送數據到開發板;
6、開發板接收到數據,列印信息如下,GPIO控制燈滅;
以上就是分享的全部內容,謝謝觀看。
©著作權歸作者和HarmonyOS技術社區共同所有,如需轉載,請註明出處,否則將追究法律責任
想了解更多內容,請訪問:
51CTO和華為官方戰略合作共建的鴻蒙技術社區
https://harmonyos.51cto.com/#zz
【編輯推薦】
點讚 0