GEC6818科大讯飞离线语音识别

这篇具有很好参考价值的文章主要介绍了GEC6818科大讯飞离线语音识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GEC6818科大讯飞离线语音识别

一、 下载科大讯飞离线语音SDK

在下载SDK时需要注意选择Linux的版本!!

GEC6818科大讯飞离线语音识别,GEC6818,语音识别,人工智能,GEC6818,嵌入式硬件,单片机,学习,粤嵌

在官网下载离线语音的包,解压后可以得到下面的一些文件夹:

GEC6818科大讯飞离线语音识别,GEC6818,语音识别,人工智能,GEC6818,嵌入式硬件,单片机,学习,粤嵌

二、 解压文件夹后

解压后你需要知道自己命令放在下面的文件夹中
GEC6818科大讯飞离线语音识别,GEC6818,语音识别,人工智能,GEC6818,嵌入式硬件,单片机,学习,粤嵌

关于Make file文件:
GEC6818科大讯飞离线语音识别,GEC6818,语音识别,人工智能,GEC6818,嵌入式硬件,单片机,学习,粤嵌

关于asr_offline_sample.c文件:
GEC6818科大讯飞离线语音识别,GEC6818,语音识别,人工智能,GEC6818,嵌入式硬件,单片机,学习,粤嵌

asr_offline_sample.c文件是我们更改为自己的逻辑的文件,但是也不需要都了解清楚只要会改就行。

更改完asr_offline_sample.c文件后,在ubantu里面运行makefile文件后会有一些警告,这些都是定义的问题,可以不用管,但是在./asr_offline_sample运行的时候会报错找不到库,所以我们需要将资料包里面文件复制到lib目录下,具体如下:
需要移动的文件:
GEC6818科大讯飞离线语音识别,GEC6818,语音识别,人工智能,GEC6818,嵌入式硬件,单片机,学习,粤嵌

执行命令:

cp ./libmsc.so /lib

注意前面的`./libmsc.so`是相对路径,可以根据自己的当前路径进行更改,后面是移动到根目录下的lib目录下。

然后再执行就不会报错了。

三、与GEC6818开发板一起使用

3.1 使用科大讯飞的离线语音在ubantu中运行,作为服务端进行关键字的识别

需要更改的重要的两个文件就是bin/call.bnfsamples/asr_offine_sample/asr_offine_sample.c.这两个文件,第一个文件是修改我们需要识别的字眼,第二个文件是C 语言代码,可以在官方的基础上修改为自己所需要的逻辑

3.2 call.bnf–>hehe.bnf

我自己将官方自带的call.bnf复制了一份修改名字为hehe.bnf,在新的基础上进行的修改,更改了这个文件后,需要在后面的例程中的.c文件中修改这个文件。

例如:
GEC6818科大讯飞离线语音识别,GEC6818,语音识别,人工智能,GEC6818,嵌入式硬件,单片机,学习,粤嵌

注意我们这里使用对应的ID是非常重要的,因为我后后续进行语音识别后就是根据这个ID来判断识别到的内容,然后在执行相应的操作。

3.3 asr_offine_sample.c文件修改

上面有提到过的修改了离线语法文件后在.c文件中也需要修改相应的文件名
GEC6818科大讯飞离线语音识别,GEC6818,语音识别,人工智能,GEC6818,嵌入式硬件,单片机,学习,粤嵌

修改后的代码–当然也可以不用这样大幅度的修改,只是将官方的代码进行了规整。

//服务器
#include <stdio.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include "asr_offline_sample.h" //科大讯飞


//全局的套接字
int sockfd = -1;


//将套接字创建好  并且绑定 监听
//将ip地址和端口号传进来 端口号释放需要时间(轮询机制)
void TcpInit(const char * ipaddr,unsigned short port)
{
    //1 创建套接字 ---- 神马都是文件,因此你的网络通信也是一个文件
    sockfd = socket(AF_INET,SOCK_STREAM,0);
    if(-1 == sockfd)
    {
        perror("server socket error");
        exit(1);//没有必要运行了
    }
    //2 我们需要将服务器的IP地址绑定到套接字
    struct sockaddr_in sa;
    sa.sin_family = AF_INET;//协议族
    sa.sin_port = htons(port);//端口号  内存是小端的 我们要转大端
    sa.sin_addr.s_addr = inet_addr(ipaddr);//将我们点分式的ip地址转换为一个大端整数
    //printf("ipaddr = %x port = %x\n",inet_addr(ipaddr),htons(port));
    int r = bind(sockfd,(struct sockaddr *)&sa,sizeof(sa));
    if(-1 == r)
    {
        perror("server bind error");
        exit(2);//没有必要运行了
    }

    //3 监听连接 ---- 创建一个监听队列   建立5个10个可以了
    listen(sockfd,5);

}

//接收客户端发过来的文件内容
void SaveFile(int accceptfd,int filesize)
{
 //每一次都是重复的覆盖hehe.pcm
 int fd = open("wav/hehe.pcm",O_RDWR | O_TRUNC|O_CREAT,0644);//截短这个文件
 if(-1 == fd)
 {
  send(accceptfd,"error!!!",9,0);//失败发送这个错误
  return;
 }
 send(accceptfd,"next!!!!",9,0);//发送下一步的指令
 unsigned char buf[1024] = {0};
 int size = 0;
 //接收文件的内容
 while(1)  
 {
  int r = recv(accceptfd,buf,1024,0);
  if(-1 == r)
        {
            perror("recv error");
            break;
        }
        else if(0 == r)//客户端已经断了
        {
            printf("对方断开连接了\n");
            break;
        }
        else//接收到信息了
        {
            //将文件的内容写入到文件
   write(fd,buf,r);
   //做完之后要退出
   size += r;
   if(size >= filesize)
    break;
   
        }
 }
 
 
 
 
 close(fd);
}


//专门用于去服务一个客户的线程
void * ClinetFunction(void * arg)
{
    
    pthread_detach(pthread_self());//将其分离

    int * accceptfd = (int *)arg;
    printf(" * accceptfd = %d\n", * accceptfd);
 int filesize = 0;
    //你发什么信息过来  我就在这个信息之前加上一节 然后回发给你
    while(1)
    {
  printf("\t\t等待客户端传文件过来........\n");
        int r = recv(*accceptfd,&filesize,4,0);//阻塞等待数据过来
        if(-1 == r)
        {
            perror("recv error");
            break;
        }
        else if(0 == r)//客户端已经断了
        {
            printf("对方断开连接了\n");
            break;
        }
        else//接收到信息了
        {
            //文件大小
   
   SaveFile(* accceptfd,filesize);
   
   int id = GetFlayId();//文件接收完毕  那么我们就放过去识别即可
   //给客户端返回id
   send(* accceptfd,&id,4,0);
            
        }
    }
    close(*accceptfd);
    free(accceptfd);
 return NULL;
}

//等待客户端的连接 
void waitconnect(void)
{
    //我们要基于这个连接套接字去通信
    struct sockaddr_in sa;
    socklen_t addrlen = sizeof(sa);
    while(1)
    {
        printf("一直等待对方的连接.......\n");
        int * accceptfd = malloc(4);//避免释放 因此我们要动态内存分配才可以
        *accceptfd = accept(sockfd,(struct sockaddr *)&sa,&addrlen);
        printf("连接者为:%s %d\n",inet_ntoa(sa.sin_addr),ntohs(sa.sin_port));
        //开一个线程出去  让它去服务与我的连接
        pthread_t thread;
        if(pthread_create(&thread,NULL,ClinetFunction,(void *)accceptfd) != 0)
        {
            perror("create thread error");
            continue;
        }
    }
    
    close(sockfd);
}

//通过main函数的参数 我们将这个ip地址和端口给进去
//./a.out 192.168.31.251 8888
int main(int argc,char * argv[])
{
    if(argc < 3)
    {
        printf("参数都不齐\n");
        return -1;
    }
 
 //初始化科大讯飞的库
 FlayInit();
 
 
    TcpInit(argv[1],atoi(argv[2]));

    waitconnect();

    return 0;
}

完整的工程大家可以在我的gitee上进行下载
下载地址:GEC6818智能语音家居系统文章来源地址https://www.toymoban.com/news/detail-797178.html

到了这里,关于GEC6818科大讯飞离线语音识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#调用科大讯飞离线语音合成实现文本转语音

    文本转语音(Text To Speech),简称TTS,在很多业务场景会用到,比如广播大厅,人机互动等。C#要实现TTS有不少选择,比如调用System.Speech,此处就不细说了,下面主要介绍一下C#调用科大讯飞的离线语音合成SDK来实现文本转语音。 地址:[https://www.xfyun.cn/service/offline_tts] 一、创建

    2024年02月12日
    浏览(35)
  • 科大讯飞 新版AIkit 离线语音听写 Java 版本

    前言:科大讯飞的新版离线语音听写,由于官网demo是kt语言开发的,咱也看不懂kt,搜遍了全网也没看到一个java版的新版离线语音demo,现记录下,留给有缘人参考!!!!!毕竟咱在这上面遇到了不少的坑。如果能留言指正,那就更好了。 实测一点问题都没 一、先把官网

    2024年02月22日
    浏览(34)
  • vue使用科大讯飞的语音识别(语音听写)

    使用的是封装好的插件:voice-input-button2 真的很好使很好使 1、先使用npm下载插件 npm i voice-input-button2 -save -dev 2、在main.js中引入 import voiceInputButton from \\\'voice-input-button2\\\' Vue.use(voiceInputButton, { appId: \\\'xxx\\\', // 您申请的语音听写服务应用的ID apiKey: \\\'xxxxxxxxxxxxxxxxxxxxxxxxx\\\', // 您开通的语音

    2024年01月19日
    浏览(37)
  • 技术解读 | 科大讯飞语音技术最新进展之二:语音识别与语音合成

    这一篇内容将围绕语音识别与合成方向,继续为大家带来相关技术解析。 “风物长宜放眼量”。面向人机交互更加自然流畅的未来,智能语音技术进展如何?该走向何方? 以下内容根据讯飞研究院杰出科学家潘嘉在NCMMSC 2022上的主题演讲《科大讯飞语音技术前沿进展》整理。

    2024年02月07日
    浏览(50)
  • 【人工智能】科大讯飞API接口调用(第一集)

    这学期有一门人工智能教育课程,恰巧又有这么一个实践,要求进行人工智能接口调用 于是首选了科大讯飞,下面是详细过程记录 以下是流程以及实现细节描述 第一步 来到科大讯飞开放平台 http://www.xfyun.cn 第二步 注册一个账号 注册时响应可能没那么快,稍等即可 第三步

    2024年02月09日
    浏览(39)
  • UE4如何接入科大讯飞的语音识别

    本文用的是UE4 4.27测试 安卓版测试链接: 链接:https://pan.baidu.com/s/1CsdJecfyMTdxNd6XfSECQQ 提取码:m122 B站视频连接:https://space.bilibili.com/449549424?spm_id_from=333.1007.0.0 GitHub地址:https://github.com/zhangmei126/XunFei 第一步 新建一个VS的UE4 4.27项目工程(注意是UE4 4.27 VS项目) 第二步 新建一

    2023年04月08日
    浏览(48)
  • vue3+vite+ts项目集成科大讯飞语音识别(项目搭建过程以及踩坑记录)

    🐱 个人主页: 不叫猫先生 🙋‍♂️ 作者简介:前端领域新星创作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫系列专栏:vue3从入门到精通、TypeScript从入门到实践 📢 资料领取:前端进阶资料以及文中源码可以找我免费领取 🔥 前端

    2023年04月09日
    浏览(41)
  • Java中实现在线语音识别(科大讯飞免费的SKD)、SDK下载和IDEA项目搭建、成功运行【完整代码】

    科大讯飞官网:https://www.xfyun.cn/ 首先登陆讯飞开放平台:https://passport.xfyun.cn/login,微信扫码关注登录 注册新账号 登陆后界面后,进入产品服务–实时语音转写栏目 点击个人免费套餐,下面的立即领取,它会提醒我们去实名认证 实名认证一下 提交完认证之后 可以看到认证

    2023年04月21日
    浏览(38)
  • 人工智能技术基础系列之:语音识别与语音处理

    作者:禅与计算机程序设计艺术 语音识别(英语:Speech recognition)是一个广义上的概念,泛指在不同场景、不同的条件下通过语言或口头获取信息并转换成文字的能力。具体来说,语音识别就是把人类的声音或者说话转化成计算机可以理解的文字、数字信号。语音识别技术应

    2024年02月05日
    浏览(44)
  • 第14章-Python-人工智能-语言识别-调用百度语音识别

            百度语音识别API是可以免费试用的,通过百度账号登录到百度智能云,在语音技术页面创建的应用,生成一个语音识别的应用,这个应用会给你一个APIKey和一个Secret Key,如图14.1所示。  我们在自己的程序中用 API Key 和 Secret Key 这两个值获取 Koken,然后再通过 Token 调

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包