Eli의 여백

바쁜 나날들 사이에서 생각났던 이런저런 것들을 적어봅니다.

IT/새로운 시도

최근에 만든 앱 3종류

Eli♪ 2021. 7. 8. 12:06

알파카 - 여타 스마트스피커보다 자연스러운 대화가 가능한 인공지능

  • 사용 언어: Python
  • 사용 라이브러리: OpenAI GPT-3 Davinci, Google cloud STT, Google 번역
  • 개발도구: Microsoft Visual Studio Code + Github desktop (버전관리 및 github 업로드용)
  • 개발기간: 3일
  • 소스코드: Github gist 링크 (구글이랑 오픈AI의 API키는 json받은 다음 윈도우 시스템 환경변수에 해당이름으로 등록했음)
 

알파카 - GPT-3를 사용한 음성인식

알파카 - GPT-3를 사용한 음성인식. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

 

  • 구현 방법: 구글 STT가 소리를 듣고 한글 텍스트로 바꿈 -> 구글 번역기가 그걸 영어로 바꿈 -> GPT3가 그 영어를 보고 영어로 답함 -> 답한 영어를 구글 번역기로 다시 한글로 바꿈. 

 

  • 사용 예시: temperature를 적당한 수준으로 높이면 매우 자연스러운 텍스트를 얻을 수 있다.

 

  • 단점: 음모론에 찌든 발언을 할 수도 있음.

 

  • 새로 알게 된 사실: 사실 GPT-3는 한국말도 할 줄 아는거였다. (아래의 진한글씨가 내가 입력한 것, 일반 글씨가 GPT-3가 채운 것.) 이런 줄 알았으면 구글번역 안써도 되는거였는데... 나중에 시간나면 해봐야겠음.

추가적으로 참고했던 자료들

[1.1] 카카오미니는 목소리를 어떻게 인식할까

[1.2] AI에게 어떻게 음성을 가르칠까

[1.3] 헤이 카카오를 불러야 하는 이유

[1.4] 신호 유사성 측정하기(MATLAB)

[1.5] 구글 텍스트 번역 API

[1.6] OpenAI API Examples

[1.7] OpenAI Documentation

[1.8] OpenAI Playground

[1.9] OpenAI Engines

 

 

테일즈위버 필드보스 알람 (윈도우용 시스템 트레이 프로그램)

  • 사용 언어: C#
  • 사용 라이브러리: Windows Forms, 앱 아이콘은 Syncfusion 사의 Metro studio 사용.
  • 개발 도구: Microsoft Visual Studio + Github desktop (버전관리 및 github 업로드용)
  • 개발기간: 2일
  • 소스코드: Github 링크
 

ProjectEli/FieldBoss_alarm

테일즈위버 필드보스 알람(트레이). Contribute to ProjectEli/FieldBoss_alarm development by creating an account on GitHub.

github.com

  • 실행파일: 다운로드 링크 (Assets눌러서 exe 받으면 됨)
  • 구현 방법: 5초마다 이벤트를 뱉는 타이머를 하나 돌리면서 옵션에 따라 보스 시간을 체크함. C#의 DateTime랑 TimeSpan을 적절히 활용.
  • 단점: balloon알림이 timeout을 정해놔도 윈도우에서 알아서 3초정도만 유지하고 화면에서 닫아버린다. 그리고 계속 써보니까 윈도우 11 빌드 22000기준으로 알람 쌓인 갯수가 일정이상 넘어가면 알람이 더이상 안뜨는 것 같다. 그외에는 아주 잘됨.
  • 새로 알게 된 사실: VS의 자동완성과 inspector는 다른 IDE와 차원이 다른 편함을 보여줬다. C#이 native라 닷넷 외부참조가 필요 없었고 그 결과로 별도의 dll이나 파일 용량이 커지는 일이 없어서 좋았다. 그리고 ico는 포토샵이나 일러스트레이터로 직접 만들 수가 없다. 인터넷에 굴러다니는 무료 프로그램 써봐도 잘 호환이 안돼서 그냥 syncfusion껄로 썼다.

 

 

테일즈위버 필드보스 알람(안드로이드 앱, 구글플레이 사전등록 및 출시 심사중)

  • 사용 언어: Kotlin (안드로이드 스튜디오에서 작업함)
  • 사용 라이브러리: 안드로이드에서 제공하는 API level 16 라이브러리 (젤리빈 호환)
  • 개발 도구: Google Android Studio + Microsoft Github desktop (버전관리 및 github 업로드용)
  • 개발기간: 3일째
  • 소스코드: Github 링크 (2021.07.08 기준 코드, 미완)
 

ProjectEli/TW_FieldBoss_Alarm

테일즈위버 필드보스 알람 안드로이드 앱. Contribute to ProjectEli/TW_FieldBoss_Alarm development by creating an account on GitHub.

github.com

  • 구현 방법: 윈도우 트레이로 만들었던 것을 코틀린으로 이식함.
  • 단점: 안드로이드 앱의 lifecycle을 고려 안하고 윈도우에서 하던대로 5초짜리 반복 타이머로 구현해서 배터리 최적화가 필요한 상황. 푸시알림이랑 진동으로 바꾸려고 하고, 타이머기반이 아니라 시간기반 알람으로 바꿀예정
  • 새로 알게 된 사실: 최근 일주일 사이에 언어를 3개나 돌려썼지만 코틀린만큼 문법이 적응이 안되는 것은 처음이었다. 그리고 안드로이드는 API level 파편화때문에 코드 안에 API별로 다른 function을 써줘야 할 수도 있다. 그리고 안드로이드 스튜디오 써보니까 VS가 엄청나게 좋은 프로그램이었다는걸 깨달았음. 그리고 코틀린 문서는 인풋 아웃풋만 대충 적어놓고 설명이나 예시도 입문자 입장에서 이해가 잘 안되게 써있어서 너무 힘들었다.
  • 새로 알게 된 사실 2: 구글 플레이스토어 등록하려면 개발자로 등록해야 하고, 25달러 결제해야한다. 그리고 앱 처음올리면 심사받는데 시간이 좀 걸린다. 처음 세팅할때 아이콘이나 스샷같은거 이것저것 넣어줘야해서 귀찮았다. 지인의 말로는 처음 승인받는데만 좀 걸리고 그 이후에 업데이트는 기계가 해서 한두시간정도 있으면 바로 승인 난다고 한다. 승인이 안되어있으면 개발자는 액세스가 가능한데 테스터나 일반인이 링크를 통해 받는 것은 막혀 있다.

추가적으로 참고했던 자료들

[3.1] android app lifecycle

[3.2] 코틀린 string builder (메모리 절약용)

[3.3] Activity와 context 차이

[3.4] getSystemservicies(String) 문제해결법 - Context를 사용가능한 scope에 넣어야 함

[3.5] android notification 만들기

[3.6] android API별 vibrator 예제

[3.7] ringtone, vibrator 사용예제

[3.8] 시간기준으로 알람 구현하는 방법 (구현예정)

[3.9] 백그라운드에서 activity 시작에 대한 제한 사항

[3.10] 플레이스토어 사전고지 문서 제출하기

 

3개 다 구현하고 느낀 점

이전에는 생각만 하고있었는데 막상 개발해보니 개발기간이 며칠 이내로 그다지 길지 않았다. 그냥 지금까지 안해서 안만들어진 거였음. 막상 하면 금방 만들어짐. 다만 API자체는 쓰기 쉽게 되어있는데 언어별로 달라지는 문법때문에 고생을 많이 했다. 특히 안드로이드에서의 코틀린 문법 및 안드로이드 액티비티의 빌트인 함수들은 코틀린 문서를 봐도 설명이 없어서 맨땅에 헤딩하면서 알아내느라 개고생을 했다. 

그리고 GPT3의 경우 파라미터 tweak을 잘 해야 괜찮은 대화를 할 수 있었다. OpenAI example에 있는 파라미터들을 보고 그 근처에서 적당히 바꿨다. 그리고 몰랐는데 GPT3는 우리나라말도 알아들을 수 있는거였다... AI dungeon만 보고 영어만 되는줄알았었는데 우리나라 방식으로 해도 될거같고, 이게 맞다면 언어에 관한 AGI가 될 수도 있을 것 같다. 자동완성 능력을 극한으로 끌어올리면 AGI가 된다니;; 귀신이 곡할 노릇이다.

 

여러 언어로 개발을 해 보면서 (사실 python 빼고는 거의 처음해본 언어) 적응이 좀 힘들기도 했는데 짧은 기간 내에 결과물도 나오고 해당언어로 프로그램 짜는것에 대한 감도 익힐 수 있어서 좋은 경험이었다. 끝.