쪼물락 비젼 AI

AI TTS

ZEROWIN.TECH 2020. 11. 23. 12:54
728x90

단비챗봇에서 AI TTS 인식명령어를 등록합니다.

cobot.cpp 에  ai_thread를 생성하여 Ai TTS 를 실행합니다.

typedef struct AI_ANIMAL_ARRAY
{
	char eng[32];
	char kor[32];
} AI_ANIMAL_ARRAY;

AI_ANIMAL_ARRAY AI_ANIMAL_Array[] = {
    {"tiger", "호랑이" },
    {"elephant", "코끼리"},
    {"bear", "곰"},
    {"Flamingos","플라밍고"},
    {"Dog", "강아지"},
    {"Seal",  "바다표범"},
    {"Whale", "고래"},
    {"Turtle", "거북이"},
    {"Raccon", "너구리"},
    {"Cat","고양이"},
    {"Lion", "사자"},
    {"Camel", "낙타"},
    {"Cactus", "선인장"},
    {"Fox", "여우"},
    {"Lamb","양"},
    {"Pelican", "펠리칸"},
    {"Zoo", "동물원"},
    {"Kangaroo", "캉가루"},
    {"Owl", "올빼미"},
    {"Code", "코드플레이"}
};

#define AI_ANIMAL_ARRAY_NUM 20

int codebot::ai_thread()
{
    while(!stop_flag_)
    {
		int n;
		
		memset(bufferAI, 0x00, MAXLINE);

        socklen_t len = 0;
        n = recvfrom(sockfdAI, (char *)bufferAI, MAXLINE,
                    MSG_WAITALL, ( struct sockaddr *) &cliaddrAI,
                    &len);
					
		if(0 < n) {
				LOG_INFO("ai_thread %s\n", bufferAI);
			
                char * pChatbot = NULL;
                char * pActionData = NULL;

                char * ptr = strtok(bufferAI, ",");
                if(ptr != NULL) pChatbot = ptr;
                ptr = strtok(NULL, ",");
                if(ptr != NULL) pActionData = ptr;
                
                LOG_INFO("AI_CHAT#3 : %s\n", pChatbot);
                LOG_INFO("AI_ACTD#3 : %s\n", pActionData);
				
				if(strlen(pActionData) == 0) {
						memset(tts_buffer, 0x00, MAX_TTS_BUFFER);
						sprintf(tts_buffer, "AI 서버를 확인해주세요.");
						LOG_INFO("%s", (char *)tts_buffer);
						play_tts_queue_push((char *)tts_buffer);
				}
				else
				if(memcmp(pActionData, "AI_RESPONSE_TTS", 15) == 0)
				{
					unsigned char bFound = false;
					int i = 0;
					for(i = 0; i < AI_ANIMAL_ARRAY_NUM; i++)
					{
						if(memcmp(AI_ANIMAL_Array[i].eng, 
							pChatbot, 
							strlen(pChatbot)) == 0) {
							bFound = true;
							break;
							
						}
					}
					
					if(bFound == true) {
						memset(tts_buffer, 0x00, MAX_TTS_BUFFER);
						sprintf(tts_buffer, "분석한 영상은 %s 입니다.",
							AI_ANIMAL_Array[i].kor);
							LOG_INFO("%s", (char *)tts_buffer);
						play_tts_queue_push((char *)tts_buffer);
						
					}
					else {
						
						memset(tts_buffer, 0x00, MAX_TTS_BUFFER);
						sprintf(tts_buffer, "잘모르겠어요. 적당한 위치로 이동해서 다시 촬영해주세요.");
						LOG_INFO("#1 %s", (char *)tts_buffer);
						play_tts_queue_push((char *)tts_buffer);
					}
				}
				else
				if(strcpy(pActionData, "AI_RESPONSE") == 0)
				{
					LOG_INFO("do AI_RESPONSE");
				}					
				else {
						memset(tts_buffer, 0x00, MAX_TTS_BUFFER);
						sprintf(tts_buffer, "잘모르겠어요. 적당한 위치로 이동해서 다시 촬영해주세요.");
						LOG_INFO("#2 %s", (char *)tts_buffer);
						play_tts_queue_push((char *)tts_buffer);
					
				}

				
		}
		
	}	
	
	return 0;
}

 

미션 수행시 아래와 같은 AI 분석 정보를 디버그 출력합니다.

 

chatbot 폴더의 아래 파일 2개를 열어 라즈베리파이 (카메라) 아이피를 입력하면 됩니다.

'쪼물락 비젼 AI' 카테고리의 다른 글

코드봇에서 라즈베리파이 아이피 변경  (0) 2020.12.09
Maria DB SQL Database  (0) 2020.11.20
codebot camera AI 테스트 시나리오  (0) 2020.11.19
라즈베리파이 제로 W 설치  (0) 2020.11.19
외부 MariaDB 연결  (0) 2020.11.02