当前位置: 首页 > news >正文

网站建设专业平台权威发布新闻的含义

网站建设专业平台,权威发布新闻的含义,家居企业网站建设效果,微信客户端入口GEC6818开发板JPG图像显示 | 开发板实现录音一.GEC6818开发板JPG图像显示1.jpg图片特性2.如何解压缩jpg图片1.对jpegsrc.v8c.tar.gz进行arm移植2.进入~/jpeg-8c对jpeg库进行配置3.编译4.安装#xff0c;将动态库存放到 /home/gec/armJPegLib5.清空编译记录6.自己查看下 /home/… GEC6818开发板JPG图像显示 | 开发板实现录音一.GEC6818开发板JPG图像显示1.jpg图片特性2.如何解压缩jpg图片1.对jpegsrc.v8c.tar.gz进行arm移植2.进入~/jpeg-8c对jpeg库进行配置3.编译4.安装将动态库存放到 /home/gec/armJPegLib5.清空编译记录6.自己查看下 /home/gec/armJPegLib目录下是否有4个目录7.将图片和程序下载到开发板运行即可二.开发板设置ip三.tftp使用四.运行程序显示图片的时候遇到以下问题五.禁用开发板开机自动执行原QT程序六.科大讯飞离线语音识别包Linux_aitalk_exp1227_1398d7c6运行demo程序六.开发板实现录音1.将alsa.tar.gz下载到开发板并解压到根目录2.设置alsa库环境变量3.生效该脚本文件4.查看环境变量有没有alsa库5.指定ALSA库的配置文件6.在开发板创建脚本 vi installAlsaNote.sh 按i按键添加以下内容,然后按:wq退出7.修改脚本权限8.运行脚本,注意每次掉电后需要重新运行9.录音10.播放音频源码asr_offline_sample.cmyhead.hMakefile一.GEC6818开发板JPG图像显示 1.jpg图片特性 体积小使用到数据结构里面的霍夫曼树(哈夫曼树)对数据进行压缩 2.如何解压缩jpg图片 1.对jpegsrc.v8c.tar.gz进行arm移植 移植方式如下 1.将jpegsrc.v8c.tar.gz解压缩到ubuntu ~ tar -zxvf jpegsrc.v8c.tar.gz -C ~ // -C 指定解压缩的位置2.进入~/jpeg-8c对jpeg库进行配置 ./configure --hostarm-linux --prefix/home/gec/armJPegLib --hostarm-linux 指定编译的环境arm平台 --prefix/home/gec/armJPegLib 指定动态库存放的路径3.编译 make4.安装将动态库存放到 /home/gec/armJPegLib make install5.清空编译记录 make clean6.自己查看下 /home/gec/armJPegLib目录下是否有4个目录 bin include lib share 7.将图片和程序下载到开发板运行即可 二.开发板设置ip // 临时静态设置ip设置,每次都需要设置 ifconfig eth0 192.168.24.xxx(自己分配的ip) // 永久ip设置vi /etc/profile设置ipifconfig eth0 192.168.24.xxx(自己分配的ip)参数如下ifconfig lo 127.0.0.1 up ifconfig eth0 up ifconfig eth0 192.168.24.xxx 保存退出重启开发板 // 自动获取ip(慎重使用)udhcpc三.tftp使用 1.从飞秋下载tftp工具解压打开tftp32.exe 2.点击浏览选择需要下载的文件所对应的目录 3.在开发板CRT软件执行一下命令进行下载程序 tftp 192.168.1.xxx -g -r main需要下载的程序解释: 192.168.1.xxx : 电脑主机ip注意不是开发板的ip-g -r 从电脑下载内容到开发板-p -l 将文件从开发板上传到电脑四.运行程序显示图片的时候遇到以下问题 /main: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory 将 libjpeg.so.8下载到开发板的/lib tftp 192.168.1.xxx -g -r libjpeg.so.8 cp libjpeg.so.8 /lib五.禁用开发板开机自动执行原QT程序 vi /etc/profile 将以下两行程序注释 #cd /IOT #./iot 保存退出重启开发板 reboot六.科大讯飞离线语音识别包Linux_aitalk_exp1227_1398d7c6运行demo程序 1.进入Linux_aitalk_exp1227_1398d7c6/asr_offline_sample/asr_offline_sample 2.sudo cp Linux_aitalk_exp1227_1398d7c6/libs/x64/libmsc.so /lib 只需要拷贝一遍即可3.编译程序 ./64_bitmake.sh4.编译后生成的可执行程序存放在 Linux_aitalk_exp1227_1398d7c6/bin 5.进入 Linux_aitalk_exp1227_1398d7c6/bin执行asr_offline_sample程序 ./asr_offline_sample报错 ./asr_offline_sample: error while loading shared libraries: libmsc.so: cannot open shared object file: No such file or directory 注意将 sudo cp Linux_aitalk_exp1227_1398d7c6/libs/x64/libmsc.so /lib 然后重新执行程序即可 六.开发板实现录音 /alsa/bin -- arecord 录音 /alsa/bin -- aplay 播放alsa库移植 1.将alsa.tar.gz下载到开发板并解压到根目录 tftp 192.168.24.xxx -g -r alsa.tar.gz2.设置alsa库环境变量 /etc/init.d/rcS 与 /etc/profile #最大的区别就是添加完环境变量以后不需要重启开发板只需要执行 source /etc/init.d/rcS # 即可 vi /etc/init.d/rcS #添加以下内容 export LD_LIBRARY_PATH/alsa/lib:$LD_LIBRARY_PATH export PATH$PATH:/alsa/bin 3.生效该脚本文件 source /etc/init.d/rcS 4.查看环境变量有没有alsa库 env5.指定ALSA库的配置文件 将/alsa/share/alsa/拷贝到/usr/share/方法如下 cp /alsa/share/alsa/ /usr/share/ -r 将/alsa拷贝到/home/gec/,方法如下 cp /alsa /home/gec/ -rf --- 如果/home/gec不存在则需要创建6.在开发板创建脚本 vi installAlsaNote.sh 按i按键添加以下内容,然后按:wq退出 mkdir /dev/snd cd /dev/sndmknod dsp c 14 3 mknod audio c 14 4 mknod mixer c 14 0 mknod controlC0 c 116 0 mknod seq c 116 1 mknod pcmC0D0c c 116 24 mknod pcmC0D0p c 116 16 mknod pcmC0D1c c 116 25 mknod pcmC0D1p c 116 17 mknod timer c 116 33 7.修改脚本权限 chmod 777 installAlsaNote.sh8.运行脚本,注意每次掉电后需要重新运行 ./installAlsaNote.sh 9.录音 注意录音的时候不需要接耳机因为开发板自带有麦克风麦克风的位置在耳机口后面 arecord -d3 -c1 -r16000 -twav -fS16_LE abc.wav-d, --duration# interrupt after # seconds --- 录音的秒数 -c, --channels# channels --- 音轨 -r, --rate# sample rate --- 采样频率 -t, --file-type TYPE file type (voc, wav, raw or au) --- 封装的格式 -f, --formatFORMAT sample format (case insensitive) --- 量化位数 abc.wav 是生成的录音文件10.播放音频 aplay abc.wav abc.wav 是生成的录音文件源码 asr_offline_sample.c #include stdlib.h #include stdio.h #include string.h #include errno.h #include unistd.h #include sys/socket.h #include netinet/in.h #include netinet/ip.h /* superset of previous */ #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include sys/types.h #include sys/stat.h #include fcntl.h#include ../../include/qisr.h #include ../../include/msp_cmn.h #include ../../include/msp_errors.h#define SAMPLE_RATE_16K (16000) #define SAMPLE_RATE_8K (8000) #define MAX_GRAMMARID_LEN (32) #define MAX_PARAMS_LEN (1024)const char * ASR_RES_PATH fo|res/asr/common.jet; //离线语法识别资源路径 const char * GRM_BUILD_PATH res/asr/GrmBuilld; //构建离线语法识别网络生成数据保存路径 const char * GRM_FILE call.bnf; //构建离线识别语法网络所用的语法文件 const char * LEX_NAME contact; //更新离线识别语法的contact槽语法文件为此示例中使用的call.bnftypedef struct _UserData {int build_fini; //标识语法构建是否完成int update_fini; //标识更新词典是否完成int errcode; //记录语法构建或更新词典回调错误码char grammar_id[MAX_GRAMMARID_LEN]; //保存语法构建返回的语法ID }UserData;const char *get_audio_file(void); //选择进行离线语法识别的语音文件 int build_grammar(UserData *udata); //构建离线识别语法网络 int update_lexicon(UserData *udata); //更新离线识别语法词典 int run_asr(UserData *udata); //进行离线语法识别const char* get_audio_file(void) {char key 0;while(key ! 27) //按Esc则退出{printf(请选择音频文件\n);printf(1.打电话给丁伟\n);printf(2.打电话给黄辣椒\n);printf(3.打电话给奥巴马\n);key getchar();getchar();switch(key){case 1:printf(\n1.打电话给丁伟\n);return wav/ddhgdw.pcm;case 2:printf(\n2.打电话给黄辣椒\n);return wav/ddhghlj.pcm;case 3:printf(\n3.打电话给奥巴马\n);return wav/ddhgabm.pcm;default:continue;}}exit(0);return NULL; }int build_grm_cb(int ecode, const char *info, void *udata) {UserData *grm_data (UserData *)udata;if (NULL ! grm_data) {grm_data-build_fini 1;grm_data-errcode ecode;}if (MSP_SUCCESS ecode NULL ! info) {printf(构建语法成功 语法ID:%s\n, info);if (NULL ! grm_data)snprintf(grm_data-grammar_id, MAX_GRAMMARID_LEN - 1, info);}elseprintf(构建语法失败%d\n, ecode);return 0; }int build_grammar(UserData *udata) {FILE *grm_file NULL;char *grm_content NULL;unsigned int grm_cnt_len 0;char grm_build_params[MAX_PARAMS_LEN] {NULL};int ret 0;grm_file fopen(GRM_FILE, rb); if(NULL grm_file) {printf(打开\%s\文件失败[%s]\n, GRM_FILE, strerror(errno));return -1; }fseek(grm_file, 0, SEEK_END);grm_cnt_len ftell(grm_file);fseek(grm_file, 0, SEEK_SET);grm_content (char *)malloc(grm_cnt_len 1);if (NULL grm_content){printf(内存分配失败!\n);fclose(grm_file);grm_file NULL;return -1;}fread((void*)grm_content, 1, grm_cnt_len, grm_file);grm_content[grm_cnt_len] \0;fclose(grm_file);grm_file NULL;snprintf(grm_build_params, MAX_PARAMS_LEN - 1, engine_type local, \asr_res_path %s, sample_rate %d, \grm_build_path %s, ,ASR_RES_PATH,SAMPLE_RATE_16K,GRM_BUILD_PATH);ret QISRBuildGrammar(bnf, grm_content, grm_cnt_len, grm_build_params, build_grm_cb, udata);free(grm_content);grm_content NULL;return ret; }int update_lex_cb(int ecode, const char *info, void *udata) {UserData *lex_data (UserData *)udata;if (NULL ! lex_data) {lex_data-update_fini 1;lex_data-errcode ecode;}if (MSP_SUCCESS ecode)printf(更新词典成功\n);elseprintf(更新词典失败%d\n, ecode);return 0; }int update_lexicon(UserData *udata) {const char *lex_content 丁伟\n黄辣椒;unsigned int lex_cnt_len strlen(lex_content);char update_lex_params[MAX_PARAMS_LEN] {NULL}; snprintf(update_lex_params, MAX_PARAMS_LEN - 1, engine_type local, text_encoding UTF-8, \asr_res_path %s, sample_rate %d, \grm_build_path %s, grammar_list %s, ,ASR_RES_PATH,SAMPLE_RATE_16K,GRM_BUILD_PATH,udata-grammar_id);return QISRUpdateLexicon(LEX_NAME, lex_content, lex_cnt_len, update_lex_params, update_lex_cb, udata); }int tcp_socket0; int new_socket0;void init_network() {//1.初始化网络tcp_socket socket(AF_INET, SOCK_STREAM, 0);//2.绑定服务器 //设置链接的服务器地址信息 struct sockaddr_in addr; addr.sin_family AF_INET; //IPV4 协议 addr.sin_port htons(50000); //端口addr.sin_addr.s_addr inet_addr(192.168.24.35); //服务器的IP 地址//解决端口复用int on1;setsockopt(tcp_socket,SOL_SOCKET,SO_REUSEADDR,on,sizeof(on));on1;setsockopt(tcp_socket,SOL_SOCKET,SO_REUSEPORT,on,sizeof(on));//2.绑定服务器地址信息int retbind(tcp_socket,(struct sockaddr *)addr,sizeof(addr));if(ret 0){perror();return 0;}else{printf(绑定成功\n);}//3.设置服务器为监听模式 retlisten(tcp_socket,5);if(ret 0){perror();return 0;}else{printf(设置监听成功\n);}//4.接收客户端的链接请求 printf(等待服务器链接进来\n);new_socketaccept(tcp_socket,NULL,NULL);if(new_socket 0){perror();return 0;}else{printf(链接成功\n);}}//设计一个从网络获取文件接口 char *get_network_file() {//进行文件的接收 //1.新建文件 int new_fdopen(wav/cmd.pcm,O_RDWR|O_CREAT|O_TRUNC,0777);int all_size0; while(1){//读取网络数据写入到本地文件中 char buf[4096]{0}; int size read(new_socket,buf,4096); write(new_fd,buf,size); all_size size; if(all_size 96000){printf(接收文件完毕开始识别\n);break;}}//关闭所有打开后的文件 close(new_fd);return wav/cmd.pcm; }int run_asr(UserData *udata) {char asr_params[MAX_PARAMS_LEN] {NULL};const char *rec_rslt NULL;const char *session_id NULL;const char *asr_audiof NULL;FILE *f_pcm NULL;char *pcm_data NULL;long pcm_count 0;long pcm_size 0;int last_audio 0;int aud_stat MSP_AUDIO_SAMPLE_CONTINUE;int ep_status MSP_EP_LOOKING_FOR_SPEECH;int rec_status MSP_REC_STATUS_INCOMPLETE;int rss_status MSP_REC_STATUS_INCOMPLETE;int errcode -1;//获取识别的音频文件 //asr_audiof get_audio_file(); //主要修改这里让他去识别我们自己的音频文件asr_audiof get_network_file(); //从网络中获取文件f_pcm fopen(asr_audiof, rb);if (NULL f_pcm) {printf(打开\%s\失败[%s]\n, f_pcm, strerror(errno));goto run_error;}//获取音频文件的大小分配堆空间fseek(f_pcm, 0, SEEK_END);pcm_size ftell(f_pcm);fseek(f_pcm, 0, SEEK_SET);pcm_data (char *)malloc(pcm_size);if (NULL pcm_data)goto run_error;//把所有的音频数据读取到堆空间中 fread((void *)pcm_data, pcm_size, 1, f_pcm);fclose(f_pcm);f_pcm NULL;//离线语法识别参数设置snprintf(asr_params, MAX_PARAMS_LEN - 1, engine_type local, \asr_res_path %s, sample_rate %d, \grm_build_path %s, local_grammar %s, \result_type json, result_encoding UTF-8, ,ASR_RES_PATH,SAMPLE_RATE_16K,GRM_BUILD_PATH,udata-grammar_id);session_id QISRSessionBegin(NULL, asr_params, errcode);if (NULL session_id)goto run_error;printf(开始识别...\n);while (1) {unsigned int len 6400;if (pcm_size 12800) {len pcm_size;last_audio 1;}aud_stat MSP_AUDIO_SAMPLE_CONTINUE;if (0 pcm_count)aud_stat MSP_AUDIO_SAMPLE_FIRST;if (len 0)break;printf();fflush(stdout);errcode QISRAudioWrite(session_id, (const void *)pcm_data[pcm_count], len, aud_stat, ep_status, rec_status);if (MSP_SUCCESS ! errcode)goto run_error;pcm_count (long)len;pcm_size - (long)len;//检测到音频结束if (MSP_EP_AFTER_SPEECH ep_status)break;usleep(150 * 1000); //模拟人说话时间间隙}//主动点击音频结束QISRAudioWrite(session_id, (const void *)NULL, 0, MSP_AUDIO_SAMPLE_LAST, ep_status, rec_status);free(pcm_data);pcm_data NULL;//获取识别结果while (MSP_REC_STATUS_COMPLETE ! rss_status MSP_SUCCESS errcode) {rec_rslt QISRGetResult(session_id, rss_status, 0, errcode);usleep(150 * 1000);}printf(\n识别结束\n);printf(\n);if (NULL ! rec_rslt){printf(%s\n, rec_rslt);//把结果回发给客户端 write(new_socket,rec_rslt,strlen(rec_rslt));}elseprintf(没有识别结果\n);printf(\n);goto run_exit;run_error:if (NULL ! pcm_data) {free(pcm_data);pcm_data NULL;}if (NULL ! f_pcm) {fclose(f_pcm);f_pcm NULL;} run_exit:QISRSessionEnd(session_id, NULL);return errcode; }int main(int argc, char* argv[]) {const char *login_config appid 4a6e6f76; //登录参数UserData asr_data; int ret 0 ;char c;//初始化网络 init_network();ret MSPLogin(NULL, NULL, login_config); //第一个参数为用户名第二个参数为密码传NULL即可第三个参数是登录参数if (MSP_SUCCESS ! ret) {printf(登录失败%d\n, ret);goto exit;}memset(asr_data, 0, sizeof(UserData));printf(构建离线识别语法网络...\n);ret build_grammar(asr_data); //第一次使用某语法进行识别需要先构建语法网络获取语法ID之后使用此语法进行识别无需再次构建if (MSP_SUCCESS ! ret) {printf(构建语法调用失败\n);goto exit;}while (1 ! asr_data.build_fini)usleep(300 * 1000);if (MSP_SUCCESS ! asr_data.errcode)goto exit;printf(离线识别语法网络构建完成开始识别...\n); while(1) //不断进行识别 {ret run_asr(asr_data);if (MSP_SUCCESS ! ret) {printf(离线语法识别出错: %d \n, ret);goto exit;}}exit:MSPLogout();return 0; } myhead.h #ifndef _MYHEAD_H #define _MYHEAD_H#include stdio.h #include string.h #include strings.h //#include uniststat.h //#include fcntld.h#include fcntl.h #include stdio.h //printf scanf #include fcntl.h //open write read lseek close #include unistd.h #include sys/types.h #include sys/stat.h #include sys/mman.h #include stdlib.h #include linux/input.h #include jpeglib.h#define LCD_WIDTH 800 #define LCD_HEIGHT 480 #define FB_SIZE (LCD_WIDTH * LCD_HEIGHT * 4) #define EN_LCD_SHOW_JPG 1 // 获取触摸屏坐标 int ts(int *ts_x,int *ts_y); // 显示jpg图片 int lcd_draw_jpg(unsigned int x,unsigned int y,const char *pjpg_path,char *pjpg_buf,unsigned int jpg_buf_size,unsigned int jpg_half); #endifMakefile #common makefile headerDIR_INC ../../include DIR_BIN ../../bin DIR_LIB ../../libsTARGET asr_offline_sample BIN_TARGET $(DIR_BIN)/$(TARGET)CROSS_COMPILE CFLAGS -g -Wall -I$(DIR_INC)ifdef LINUX64 LDFLAGS : -L$(DIR_LIB)/x64 else LDFLAGS : -L$(DIR_LIB)/x86 endif LDFLAGS -lmsc -lrt -ldl -lpthread -lstdcOBJECTS : $(patsubst %.c,%.o,$(wildcard *.c))$(BIN_TARGET) : $(OBJECTS)$(CROSS_COMPILE)gcc $(CFLAGS) $^ -o $ $(LDFLAGS)%.o : %.c$(CROSS_COMPILE)gcc -c $(CFLAGS) $ -o $ clean:rm -f *.o $(BIN_TARGET).PHONY:clean#common makefile foot
http://www.w-s-a.com/news/546144/

相关文章:

  • 响应式网站建设的应用场景怎么申请电商平台
  • 怎么做垂直自营网站游戏咨询网站建设目标是什么
  • 建设网站需要给钱吗建立网站三大基础
  • 金融公司网站 htmlwordpress 防火墙
  • 重庆智能建站模板网站投票系统 js
  • 网站维护的内容和步骤网站做什么内容
  • 万网虚拟主机建网站wordpress协调世界时
  • 微网站建设方式应用大全网站
  • 网站速度测速织梦模板下载
  • 环保网站建设公司排名汉阴网站建设
  • 自己做网站的二维码wordpress用户权限在哪改
  • 网站使用说明书网站建设公司的介绍
  • 推广型网站免费建设网站防盗链设置
  • 建设银行网站查开户行网站反链暴增怎么回事
  • centos7做网站软件实施工程师工资一般多少
  • 专业房产网站建设深圳建设交易集团
  • 政务网站建设标准项目经理接到网站开发怎么开展
  • 网站框架设计好后怎么做网站广告销售怎们做
  • asp技校网站保定八大平台公司
  • wordpress网站前端优化网站备案批量查询
  • 北京企业做网站杭州seo中心
  • 护肤品网站建设前的行业分析wordpress电子书模板
  • 做网站怎么销售.net开发网站怎么样
  • 蚌埠网站优化网站换空间wordpress
  • 微网站开发框架公司企业logo
  • 大淘客官网做的网站打不开网站建设完成
  • 婚纱摄影网站模板让别人做网站怎样才安全
  • 技术支持 骏域网站建设专家佛山网站运营管理教材
  • 个体营业执照可以做网站服务吗电商运营学校培训
  • 企业网站免费推广的方法.wordpress 爱情模板下载地址