991ed072f461ff853b8dc9f563060c13.png

参考连老师博文:https://harmonyos.51cto.com/posts/1842

通过讯飞开放平台可以将语音实时转换为文字,我们可以实现语音控制开关灯。大致流程如下:

1、创建应用,下载sdk,编译demo可执行程序(本文采用的Linux SDK);

2、通过应用的唯一APPID,登录到讯飞开放平台;

3、用户输入语音,Linux SDK程序通过麦克风接收到语音数据,上传到讯飞开放平台;

4、平台返回语音翻译的文字,由Linux SDK程序通过udp socket通信的方式发送给开发板;

5、开发板接收到数据,执行控制开关灯的动作;

dc9dd47cb9f60fd18c19c762eed4ab47.png

平台准备

1、讯飞控制台:https://console.xfyun.cn/app/myapp,首先申请账号。实名认证后可以领取免费的语音服务;

2、创建新应用;

eb826cb4a86317bfef5510edd49bedcc.png

3、下载对应的SDK,编译demo程序,本文采用的Linux SDK;

17caf78270f49a5f52908c791ea0d235.png

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即可;

constchar* login_params ="appid = 5fe1be98, work_dir = .";

65efe95c673a5360c7db40019c83c8e7.png

4、Linux SDK程序接收到平台返回结果,通过udp socket发送数据到开发板;

staticvoid show_result(char*string,charis_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);

}

elseif(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麦克风输入语音“开灯”,打印信息如下,接收讯飞平台文字,发送数据到开发板;

8782453978104fb36186bbe7c3e1b4ac.png

4、开发板接收到数据,打印信息如下,GPIO控制灯亮;

0bc4fa4342901daa06c4c2b75e3f925b.png

5、用户对PC麦克风输入语音“关灯”,打印信息如下,接收讯飞平台文字,发送数据到开发板;

c3a762e84c8c0393127d1db7604ba33a.png

6、开发板接收到数据,打印信息如下,GPIO控制灯灭;

0bbb173330698d9016246eec8f723f52.png

以上就是分享的全部内容,谢谢观看。

©著作权归作者和HarmonyOS技术社区共同所有,如需转载,请注明出处,否则将追究法律责任

【编辑推荐】

【责任编辑:jianghua TEL:(010)68476606】

点赞 0

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐