国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

GEC6818開(kāi)發(fā)板JPG圖像顯示,科大訊飛離線語(yǔ)音識(shí)別包Linux_aitalk_exp1227_1398d7c6運(yùn)行demo程序,開(kāi)發(fā)板實(shí)現(xiàn)錄音

這篇具有很好參考價(jià)值的文章主要介紹了GEC6818開(kāi)發(fā)板JPG圖像顯示,科大訊飛離線語(yǔ)音識(shí)別包Linux_aitalk_exp1227_1398d7c6運(yùn)行demo程序,開(kāi)發(fā)板實(shí)現(xiàn)錄音。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

6818開(kāi)發(fā)板實(shí)現(xiàn)語(yǔ)音控制,嵌入式Linux開(kāi)發(fā)工程師課程,linux,運(yùn)維,服務(wù)器


一.GEC6818開(kāi)發(fā)板JPG圖像顯示

1.jpg圖片特性

體積小,使用到數(shù)據(jù)結(jié)構(gòu)里面的霍夫曼樹(shù)(哈夫曼樹(shù))對(duì)數(shù)據(jù)進(jìn)行壓縮

2.如何解壓縮jpg圖片

1.對(duì)jpegsrc.v8c.tar.gz進(jìn)行arm移植

移植方式如下:
1.將jpegsrc.v8c.tar.gz解壓縮到ubuntu ~

tar -zxvf jpegsrc.v8c.tar.gz -C ~ // -C 指定解壓縮的位置

2.進(jìn)入~/jpeg-8c對(duì)jpeg庫(kù)進(jìn)行配置

./configure --host=arm-linux --prefix=/home/gec/armJPegLib
--host=arm-linux : 指定編譯的環(huán)境,arm平臺(tái)
--prefix=/home/gec/armJPegLib : 指定動(dòng)態(tài)庫(kù)存放的路徑

3.編譯

make

4.安裝,將動(dòng)態(tài)庫(kù)存放到 /home/gec/armJPegLib

make install

5.清空編譯記錄

make clean

6.自己查看下 /home/gec/armJPegLib目錄下是否有4個(gè)目錄

bin  include  lib  share   

7.將圖片和程序下載到開(kāi)發(fā)板運(yùn)行即可

二.開(kāi)發(fā)板設(shè)置ip

// 臨時(shí)靜態(tài)設(shè)置ip設(shè)置,每次都需要設(shè)置
ifconfig eth0 192.168.24.xxx(自己分配的ip)
// 永久ip設(shè)置
    vi /etc/profile
    設(shè)置ip
        ifconfig eth0 192.168.24.xxx(自己分配的ip)
        參數(shù)如下:
            ifconfig lo 127.0.0.1 up   
            ifconfig eth0 up           
                                    
            ifconfig eth0 192.168.24.xxx 
    保存退出,重啟開(kāi)發(fā)板        
// 自動(dòng)獲取ip(慎重使用)
    udhcpc

三.tftp使用

1.從飛秋下載tftp工具,解壓,打開(kāi)tftp32.exe
2.點(diǎn)擊瀏覽選擇需要下載的文件所對(duì)應(yīng)的目錄
3.在開(kāi)發(fā)板CRT軟件,執(zhí)行一下命令進(jìn)行下載程序

tftp 192.168.1.xxx -g -r main(需要下載的程序)

解釋:

  192.168.1.xxx : 電腦主機(jī)ip,注意不是開(kāi)發(fā)板的ip
  -g -r : 從電腦下載內(nèi)容到開(kāi)發(fā)板
  -p -l : 將文件從開(kāi)發(fā)板上傳到電腦

四.運(yùn)行程序顯示圖片的時(shí)候遇到以下問(wèn)題

/main: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory  

將 libjpeg.so.8下載到開(kāi)發(fā)板的/lib

tftp 192.168.1.xxx -g -r libjpeg.so.8
cp libjpeg.so.8 /lib

五.禁用開(kāi)發(fā)板開(kāi)機(jī)自動(dòng)執(zhí)行原QT程序

vi /etc/profile
將以下兩行程序注釋
#cd /IOT
#./iot &
保存退出,重啟開(kāi)發(fā)板 reboot

六.科大訊飛離線語(yǔ)音識(shí)別包Linux_aitalk_exp1227_1398d7c6運(yùn)行demo程序

1.進(jìn)入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.sh

4.編譯后生成的可執(zhí)行程序存放在 Linux_aitalk_exp1227_1398d7c6/bin

5.進(jìn)入 Linux_aitalk_exp1227_1398d7c6/bin執(zhí)行asr_offline_sample程序

 ./asr_offline_sample

報(bào)錯(cuò)
./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 

然后重新執(zhí)行程序即可

六.開(kāi)發(fā)板實(shí)現(xiàn)錄音

/alsa/bin  --> arecord 錄音
/alsa/bin  --> aplay   播放

alsa庫(kù)移植

1.將alsa.tar.gz下載到開(kāi)發(fā)板并解壓到根目錄

tftp 192.168.24.xxx -g -r alsa.tar.gz

2.設(shè)置alsa庫(kù)環(huán)境變量

/etc/init.d/rcS 與 /etc/profile
#最大的區(qū)別就是,添加完環(huán)境變量以后不需要重啟開(kāi)發(fā)板,只需要執(zhí)行
source /etc/init.d/rcS  # 即可
vi /etc/init.d/rcS 
#添加以下內(nèi)容
export LD_LIBRARY_PATH=/alsa/lib:$LD_LIBRARY_PATH                          
export PATH=$PATH:/alsa/bin	

3.生效該腳本文件

source /etc/init.d/rcS 

4.查看環(huán)境變量有沒(méi)有alsa庫(kù)

env

5.指定ALSA庫(kù)的配置文件

將/alsa/share/alsa/拷貝到/usr/share/,方法如下:
cp /alsa/share/alsa/ /usr/share/ -r
將/alsa拷貝到/home/gec/,方法如下:
cp /alsa /home/gec/ -rf     ---> 如果/home/gec不存在,則需要?jiǎng)?chuàng)建

6.在開(kāi)發(fā)板創(chuàng)建腳本 vi installAlsaNote.sh ,按i按鍵添加以下內(nèi)容,然后按:wq退出

mkdir /dev/snd
cd /dev/snd

mknod 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.修改腳本權(quán)限

chmod 777 installAlsaNote.sh

8.運(yùn)行腳本,注意每次掉電后需要重新運(yùn)行

./installAlsaNote.sh		

9.錄音

(注意錄音的時(shí)候不需要接耳機(jī),因?yàn)殚_(kāi)發(fā)板自帶有麥克風(fēng),麥克風(fēng)的位置在耳機(jī)口后面)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-798664.html

arecord -d3 -c1 -r16000 -twav -fS16_LE abc.wav
-d, --duration=#        interrupt after # seconds   ---> 錄音的秒數(shù)
-c, --channels=#        channels                    ---> 音軌
-r, --rate=#            sample rate                 ---> 采樣頻率
-t, --file-type TYPE    file type (voc, wav, raw or au)  ---> 封裝的格式
-f, --format=FORMAT     sample format (case insensitive) ---> 量化位數(shù)
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"; //離線語(yǔ)法識(shí)別資源路徑
const char * GRM_BUILD_PATH      = "res/asr/GrmBuilld"; //構(gòu)建離線語(yǔ)法識(shí)別網(wǎng)絡(luò)生成數(shù)據(jù)保存路徑
const char * GRM_FILE            = "call.bnf"; //構(gòu)建離線識(shí)別語(yǔ)法網(wǎng)絡(luò)所用的語(yǔ)法文件
const char * LEX_NAME            = "contact"; //更新離線識(shí)別語(yǔ)法的contact槽(語(yǔ)法文件為此示例中使用的call.bnf)

typedef struct _UserData {
	int     build_fini; //標(biāo)識(shí)語(yǔ)法構(gòu)建是否完成
	int     update_fini; //標(biāo)識(shí)更新詞典是否完成
	int     errcode; //記錄語(yǔ)法構(gòu)建或更新詞典回調(diào)錯(cuò)誤碼
	char    grammar_id[MAX_GRAMMARID_LEN]; //保存語(yǔ)法構(gòu)建返回的語(yǔ)法ID
}UserData;


const char *get_audio_file(void); //選擇進(jìn)行離線語(yǔ)法識(shí)別的語(yǔ)音文件
int build_grammar(UserData *udata); //構(gòu)建離線識(shí)別語(yǔ)法網(wǎng)絡(luò)
int update_lexicon(UserData *udata); //更新離線識(shí)別語(yǔ)法詞典
int run_asr(UserData *udata); //進(jìn)行離線語(yǔ)法識(shí)別

const char* get_audio_file(void)
{
	char key = 0;
	while(key != 27) //按Esc則退出
	{
		printf("請(qǐng)選擇音頻文件:\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("構(gòu)建語(yǔ)法成功! 語(yǔ)法ID:%s\n", info);
		if (NULL != grm_data)
			snprintf(grm_data->grammar_id, MAX_GRAMMARID_LEN - 1, info);
	}
	else
		printf("構(gòu)建語(yǔ)法失??!%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("打開(kāi)\"%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èi)存分配失敗!\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");
	else
		printf("更新詞典失??!%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_socket=0; 
int  new_socket=0;

void  init_network()
{
	//1.初始化網(wǎng)絡(luò)
    tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
	
	//2.綁定服務(wù)器  
	//設(shè)置鏈接的服務(wù)器地址信息 
	struct sockaddr_in  addr;  
	addr.sin_family   = AF_INET; //IPV4 協(xié)議  
        addr.sin_port     = htons(50000); //端口
        addr.sin_addr.s_addr = inet_addr("192.168.24.35"); //服務(wù)器的IP 地址

	//解決端口復(fù)用
	int on=1;
	setsockopt(tcp_socket,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));
	on=1;
	setsockopt(tcp_socket,SOL_SOCKET,SO_REUSEPORT,&on,sizeof(on));


	//2.綁定服務(wù)器地址信息
	int ret=bind(tcp_socket,(struct sockaddr *)&addr,sizeof(addr));
	if(ret < 0)
	{
		perror("");
		return 0;
	}
	else
	{
		printf("綁定成功\n");
	}

	//3.設(shè)置服務(wù)器為監(jiān)聽(tīng)模式 
	ret=listen(tcp_socket,5);
	if(ret < 0)
	{
		perror("");
		return 0;
	}
	else
	{
		printf("設(shè)置監(jiān)聽(tīng)成功\n");
	}

	//4.接收客戶端的鏈接請(qǐng)求 
	printf("等待服務(wù)器鏈接進(jìn)來(lái)\n");
	new_socket=accept(tcp_socket,NULL,NULL);
	if(new_socket < 0)
	{
		perror("");
		return  0;
	}
	else
	{
		printf("鏈接成功?。n");
	}
	
}

//設(shè)計(jì)一個(gè)從網(wǎng)絡(luò)獲取文件接口 
char *get_network_file()
{
	
	//進(jìn)行文件的接收  
	//1.新建文件  
	int  new_fd=open("wav/cmd.pcm",O_RDWR|O_CREAT|O_TRUNC,0777);

	int all_size=0; 

	while(1)
	{
		//讀取網(wǎng)絡(luò)數(shù)據(jù),寫(xiě)入到本地文件中 
		char buf[4096]={0}; 
		int size = read(new_socket,buf,4096);  	
		write(new_fd,buf,size); 

		all_size+= size;  

		if(all_size == 96000)
		{
			printf("接收文件完畢,開(kāi)始識(shí)別\n");
			break;
		}
	}
	
	//關(guān)閉所有打開(kāi)后的文件 
	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;

	//獲取識(shí)別的音頻文件  
	//asr_audiof = get_audio_file();   //主要修改這里,讓他去識(shí)別我們自己的音頻文件
	asr_audiof = get_network_file(); //從網(wǎng)絡(luò)中獲取文件
	  
	f_pcm = fopen(asr_audiof, "rb");
	if (NULL == f_pcm) {
		printf("打開(kāi)\"%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;
		
	//把所有的音頻數(shù)據(jù),讀取到堆空間中 
	fread((void *)pcm_data, pcm_size, 1, f_pcm);
	fclose(f_pcm);
	f_pcm = NULL;

	//離線語(yǔ)法識(shí)別參數(shù)設(shè)置
	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("開(kāi)始識(shí)別...\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;

		//檢測(cè)到音頻結(jié)束
		if (MSP_EP_AFTER_SPEECH == ep_status)
			break;

		usleep(150 * 1000); //模擬人說(shuō)話時(shí)間間隙
	}
	//主動(dòng)點(diǎn)擊音頻結(jié)束
	QISRAudioWrite(session_id, (const void *)NULL, 0, MSP_AUDIO_SAMPLE_LAST, &ep_status, &rec_status);

	free(pcm_data);
	pcm_data = NULL;

	//獲取識(shí)別結(jié)果
	while (MSP_REC_STATUS_COMPLETE != rss_status && MSP_SUCCESS == errcode) {
		rec_rslt = QISRGetResult(session_id, &rss_status, 0, &errcode);
		usleep(150 * 1000);
	}
	printf("\n識(shí)別結(jié)束:\n");
	printf("=============================================================\n");
	if (NULL != rec_rslt)
	{
		printf("%s\n", rec_rslt);
		
		//把結(jié)果回發(fā)給客戶端  
		write(new_socket,rec_rslt,strlen(rec_rslt));
	}
	else
		printf("沒(méi)有識(shí)別結(jié)果!\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"; //登錄參數(shù)
	UserData asr_data; 
	int ret                     = 0 ;
	char c;

    //初始化網(wǎng)絡(luò) 
	init_network();
	
	ret = MSPLogin(NULL, NULL, login_config); //第一個(gè)參數(shù)為用戶名,第二個(gè)參數(shù)為密碼,傳NULL即可,第三個(gè)參數(shù)是登錄參數(shù)
	if (MSP_SUCCESS != ret) {
		printf("登錄失?。?d\n", ret);
		goto exit;
	}

	memset(&asr_data, 0, sizeof(UserData));
	printf("構(gòu)建離線識(shí)別語(yǔ)法網(wǎng)絡(luò)...\n");
	ret = build_grammar(&asr_data);  
	
	//第一次使用某語(yǔ)法進(jìn)行識(shí)別,需要先構(gòu)建語(yǔ)法網(wǎng)絡(luò),獲取語(yǔ)法ID,之后使用此語(yǔ)法進(jìn)行識(shí)別,無(wú)需再次構(gòu)建
	if (MSP_SUCCESS != ret) {
		printf("構(gòu)建語(yǔ)法調(diào)用失?。n");
		goto exit;
	}
	while (1 != asr_data.build_fini)
		usleep(300 * 1000);
	if (MSP_SUCCESS != asr_data.errcode)
		goto exit;
		
	printf("離線識(shí)別語(yǔ)法網(wǎng)絡(luò)構(gòu)建完成,開(kāi)始識(shí)別...\n");	
	
	while(1)  //不斷進(jìn)行識(shí)別 
	{
		ret = run_asr(&asr_data);
		if (MSP_SUCCESS != ret) {
			printf("離線語(yǔ)法識(shí)別出錯(cuò): %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
// 獲取觸摸屏坐標(biāo)
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);
#endif

Makefile

#common makefile header

DIR_INC = ../../include
DIR_BIN = ../../bin
DIR_LIB = ../../libs

TARGET	= 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  -lstdc++

OBJECTS := $(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

到了這里,關(guān)于GEC6818開(kāi)發(fā)板JPG圖像顯示,科大訊飛離線語(yǔ)音識(shí)別包Linux_aitalk_exp1227_1398d7c6運(yùn)行demo程序,開(kāi)發(fā)板實(shí)現(xiàn)錄音的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 科大訊飛 新版AIkit 離線語(yǔ)音聽(tīng)寫(xiě) Java 版本

    科大訊飛 新版AIkit 離線語(yǔ)音聽(tīng)寫(xiě) Java 版本

    前言:科大訊飛的新版離線語(yǔ)音聽(tīng)寫(xiě),由于官網(wǎng)demo是kt語(yǔ)言開(kāi)發(fā)的,咱也看不懂kt,搜遍了全網(wǎng)也沒(méi)看到一個(gè)java版的新版離線語(yǔ)音demo,現(xiàn)記錄下,留給有緣人參考?。。。?!畢竟咱在這上面遇到了不少的坑。如果能留言指正,那就更好了。 實(shí)測(cè)一點(diǎn)問(wèn)題都沒(méi) 一、先把官網(wǎng)

    2024年02月22日
    瀏覽(22)
  • 【人工智能】科大訊飛語(yǔ)音識(shí)別應(yīng)用開(kāi)發(fā)(第三集)

    【人工智能】科大訊飛語(yǔ)音識(shí)別應(yīng)用開(kāi)發(fā)(第三集)

    這次需要對(duì)科大訊飛語(yǔ)音識(shí)別接口進(jìn)行語(yǔ)音識(shí)別應(yīng)用開(kāi)發(fā),前兩次都是通過(guò)WebAPI調(diào)用接口,這次換一下,通過(guò)SDK調(diào)用接口 下面是開(kāi)發(fā)的詳細(xì)記錄過(guò)程(基于前兩次的基礎(chǔ)上) 網(wǎng)址:https://www.xfyun.cn/services/voicedictation 不領(lǐng)服務(wù)量為500且該包免費(fèi)( 貌似是不同應(yīng)用都可以免費(fèi)領(lǐng)

    2024年02月13日
    瀏覽(22)
  • 粵嵌Gec6818---小項(xiàng)目功能實(shí)現(xiàn)(RFID+圖片顯示+音樂(lè)+視頻)

    粵嵌Gec6818---小項(xiàng)目功能實(shí)現(xiàn)(RFID+圖片顯示+音樂(lè)+視頻)

    項(xiàng)目設(shè)計(jì)開(kāi)發(fā)環(huán)境: (1)VMware Workstation Pro軟件 (2)ubuntu12 .04 (能交叉編譯就行) (3)SecureCRT? (4)代碼編譯器(notepad++/Visual Studio Code) 項(xiàng)目功能描述: (1)幻燈片:開(kāi)始進(jìn)行圖片幻燈片顯示,結(jié)束后進(jìn)入RFID刷卡開(kāi)鎖界面。 (2)RFID:刷卡成功和刷卡失敗兩種狀態(tài)(

    2024年02月08日
    瀏覽(118)
  • 粵嵌Gec6818---小項(xiàng)目功能實(shí)現(xiàn)簡(jiǎn)單步驟(RFID+圖片顯示+音樂(lè)+視頻)

    粵嵌Gec6818---小項(xiàng)目功能實(shí)現(xiàn)簡(jiǎn)單步驟(RFID+圖片顯示+音樂(lè)+視頻)

    項(xiàng)目設(shè)計(jì)開(kāi)發(fā)環(huán)境: (1)VMware Workstation Pro軟件 (2)ubuntu12 .04 (能交叉編譯就行) (3)SecureCRT? (4)代碼編譯器(notepad++/Visual Studio Code) 項(xiàng)目功能描述: (1)幻燈片:開(kāi)始進(jìn)行圖片幻燈片顯示,結(jié)束后進(jìn)入RFID刷卡開(kāi)鎖界面。 (2)RFID:刷卡成功和刷卡失敗兩種狀態(tài)(

    2024年02月04日
    瀏覽(31)
  • 基于GEC6818開(kāi)發(fā)板的相冊(cè)

    1.圖片的顯示 2.上滑,下滑,左滑,右滑切換圖片 3.幻燈片播放相冊(cè) 4.顯示圖片的縮略圖 pic.h main.c 獲取滑動(dòng)方向,控制圖片切換 幻燈片播放 保存圖片到鏈表 顯示圖片 觸屏判斷

    2024年02月12日
    瀏覽(23)
  • 粵嵌 GEC-6818 藍(lán)牙智能家庭影音 arm開(kāi)發(fā)記錄

    粵嵌 GEC-6818 藍(lán)牙智能家庭影音 arm開(kāi)發(fā)記錄

    注意:未經(jīng)允許不得轉(zhuǎn)載,引用請(qǐng)注明出處 文件操作:創(chuàng)建、刪除、復(fù)制、移動(dòng) 環(huán)境:VMware15.5,ubantu16.04,串口驅(qū)動(dòng)HI-340,secureCRT 設(shè)置共享文件夾,設(shè)置后ubantu系統(tǒng)和windows系統(tǒng)可以共享使用該文件夾里面的內(nèi)容。 1.gcc編譯:將c文件進(jìn)行編譯 2.交叉編譯:將c文件編譯成arm文

    2024年01月22日
    瀏覽(95)
  • 粵嵌Linux GEC6818開(kāi)發(fā)板實(shí)現(xiàn)電子相冊(cè)

    粵嵌Linux GEC6818開(kāi)發(fā)板實(shí)現(xiàn)電子相冊(cè)

    最近學(xué)校要求使用粵嵌的開(kāi)發(fā)板實(shí)現(xiàn)電子相冊(cè),具體的功能要有點(diǎn)擊特定的區(qū)域?qū)崿F(xiàn)上一張、下一張、自動(dòng)播放圖片、黑屏退出應(yīng)用程序、左右滑動(dòng)切換圖片相關(guān)功能。其中涉及到的知識(shí)點(diǎn)也比較多(文件IO、內(nèi)存映射、觸摸屏、bmp圖片格式、進(jìn)程、線程創(chuàng)建和同步、字符串

    2024年02月04日
    瀏覽(33)
  • vue使用科大訊飛的語(yǔ)音識(shí)別(語(yǔ)音聽(tīng)寫(xiě))

    vue使用科大訊飛的語(yǔ)音識(shí)別(語(yǔ)音聽(tīng)寫(xiě))

    使用的是封裝好的插件: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\\\', // 您申請(qǐng)的語(yǔ)音聽(tīng)寫(xiě)服務(wù)應(yīng)用的ID apiKey: \\\'xxxxxxxxxxxxxxxxxxxxxxxxx\\\', // 您開(kāi)通的語(yǔ)音

    2024年01月19日
    瀏覽(27)
  • 基于粵嵌gec6818開(kāi)發(fā)板嵌入式開(kāi)發(fā)電子相冊(cè),音樂(lè)播放,視頻播放,2048游戲

    基于粵嵌gec6818開(kāi)發(fā)板嵌入式開(kāi)發(fā)電子相冊(cè),音樂(lè)播放,視頻播放,2048游戲

    實(shí)現(xiàn)功能:本系統(tǒng)需要使用粵嵌的GEC-6818開(kāi)發(fā)板設(shè)計(jì)一款?yuàn)蕵?lè)影音系統(tǒng),其中包括圖片顯示(相冊(cè))、音樂(lè)播放、視頻播放,游戲四個(gè)部分,在每個(gè)部分內(nèi)部,具有操控各個(gè)部分的功能觸摸按鍵。本系統(tǒng)還應(yīng)具有藍(lán)牙遠(yuǎn)程操控功能。 具體要求:對(duì)使用者具有良好的可視交互體

    2024年02月13日
    瀏覽(32)
  • 科大訊飛語(yǔ)音SDK下載及測(cè)試

    科大訊飛語(yǔ)音SDK下載及測(cè)試

    一、SDK 下載 進(jìn)入訊飛開(kāi)發(fā)平臺(tái)官網(wǎng)http://www.xfyun.cn/,右上角進(jìn)行注冊(cè)登錄,登錄后點(diǎn)擊進(jìn)入SDK下載。 ?? ????????2.創(chuàng)建新應(yīng)用 ????? ????????3.填入相關(guān)信息 ????????4.創(chuàng)建完后提交后回到SDK下載頁(yè)面,刷新頁(yè)面,應(yīng)用選擇前面創(chuàng)建的應(yīng)用,平臺(tái)選擇Linux,SDK選擇

    2024年02月08日
    瀏覽(42)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包