🌱 2023년에 학교 수업으로 진행했던 내 첫번째 프로젝트 🌱
사용자의 기분에 따라 향을 추천해주는 AI SMART DIFFUSER 'PERDI'
Perdi란 .. 그냥 제가 혼자 생각해냈던 이름으로 향기(Perfume) + 디퓨저 (Diffuser) Per + Di = Perdi를 합쳐서 만든 단어입니다
그럼 노션에만 간단히 정리했던 저의 프로젝트 후기 작성을 시작해보겠습니다 ! !
💻기술 스택 💻
언어 - Python
서버 - Flask, AWS, putty
AI - Chat Gpt, NAVER CLOVA Sentiment
📷 발표회 사진 📷
처음 진행한 프로젝트(3개월 .. )기도 하고, 공부를 하면서 진행해서 간단한 기능 구현을 초반 목표로 하였습니다.
🎉 결과물 🎉
프로젝트 발표가 끝나고 집에서 사용할 수 있도록 구멍이 없는 공병으로 선택했고, 디퓨저만으로는 구분이 불가능해 다르다는 것을 보여주기 위해 향에 맞는 스티커를 제작해 공병 위에 붙여주었다.
⭐️ 프로젝트 후기 ⭐️
개인적인 바램으로는 디퓨저를 추출해 나누어 주기보다는 가습기처럼 방에 두고 AI와 사용자와 대화하며 그 날의 감정에 맞는 디퓨저를 시간을 조절해 디퓨저를 분사해 주는 시스템을 구성하고 싶었으나, 발표회가 목적이기에 나누어 주는 시스템으로 변경하게 되었다.
프로젝트 판넬 제작, 공병에 붙일 스티커 제작 등 프로젝트를 할수록 퍼디에 애정이 생겨 계속 새로운 것을 추가하고 싶고 보완하고 싶은 생각이 들었다. 세척 기능도 추가하고 싶고, 어플에 달력을 추가해 매일매일의 기분에 맞는 아이콘을 삽입해 주고 싶었지만 3개월 동안의 짧은 프로젝트라 추가 기능 구현이 어려워서 아쉬웠다. 😭
프로젝트의 기획부터 구현까지의 과정을 경험하며 정말 많은 것을 배웠다. 중간 중간 발생한 문제들로 인해 방향을 수정하는 과정에서 어려움을 겪기도 했지만, 오류를 해결할 때 느끼는 그 짜릿함도 정말 좋았고 재미있었다. 이러한 과정들 덕분에 개발자로서 많은 성장을 할 수 있었고, 앞으로 더 발전하기 위해 새로운 프로젝트들을 도전해야겠다는 생각이 들었다. 🔥
📱 - > 🙆♀️ ❗️ 동작과정 살펴보기 ❗️
- 우리가 먼저 음성으로 질문을 하고
<처음 질문> 안녕하세요 Perdi 입니다. 오늘 어떤 하루를 보내셨나요 ?
- 사람이 한 말에서 감정 분석을 해야한다
(긍정 / 부정 / 중립) 각각 횟수를 count 한다
- 긍정 pos, 부정 neg, 중립 neu
- 50% 이상인 것을 추출해 9가지 경우를 만든다 !
- chat gpt 호출해 사용자의 응답에 알맞는 대답 생성
- 여기서 문장의 길이 조절 필요,
- 대화의 응답 횟수를 count 해야함 (너무 많이 대화가 오가지 않게 !) 3~4회
- chat gpt의 대답을 어플에 보내준다
- chat gpt의 대답을 음성으로 읽어준다
<1~4> 3회 반복
- 정해둔 횟수가 채워지거나, 대화가 끝나면
긍정/부정/중립 count 한 것을 토대로 디퓨저를 설정해 아두이노에게 넘겨줘야 함
- 아두이노와 어플간 통신을 통해 정해진 디퓨저 향 추출
- Android → Server와의 POST 통신을 통해 사용자의 대답 전달
📖 개발 시작 전 공부했던 기록 📖
API
= 한 프로그램에서 다른 프로그램으로 데이터를 주고받기 위한 방법(=code)
= 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 하는 인터페이스
우리의 경우 → 다른 회사에서 만든 기능을 가져와서 사용한다
언어 선정 → FrameWork의 러닝커브 조사 → FrameWork 선정
- 러닝커브 (= 개발 언어/기술을 배우는데 필요한 시간)
FrameWork = 뼈대 / 기본구조
→ 틀 안에 이미 제어 흐름에 대한 주도성이 내제되어 있다
프레임 워크 위에 개발한 클래스를 등록하고, 프레임워크가 흐름을 주도하는 중에 개발자가 만든 애플리케이션 코드를 사용한다.
프로그래밍 규칙이 정해져 있다
JAVA → Spring
Python → Django, Flask
Django(장고) / 러닝커브가 높음 (어려움)
플라스크에 비해 사용자가 많아서 자료 찾기 수월
but) 플라스크보다 약 10배 많은 코드라인
프레임워크가 복잡함 / 틀에만 잘 맞추면 큰 프로젝트 가능(자유도가 낮음)
속도가 빠르고 유지 보수 편리
Flask(플라스크) / 장고에 비해 러닝커브가 낮아 빠른 학습
상대적으로 사용자가 적다
간단한 Framework를 지향
Framework - 뼈대역할
기본 기능 제공에 다양한 확장 모듈을 이용할 수 있는 구조라 자유도가 높다
API 서버처럼 요청과 응답이 매우 확정적인 경우에는 가벼운 flask 개발이 더 효율적임
우리가 만약 다른 언어를 사용하게 된다면
통신때문에 소켓?이 필요해서 과정 하나가 더 추가 (시간 부족할 것 같아서)
아예 처음부터 언어를 정해야 함
⭐️ 기본적인 틀 10월 중순 전에 완성
→ 그 이후부터 본격적인 기능 추가
JSON = 웹과 컴퓨터 프로그램에서 데이터를 교환하기 위해 데이터 객체를 속성 * 값 쌍 형태로 표현하는 형식
인터페이스 = 상호간의 소통(읽기/쓰기)을 위해 만들어진 접점
API를 찾고 거기 나와 있는 언어 공부
언어 선정 → FrameWork의 러닝커브 조사 → FrameWork 선정
- 러닝커브 (= 개발 언어/기술을 배우는데 필요한 시간)
📋 회의를 준비했던 기록들 📋
처음 기능을 시작할 때
영상 속처럼 그냥 버튼을 클릭해서 말이 나오게 할 것인지?
혹은 빅스비/ 시리처럼 불러서 시작할 것인지
만약에 불러서 시작한다면 → 향기(Perfume) + 디퓨저 (Diffuser) Per + Di = 퍼디
내가 생각한 기능 - 스마트 디퓨저 기능을 참조
향기 조절이 가능하게 1~5단계 OR 타이머 조절 기능
실제 스마트 디퓨저가 있음
- 디퓨저 원액을 안개처럼 분사시켜 기류를 타고 흘러나가는 방식으로 뿌려준다
- 앱을 통해 분사시간 / 분사주기 / 분사 방향 선택 가능
- but) 기분에 맞게 향 선택은 불가능 한 것 같음 / 원하는 오일을 기계에 끼우는 방식이거나 하나의 향
- 아니면 좋았던 향을 선호도 표시할 수 있게 해서
평소에 기분이 아니더라도 그 향이 생각날 때 다시 분사 가능하게
인간의 감정을 10가지로 구분하기
보통의 사람들은 기분이 어떠냐고 물어보면 대부분 긍정적인 대답을 하고 / 발표 날의 분위기도 긍정적일 것 같아서 긍정의 비율이 더 많아야 할 것 같다.
따라서 긍정 6: 부정 4 OR 긍정 7 : 부정 3 으로 나눈다.
위의 표를 참조해 보는 것도 좋을 것 같다.
세척 기능 추가하기 (가능하다면 !!!!!!!)
→ 왜냐하면 공병의 입구가 작아 깔대기로 디퓨저를 공병에 넣어야 하는데, 세척 기능이 없다면 향이 섞일 가능성이 있다
[참고자료]
다들 너무 사랑하고 감사합니다. 전 이 게시글들이 없었다면 프로젝트를 무사히 끝내지 못했을 겁니다 .. 💗 💗 💗 💗 💗 💗
AI
파이썬을 사용하여 OpenAI ChatGPT API를 이용하여 AI 음성 어시스턴트를 구축하는 방법 | ChatGPT 무료
Speech-to-Text: 자동 음성 인식 | Google Cloud
빠른 시작: API를 사용하여 음성을 텍스트로 변환하기 | Cloud Speech-to-Text 문서 | Google Cloud
음성 text 변환
Natural Language API를 사용한 항목 및 감정 분석 | Google Cloud Skills Boost
자연어 처리를 통한 감정 분석
Google Cloud Flatform
Android Server 통신
[Java] Java로 HTTP GET, POST 통신하기
[안드로이드] Retrofit2를 사용한 GET/POST 서버통신 with Kotlin
184. (java/자바) HttpURLConnection 사용해 post body json 방식 데이터 요청 및 응답 값 확인 실시
서버
[Web server] 외부에서 내 웹서버(PC)에 접속하기 (포트포워딩, 방화벽)
'Project' 카테고리의 다른 글
[K-해커톤12] 수상후기 (2) | 2024.11.17 |
---|---|
[kotlin] 기본 문법 정리 (2) | 2024.11.14 |