鴻蒙HarmonyOS開發(fā)板訊飛平臺+語音控制開關(guān)燈
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz
參考連老師博文:https://harmonyos.51cto.com/posts/1842
通過訊飛開放平臺可以將語音實(shí)時(shí)轉(zhuǎn)換為文字,我們可以實(shí)現(xiàn)語音控制開關(guān)燈。大致流程如下:
1、創(chuàng)建應(yīng)用,下載sdk,編譯demo可執(zhí)行程序(本文采用的Linux SDK);
2、通過應(yīng)用的唯一APPID,登錄到訊飛開放平臺;
3、用戶輸入語音,Linux SDK程序通過麥克風(fēng)接收到語音數(shù)據(jù),上傳到訊飛開放平臺;
4、平臺返回語音翻譯的文字,由Linux SDK程序通過udp socket通信的方式發(fā)送給開發(fā)板;
5、開發(fā)板接收到數(shù)據(jù),執(zhí)行控制開關(guān)燈的動作;
平臺準(zhǔn)備
1、訊飛控制臺:https://console.xfyun.cn/app/myapp,首先申請賬號。實(shí)名認(rèn)證后可以領(lǐng)取免費(fèi)的語音服務(wù);
2、創(chuàng)建新應(yīng)用;
3、下載對應(yīng)的SDK,編譯demo程序,本文采用的Linux SDK;

PC(Linux SDK)準(zhǔn)備
1、本文選擇的是和開發(fā)板位于同一wifi下的虛擬機(jī),解壓Linux_iat1227_5fe1be98.zip,采用demo程序//samples/iat_online_record_sample;
2、編譯程序,編譯成功生成可執(zhí)行程序iat_online_record_sample;
- cd samples/iat_online_record_sample
- source 64bit_make.sh
3、登錄平臺應(yīng)用需要唯一的APPID即可;
- const char* login_params = "appid = 5fe1be98, work_dir = .";
4、Linux SDK程序接收到平臺返回結(jié)果,通過udp socket發(fā)送數(shù)據(jù)到開發(fā)板;
- 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);
- }
- }
開發(fā)板準(zhǔn)備
1、開發(fā)板編寫一個(gè)udp socket server程序,根據(jù)接收到的命令控制開關(guān)燈;
- 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, "關(guān)燈", strlen("關(guān)燈")) == 0)
- {
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 0);
- }
- else
- {
- printf("Unknown command.\n");
- }
- }
總體測試
1、啟動開發(fā)板,連接好wifi,監(jiān)聽udp端口;IP:192.168.124.14 PORT:12345;
2、啟動Linux SDK demo程序,./iat_online_record_sample;IP:192.168.124.10;
3、用戶對PC麥克風(fēng)輸入語音“開燈”,打印信息如下,接收訊飛平臺文字,發(fā)送數(shù)據(jù)到開發(fā)板;
4、開發(fā)板接收到數(shù)據(jù),打印信息如下,GPIO控制燈亮;

5、用戶對PC麥克風(fēng)輸入語音“關(guān)燈”,打印信息如下,接收訊飛平臺文字,發(fā)送數(shù)據(jù)到開發(fā)板;

6、開發(fā)板接收到數(shù)據(jù),打印信息如下,GPIO控制燈滅;

以上就是分享的全部內(nèi)容,謝謝觀看。
©著作權(quán)歸作者和HarmonyOS技術(shù)社區(qū)共同所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz