[百度ai+讯飞云+socket通信]语音识别控制硬件点亮led灯(代码片段)

Weasker威斯克 Weasker威斯克     2022-12-11     176

关键词:

项目流程

一.百度AI语音识别SDK下载与配置。
二.讯飞云语音唤醒SDK下载与配置。
三.使用socket通信传递信息。
四.编写开发板硬件驱动(led)。
五.项目整合。
六.整体思路

开发须知

  1. 该项目采用的语言为c语言
  2. 平台为fs4412开发板+ubuntu12
  3. 项目必备程序下载地址:百度网盘
    提取码:ynm7

一、百度AI语音识别SDK下载与配置

1.进入百度AI官网 百度AI官网 ,注册账号,创建应用,领取中文普通话,记住key。




2.进入github链接下载百度AI通用API

3.下载的文件名为speech-demo-master.zip,解压并将下列选中文件删除,只留c和linux_c导入linux中



4.编辑asrmain.c
4.1我们将其放在/home目录下,路径为/home/speech-demo-master/,进入/home/speech-demo-master/res-api-asr/c,执行 vi asrmain.c

  1. 该程序的作用为:将名为16k.wav语音转换为文字保存在reasult字符数组中。


4.2.在150行左右,找到else并在其中添加进如下代码,该代码的作用为:

  1. 将本程序语音转换的文字,以去掉 ‘ [" ’ 开头和 ’ "] '结尾和其他杂项,只留下中文文本的形式存储在cmd字符串中
  2. 在当前目录下创建"cmd.txt"并将cmd字符串的内容写进"cmd.txt"中。


4.3保存并退出asrmain.c,在当前目录下执行 sh build_and_asr.sh,得到asrmain文件。

5.编辑ttsmain.c
5.1进入/home/speech-demo-master/res-api-tts/linux_c,执行 vi ttsmain.c

  1. 该程序的作用为:将保存在 text字符串的内容转换为音频result.wav。

5.2.在22行左右添加进如下代码,该代码的作用为:

  1. 将当前目录下"out.txt"文件中的内容读取并存放在text字符串中。
  2. 该程序将text字符串转换为result.wav音频


注意:以上两个文件中均有选择文件输出格式,如果执行完毕后输出的文件不是.wav,请注意修改

5.3保存并退出asrmain.c,在当前目录下执行 sh build_and_tts.sh,得到ttsmain文件。

二、讯飞云语音唤醒SDK下载与配置

1.进入讯飞云官网,创建应用
2.进入语音唤醒,设置唤醒词,提交。

3.前往SDK下载中心

4.选择平台和AI能力


5.网页自动开始下载sdk。在linux中创建mkdir /home/smart/awaken路径,将压缩包放进该路径下,并执行unzip Linux_awaken_expxxxx.zip解压。
6. cd /home/awaken/samples/awaken_offline_sample
根据你的linux位数来选择哪一个文件,使用 uname -r查看。
source xxbit_make.sh

三、使用socket通信传递信息

1、服务端server.c(放在开发板)
将从客户端client.c中接收的信息存进buf_recv后,与字符串cmd匹配,保存data的值,并将data写进led驱动节点(用来开关led灯,暂时不需要),

2.客户端client.c(放在linux)
从"cmd.txt"中读取指令,将指令发送到服务端,服务端处理完后返回整数数据recv_data,将out字符串的第recv_data项写进"out.txt"。

四.编写开发板硬件驱动(led)

根据服务端中写入/dev/led的值来选择led灯的开关。

五、项目整合

1.挂载开发板

  1. 在linux中安装nfs和tftp服务器。

    sudo apt-get install nfs-kernel-server
    sudo apt-get install tftp-hpa tftpd-hpa
    安装失败的话,详情搜索ubuntu换源

  2. 在/home/linux下 mkdir tftpboot

    uImageexynos44120-fs4412.dtb放进tftpboot中。
    rootfs放进/home/linux下存放
    (在百度云下载)

  3. 修改相关配置文件
    vi /etc/exports
    在尾部添加/home/linux/rootfs/ *(rw,sync,no_subtree_check,no_root_squash)

    vi /etc/default/tftpd-hpa

    set bootcmd tftp 41000000 uImage\\;tftp 42000000 exynos4412-fs4412.dtb\\;bootm 41000000 - 	42000000
    

    从tftpboot文件夹中下载uImage和exynos4412-fs4412.dtb到内从中,并从该内存启动。

    set bootargs root=/dev/nfs nfsroot=192.168.2.104:/home/linux/rootfs rw console=ttySAC2,115200 ip=192.168.2.10 init=/linuxrc
    

    挂载linux中的rootfs。

    set gatewayip	192.168.2.1		/*网关*/
    set ipaddr 192.168.2.10			/*开发板ip 同一网段内随便改*/
    set netmask	 255.255.255.0		/*子网掩码*/
    set serverip 192.168.2.104		/*linux的ip*/
    

    最后在uboot中输入saveenv保存配置信息。

  4. 重启(boot)成功挂载

  5. 加载led驱动
    在linux中将led.ko复制到rootfs中,在开发板上输入
    insmod led.ko
    mknod /dev/led c 253 0

  6. 将server.c通过交叉编译(arm-linux-gcc server.c)产生的文件server移动到开发板上
    ./server 192.168.2.10 8888启动服务器

2.编写shell脚本

在(一-4.3)步骤中,我们生成了asrmain文件,在(一-5.3)步骤中,我们生成了ttsmain文件,在(二-5)步骤中,我们创建了smart路径,并将awaken路径放在smart下。

  1. 将asrmain文件和ttsmain文件复制进smart下。

  1. 编辑smart.sh脚本
    在smart路径下vi smart.sh
#!/bin/bash

while [ 1 ]
do
        export LD_LIBRARY_PATH=$PWD/awaken/libs/x86/
        var0=$PWD
        var=$var0/awaken/bin
        cd $var
        ./awaken_offline_sample	
        cd $var0
        #aplay ./file.wav
        arecord -D "plughw:0,0" -f S16_LE -r 16000 -d 5 -t wav 16k.wav  
        /*录制音频,保存为16k.wav*/
        ./asrmain
        ./client 192.168.2.10 8888
        ./ttsmain
        aplay result.wav
done

3.在smart路径下运行sh smart.sh便可执行整个程序。

整体思路

  1. 在开发板上./server 192.168.2.10 8888开启服务端,准备接收信息。

  2. ./smart/awaken/bin/awaken_offline_sample

    运行语音唤醒程序,对着麦克风说出唤醒词以开启脚本。

  3. arecord -D "plughw:0,0" -f S16_LE -r 16000 -d 5 -t wav 16k.wav

    录音并保存为16k.wav。

  4. ./asrmain

    运行语音转文字程序,将16k.wav转换为文字并写到"cmd.txt"中。

  5. ./client 192.168.2.10 8888

    开启客户端,读取cmd.txt的内容并将其发送到服务端。

  6. 服务端接收到客户端发送来的指令后,与其中的cmd字符串进行匹配,匹配后向led驱动节点发送data来控制灯的开关,并向客户端返回一个值。

  7. 客户端接收到值后,与其中的out字符串进行匹配,并将其写到"out.txt"中。

  8. ./ttsmain

    执行文字转语音程序,将"out.txt"转换为语音文件result.wav。

  9. aplay result.wav

    播放result.wav,给用户反馈

如何用python调用百度语音识别

1、首先需要打开百度AI语音系统,开始编写代码,如图所示,编写好回车。2、然后接下来再试一下16k.pcm的音频,开始编写成功回车,如图所示的编写。3、最后,查看音频c的属性,可以看到音频持续28秒,这样就是用python调用百... 查看详情

百度ai基于node语音识别音频文件类型转换

...换(利用fluent-ffmpeg)config.js里面的应用Id,请替换成自己在百度应用里申请的。出于测试方便,我就不删除了。1.工程依赖安装,如果想测试音频类型转换,需要安装ffmpegnpmi安装ffmpegMAC直接下面命令,其他自行百度吧brew 查看详情

基于百度ai开放平台的人脸识别及语音合成(代码片段)

基于百度AI的人脸识别及语音合成课题课题需求(1)人脸识别在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄、性别、颜值等信息,将信息返... 查看详情

人工智能:百度ai开源的功能

什么是人工智能?听=语音识别说=语音合成看=图像视频文字识别理解=语言(文字)图像视频理解等逻辑处理思考=理解后的逻辑处理 准备工作:进入百度云AI管理后台中心创建AI语音接口:百度云AI后台管理中心  查看详情

利用百度语音识别接口将语音转换成文字教程(代码片段)

...音文转换,音文转换其实在很多地方都可以看到比如qq,百度搜索,讯飞输入法等等,具体到技术而言前述的三个场景其背后的技术都是一样的,都是利用AI进行语音识别。而且腾讯、百度、讯飞当前都开放了自家的语音识别接... 查看详情

使用百度语音识别(linuxc++sdk)的踩坑

...由于腾讯,阿里,讯飞的长语音识别都收费,因此选择了百度。由于不知道是自己太渣还是百度的文档写的太奇怪,一开始看到这东西的时候弄得我焦头烂额,在网上找人家踩过的坑,居然一个也没找到,是没人用么==[百度linuxc... 查看详情

ai全栈sota综述这些你都不知道,怎么敢说会ai?语音识别原理+实战(代码片段)

...型系统的流程基于HTTP协议的API接口客户端未来实战二调百度和科大讯飞API实战三离线语音识别Vosk前言语音识别原理首先是语音任务,如语音识别和语音唤醒。听到这些, 查看详情

百度ai技术qq群

百度语音QQ群648968704视频分析QQ群632473158DuerOSQQ群604592023图像识别QQ群649285136文字识别QQ群631977213理解与交互技术UNITQQ群584835350百度翻译QQ群214857706图像搜索QQ群630770006人脸识别QQ群282744268自然语言QQ群632426386百度ARQQ群472081119百度AI开... 查看详情

智能语音生活助手实现(qt)(代码片段)

...2.1语音识别模块2.1.1录音2.1.2点击释放按钮槽函数2.1.3申请百度AI开发平台语音识别应用2.1.4HTTP请求类实现2.1.5发送请求2.1.6MainWindow类调用函数2.1.7语音控制设备联动2.2智慧生活模块2.2.1创建API应用2.2.2Get方法获取API的JSON数据2.2.3解... 查看详情

智能聊天骚操作(代码片段)

...行业的捷径目前市面上主流的AI技术提供公司有很多,比如百度,阿里,腾讯,主做语音的科大讯飞,做只能问答的图灵机器人等等这些公司投入了很大一部分财力物力人力将底层封装,提供应用接口给我们,尤其是百度,完全免费的接口... 查看详情

phpsdk百度(api)智能语音识别(代码片段)

...test.wav(就是一段录音)    识别该录音的文字步骤1:百度开发平台注册成为开发者http://yuyin.baidu.com步骤2:建立一个应用  并下载phpsdk4、根据PHPsdk文档  http://ai.baidu.com/docs/#/ASR-Online-PHP-SDK/top因为是调用接 查看详情

人工智能1.语音合成,语音识别,相似度,图灵机器人,智能对话(代码片段)

目录一.准备工作(基于百度ai) 二.语音合成 三.语音识别 四.相似度五.图灵机器人 六.识别+合成+图灵七.智能对话  一.准备工作(基于百度ai)  1.创建应用① ②  ③  ④    2.用pytho... 查看详情

基于百度ai和qt的景物识别系统(代码片段)

...考网址,学益得智能硬件在B站上的视频。Qt语音识别|百度语音识别应用_哔哩哔哩_bilibili介绍一下我的系统都有什么功能,最主要的功能就是打开一张动物类的图片,可以通过百度AI来识别出图片中的动物是什么种类... 查看详情

基于python的语音识别控制系统(代码片段)

...别出来的文字来打开浏览器中的默认网站。python通过调用百度api实现语音识别(超详细)_exmlyshy的博客-CSDN博客_python语音识别百度api题目很简单,利用语音识别识别说出来的文字,根据文字的内容来控制图形移动&... 查看详情

人工智能初识(百度ai)(代码片段)

...用到语音合成安装SDK首先咱们要pipinstallbaidu-aip安装一个百度人工智能开放平台的PythonSDK实在是太方便了,这也是为什么我们选择百度人工智能的最大原因点击左侧的技术 查看详情

树莓派系列二(语音识别)

...识别领域,我个人比较欣赏讯飞.识别效果业界领先,这几年百度语音识别也在追赶,这次的研究让我对百度的语音识别效果刮目相看,Google的在国内不用想了.. 查看详情

百度语音识别vs科大讯飞语音识别

一.结果从笔者试验的结果来看,科大讯飞的语音识别技术远超百度语音识别 二.横向对比      科大讯飞语音识别百度语音识别费用各功能的前5小时免费全程免费转换精准率非常高比较低linuxSDKcc++ 查看详情

javaapi和androidsdk接入百度语音识别(代码片段)

...有成本的方法实现),这里主要测试了两种调用百度语音识别API的方案,一种是基于SDK(这里测试使用AndroidSDK),一种是通过java实现API调用。先看下Android 查看详情