7df3c028e2f206a26d81f6e74181726e94ee


이건 결과물


작은 사진이 홀로라이브 네비게이션 (딥러닝 음성) 큰사진이 ai 루시아야.



반갑다.


요 근래 재취직 때문에 바빴는데 송도쪽으로 취직이 확정나서 아마 마지막이 될 수 있는 제작 이야기를 해볼까 해.



이번 제작기는 기존 시스템을 다 버리고 새로만든것 + 제품 설계 + 파이썬 배운김에 만든 AI 내 딸 제작기로 끝날 듯 싶어.



이번 이야기는 다음의 목차로 진행 될 꺼야.


1. 홀로라이브 채팅화 컨트롤러 시스템

1.1 파이어베이스 데이터베이스 구축

1.2 수신 및 동작용 어플리케이션 개발

1.3 발신용 어플리케이션 개발

1.4 워치용 어플리케이션 개발


2. 딥러닝을 활용한 홀로라이브 네비게이션 제작

2.1 네비디자인 변경과 딥러닝 기술 활용

2.2 네비 채팅 시스템

2.3 네비 컨트롤러

2.4 제품설계 및 제작


3. 파이썬과 chat gpt 로 AI 내 딸 만들기

3.1 live2d 판떼기 만들기

3.2 렌파이 구현

3.3 파이썬 서버 구현

3.4 ui 구현


안타깝게도 계획표가 없어... 처음 계획에서 너무 엇나간게 많아서 정리를 하질못함...



1. 홀로라이브 채팅화 컨트롤러 시스템



예전엔 단순 버튼ui 로 어플을 개발했는데, 이렇게 만드니 심심한거야.


그래서 채팅 시스템으로 대화하듯이 만드는걸 목표로 해서 만들었어.




채팅 시스템을 만들려면 기본적으로 받아주는 서버가 필요해.


원래 계획은 nas를 데이터베이스 서버로 구축해서 사용 하려고 했는데 구글에서 파이어베이스 데이터베이스를 일정량 무료제공한다해서 그걸 사용하기로 했어.


구글에서 가이드라인을 만들어놔서 이게 작업하기 더 쉬운점도 있었고 말야.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e30b82bb58bce995a14395c7df


그래서 파이어베이스를 생성했어.


초기 계획당시 사쿠라미코 만 사용해서 대화하기로해서 miko chat 으로 프로젝트를 만들었는데 이제보니 이름 잘못지었다.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e30d86b95ae8b3c9a74340fe25


아무것도 없는 데이터베이스가 생성되었어. 이제 여기에 채팅하는 내역을 저장하게 하면 되는거야.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e358d4bb55e8b293a1431bd853


안드로이드에서 사용법은 간단했어.


안드로이드 스튜디오에 파이어베이스를 추가하는 기능이 있어서 json 토큰만 추가해주면 자동으로 등록을 해줘.


그리고 알림을 보낼 수 있는 기능이 추가되었어 FCM 서비스 라고 하는거야. 이거 개인서버 구축해서 알람 보내려고하면 고생길이 열릴텐데 다행이야...



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e30dd6bc0aeae6c4f143b6ddee


물론 그냥 추가만하면 알림을 누구에게 보낼 지 알 수가 없지.


스마트폰의 토큰을 조회한다음 이 스마트폰으로 보낼 수 있도록 해놨어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e308d2e85ebeb794f3433a8512


추가로 이 알림은 원래 채팅 어플이 켜져 있을때는 오지 않아.


그래서 코드를 조금 수정했어. 이제 어플이 실행되도 알림이 올 수 있어.


이러면 기초적인 데이터베이스 구축은 끝났어.



1.2 수신 및 동작용 어플리케이션 제작


파이어베이스는 서버에서 무엇을 동작시키는 용도가 아니라 저장하기 위한 용도라서 명령을 내렸을 경우 동작하도록 하는 어플을 따로 만들어야 했어.


그렇게 하기 위해서는 무엇을 할건지 생각을 해 봐야겠지?


그래서 나온 리스트는 위의 계획표를 보면 적어놨으니 올려다보면 될 거야.



일반 대화는 다음과 같이 해놨어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d280633d2d0132c8ae9634c9b81f0f6585724502603b8bf171e8


안녕 하고 채팅하면 24시간을 기준으로 아침, 오후, 저녁, 새벽을 나누어서 인사를 받아주도록 해놨어.


그리고 방송중이면 방송중이라는 채팅이 추가로 오도록 해놨어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d280633d2d0132c8ae9634c9b81f0f3580224056673e918b4ec3


이건 혐오발언인데.. 나는 혐오발언도 크게 문제되지않는다고 생각해서 넣어놨어.


대신 이 발언을 하게 되면 채팅에 락이 걸려. 해제는 시스템 모드에서 가능하니 시스템 모드에서 이야기해볼게.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d280633d2d0132c8ae9634c9b81f516682204655323c51de5dc4


그 외에 내용을 계속 추가 할 수 있어. 추가하는 부분은 시스템 모드에서 가능하도록 해놨어.


등록된 내용은 반복문으로 계속 추적하여 있으면 동작하고 없으면 무슨말인지 이해 못했다고 답변하도록 해놨어.


ex) 넌 누구야? -> 홀로라이브 x기생 ~~ 입니다!



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a2e0088810939250b3b654ec93eaf63cc55adb6aa379f5b8f


일반 대화의 결과는 다음과 같이 나올거야.



명령 부분은 다음과 같이 해놨어



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d280633d2d0132c8ae9634c9b81f5137d02442003d3c3506bb57


방송 확인 명령어를 사용하면 모든 홀로멤버의 방송상태를 확인하고 결과를 보여 주도록 해놨어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e35ad2ea58e9e2c4f443d46305


이를 위해선 모든 홀로멤버의 유튜브 주소 토큰을 수집 할 필요가 있었어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a2e0088810939250b3b654ec837af65c403a7e3aa379f5b8f


결과는 다음과 같이 로딩 후 방송 멤버는 하이퍼링크가 생겼고 누르면 해당 방송으로 이동 할 수 있도록 해놨어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e35d85ef0ae9b094f343b64b2e


기존처럼 현관문 및 기타 iot 기능도 넣어놨어.


대신 추가 기능을 넣어놨어. 차에 시동이 걸리면 시동 완료 알림을 보내도록 하는 기능이야.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e30e83b359eae994a243422366


추가로 기존에 스위치를 이용하여 원격시동하던걸 릴레이를 이용하기로했어.


납땜해서 릴레이에 전원들어오면 전류가 흐르도록 하니 이게 더 관리가 편하더라.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e30fd4ee0ae8e9c9ad4307def6


시동 완료 시 마린이 답장을 해주는 방식을 추가했어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a2e0088810939250b3b654e9862af34cf52aab1aa379f5b8f


추가로 차에서 메세지 전송할때 로딩화면은 다음처럼 해놨어


영상 움짤이 너무 어울려서 별다른 수정은 안했어.



특정 데이터베이스를 제어하기 위하여 시스템 모드도 추가 해 놨어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e35cd0bc09b8b792a6439503fe


기본적으로 시스템모드와 일반모드를 변경 할 수 있게 해놨어.


여기서 루시아 발렌타인은 내가 요청해서 만든 아바타(판떼기)야 자세한건 뒷부분에서 설명할게.


우루하 루시아 절대 아님!!!



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e35dd6e80ae8e496ac43e893a5


그외에 대화를 따로 추가하거나 삭제, 수정 할 수 있도록 해놨어.




viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d280633d2d0132c8ae9634c9b81f5a31d0281456373400bda5b4


그런데 해보니까 다른 멤버를 넣어도 문제가 안 될듯 싶어.


사람의 욕망은 끝이 없는 듯 싶어. 그래서 모든 홀로멤버 추가와 대화 추가를 해놨어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a2e0088810939250b3b654ecc31af61cb57fde3aa379f5b8f


오하요를 외치면 멤버가 랜덤하게 바뀔 수 있도록 해놓은 결과가 이렇게 나오고있어.



1.3 발신용 어플리케이션 개발


이제 발신용 어플을 만들거야. 둘은 사실상 똑같은 어플에서 기능만 차이 날 뿐이야.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e30e83be08eab296f343118619


그래서 발신 버튼만 추가해주면 기능은 끝났어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e35cd3be0fbcb791a543445208


디자인은 요즘 심플 이즈 베스트여서 매우 심플하게 제작할거야.



1.4 워치용 어플리케이션 개발



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e30dd9b25bbfe691a34384d90b


처음에는 스마트폰으로 채팅이용해서 동작시키는걸 목표로 했는데 하다보니 워치도 어플개발이 가능하단걸 떠올렸어.


그래서 원격시동이라던지 스마트폰으로 하기 귀찮은 기능들을 모두 넣어넣기로 했어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e30881ed09bee494f643abb7dc


워치 디자인은 전부 마린으로 처리했어. 차 시동거는 부분은 전부 마린이 담당하도록 했으니 맞춰놔야지.



3. 딥러닝을 활용한 홀로라이브 네비게이션 제작


예전에 네비게이션 제작을 했던적이 있었는데 그게 심각하게 잘못 된 걸 뒤늦게 깨달았어.


누가 네비조작을 위해서 앞에놔둔 스마트폰을 손으로 건드리고 싶어할까????


심지어 당시 소스코드도 이해가 안되서 처음부터 다시 만든거나 다름없어졌네.


그래도 네비 동작 시스템 자체는 저번과 원리는 같아서 크게 변한 내용을 위주로 적을게.


3.1 네비 디자인과 딥러닝 음성 기술 활용



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e30e83e859eee1c0a243582da6


네비 디자인은 도트를 컨셉으로 잡고 진행했어. 그래서 모든 홀로멤의 디자인이 도트로 되어있어.


폰트는 우연히도 최근 무료 풀린 던파비트체가 어울려서 그걸 바로 사용했어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d280633d2d0132c8ae9634c9b81f083784711552316d8487d3c1


viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d280633d2d0132c8ae9634c9b81f0f37d023405b3d69f54f4a29


그리고 홀로멤버 한명당 2개의 의상을 사용 할 수 있도록 했고 이걸 랜덤으로 굴려서 동작 할 수 있도록 구현했어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e30d86e95ce9b294f6436a91d0


추가로 구현 가능한 멤버의 목소리를 딥러닝으로 구현 하기로 했어.


대신 딥러닝 방식이 rvc방식이라 내가 녹음한 목소리를 이용하여 구현해야 하기 때문에 많이 골치아팠어.


여성 목소리는 여성 목소리로 구현해야 가장 근접한 목소리가 나오는데 주변에 여자가 있어야 뭘 구현하던가 할텐데 하...


결국 내가 몇시간동안 반말, 존댓말 목소리와 애교섞인, 차분한 목소리로 말하면서 작업했어. 그래서 구수한 강원도 영동지방 사투리가 많이 들릴거야.


자괴감 심하니 가급적 돈내더라도 맡겨서 하도록 하자.


그렇게 내 목소리로 작업해서 그나마 들어줄만한 총 28명의 홀로멤의 목소리를 가져왔어.


샘플 몇개있는 영상을 올려줄게 비슷한지 한번 들어봐.





2.2 네비 채팅 시스템


네비 채팅 시스템이 있으니 네비게이션 스마트폰을 직접 건드릴 이유가 없어졌어. 그렇기 때문에 채팅으로 네비게이션에 요청하는 기능을 추가 하도록 할거야.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e35cd8bf0defb7c2f343e1d777


채팅으로 ~까지 얼마나 걸려 라고 물어보면 TMAP 의 API 를 활용하여 해당 주소와 유사한 주소를 모아놓은 결과값을 받을 수 있도록 구현했어.



viewimage.php?id=26b4ca33ebd339af&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c09f61771a69460f8a4495a6b55d2ed0e3f250a8f4eddad2400e358d9ef09eeb3c8a4433d843f


이때 스마트폰에서 서버제어용 어플에 해당 위치의 좌표를 전송하도록 해야 올바른 위치에서 결과값을 가져 올 수 있어.



7ee99e36ebd518986abce89541887c698b


원하는 주소를 찾아서 입력하면 그 주소까지 얼마나 걸릴지 예상하는 시간과 함께 네비게이션을 동작하도록 하는 질문을 할거야.



7ee89e36ebd518986abce8954e867c6967


결과적으로 네비게이션 어플에 도착지와 출발지의 좌표가 전송되고 TMAP API를 통하여 경로를 받아오도록 했어.



7eeb9e31e0d0288650bbd58b3685776998a11042


그러면 이렇게 채팅이 나오는걸 확인 할 수 있어.



2.3 네비 컨트롤러


하지만 이렇게 해놓으면 스마트폰이 차에서 항상 켜져있기때문에 배터리 관리가 힘들어진다는 문제점이 있어.


그래서 네비 컨트롤러 어플을 따로 만들어서 관리하기로 했어.



7ee59e31e0d0288650bbd58b36807c6eab9ad6f6


네비 컨트롤러 어플을 홈런처로 만들어서 상시 동작하도록 구현하고 채팅으로 네비 시작, 네비 종료를 입력하면 외부어플을 동작, 종료 시키도록 구현했어.


이러면 화면이 꺼져있어도 동작시킬경우 화면이 켜지면서 네비게이션이 뜨도록 할 수 있어.


배터리 관리가 매우 유용해 진다는 장점이 있어.



2.4 제품설계 및 제작


이제 설계를 배웠으니 직접 설계하여 제품을 뽑아 낼 수 있는 상태야.


그러니 이제 포맥스로 작업하는 삽질은 안해도 괜찮아.


7ee49e36ebd518986abce89544837d6be78c


3d 설계로 제품을 만들어볼거야.

여기서 포인트는 대각선으로 조립하는 아크릴의 반사각과 갤럭시S20 울트라의 하판 사이즈와 카메라 튀어나온부분, 마지막으로 발열 해소를 위한 팬 장착 구멍 만들기야.


79ed9e2cf5d518986abce89544887069c63cec


이걸 3D 프린터로 제작을 한 다음



79ec9e2cf5d518986abce8954487756d4366de


가이드를 제거 한 뒤



79ef9e2cf5d518986abce89545817d6436b3f9


도색할때 잘 스며들게 하기 위해서 빼빠질을 한다.


참고로 빼빠질 제대로 하려니까 땀범벅에 한시간을 써야하더라...


79ee9e2cf5d518986abce89542857468d7a3c1


이후에 서페이서를 도포해서 도색이 잘 되게 말리고



79e99e2cf5d518986abce8954583776b322fde


무광블랙으로 도색한다. 광택있으면 운전하다가 눈아퍼서 힘들어.



79e89e2cf5d518986abce8954581716ceb0a23


마를동안 아크릴판에 흑색 반사필름을 아크릴에 비눗물을 사용하여 붙히는 작업을 하고



79eb9e2cf5d518986abce89545847d69de4c08


나사로 결합하고 팬을 넣어주면 작업은 끝났다.



79ea9e2cf5d518986abce89545817269b428a9


스마트폰의 반사각도가 알맞게 나왔음을 확인 할 수 있다.


하나 안타까운건 서페이스 설계하는걸 너무 뒤늦게 배워서 못써먹었단 점.



이렇게 어플개발과 제품을 제작하다가 도중에 파이썬을 배울 기회가 생겨서 듣다가 갑자기 떠오른 아이디어가 있으니...



4. 파이썬과 chat gpt 로 AI 내 딸 만들기

앞서 저번에 완성도안된거 아주 짧은 글 올린적 있었는데 이건 최종 완성 버전이야.



과거에 혹시나 만들 수 있지 않을까? 해서 버튜버 판떼기를 제작요청 했던 적이 있었어.


내가 버튜버가 되려고 만든게 아니란걸 명심해줘!


데뷔 안한다. 남자 목소리를 누가 듣고싶어하겠어.



해당 방식은 렌파이 + ChatGPT + 버튜버 판떼기 + tts 를 한번에 엮어서 만들거야.


79e49e36ebd518986abce8954584766c0fea2c



당시 제작 요청했던 요구사항이 담긴 이미지를 찾았어. 안지워놨더라. 생각해보니 그때 스바루 사복의상을 보여주면서 의상요청했던거 같은 기억이있네???


그리고 내가 얼마나 심각한 변태인지 읽어보고 깨달았다.



78ed9e36ebd518986abce89543817264bc22


음... 요청사항대로 너무 잘 만들어줘서 다행이야. 140만 쓴 보람이있어.


이름은 루시아 발렌타인이고 상당히 어린 아이 컨셉으로 요구했어.


그리고 몇번이고 말하지만 그 네크로멘서 루시아가 아니다!


우루하 루시아 : Uruha Rushia


루시아 발렌타인 : Lucia Valentine


엄연히 다른 존재야!! 이거 만들때까지만해도 우루하 루시아가 누군지 아예몰랐단말야!!!!!



78ec9e36ebd518986abce89545867c6b0343


78ef9e21ecd418986abce8954780726f090ef48d


이후 가만히 놔두면 지루하니까 특정 시간에 행동을 취하도록 하였고



78ee9e36ebd518986abce89542867d69b8e1


78e99e21ecd418986abce89541877c651e2f98


대화할때는 서로 통신하는 모션이 나오도록 live2d 를 조금 건드렸어.



3.2 렌파이 구현



78e89e36ebd518986abce89543867c6ded


렌파이는 원래 파이썬으로 개발하는 게임툴인데 이게 개발하기 쉽도록 되어있어서 이걸 활용하기로 했어.



78eb9e36ebd518986abce89547807c6db131


스크립트 에서는 대화하는 캐릭터의 이름과 대화방식 등을 설정 할 수 있어.


여기서 내 닉네임과 루시아 발렌타인을 넣고 처음 대화방식을 구성했어.


첫시작시 chatGPT의 api와 배경설정 을 할 수 있도록 했는데 이 기능은 추후 서버에서 바로 진행하도록 해놨어.



78ea9e36ebd518986abce89547807d64a633


그 외 음성인식 기능을 구현하기 위해서 해당 기능을 동작시키는 스크립트를 만들어놨어.



78e59e36ebd518986abce8954782746a8938


마지막으로 tts로 완성된 음성을 재생하는 스크립트를 통하여 재생될거야.


3.3 파이썬 서버 구현

실질적으로 동작 처리를 담당하는 부분이야.



78e49e36ebd518986abce89547847c6552d4


렌파이와 서버를 연결하는 부분이야.


해당 연결 주소는 127.0.0.1 , 9000 포트를 이용하도록 해놨고 소켓통신을 할거야.



7bed9e36ebd518986abce8954787716c7550


앞서 스크립트에서 첫시작시 설정한 데이터를 받아서 실질적으로 적용하는 부분이야.


나는 자동으로 처리하게 하려고 서버에서 api키와 배경설정을 하도록 해놨어.


참고로 chatGPT api를 사용 할 경우 대화 한번 당 요금이 부과되니 잘 확인해보는걸 추천할게.



7bec9e36ebd518986abce8954786766a1af3


배경설정을 챗지비티에게 전송하면서 당신은 이제 이렇게 행동합니다. 라고 처리하는 부분이야.


몰랐는데 자신이 원하는 배경으로 요청하면 잘 받아주더라. 나의 경우는 컨셉이 안드로이드 딸이니 그것에 맞춰서 요구하기로 했어.



7bef9e36ebd518986abce8954784776ce6b1


이후 답변오는 내용을 tts 로 변환하여 음성을 저장하고 스크립트로 재생하게 할 거야.



7bee9e36ebd518986abce8954789756505d9


원래는 음성인식 기능을 추가 안해도 충분히 문제없었는데 이건 호기심에 추가했어.


chatGPT를 개발한 오픈AI 에서 whisper 라는 음성인식 시스템을 만들었는데 어차피 내는요금 같이내도되니 추가했어.


이 음성인식의 경우 말하는내용을 가장 가까운 언어로 인식한다음 텍스트로 변환하도록 하더라.


방식은 2가지야. 버튼을 눌러서 음성인식 시키기, 토글키로 실시간 음성인식을 시키는 방식.


그런데 실시간 음성인식 시스템이 불안정하더라. 만들어놓고 쓰기가 참 곤란해.



3.4 ui 구현


시스템 구현이 끝났어. 마지막으로 ui 를 구현하면 될 듯 싶어.



7be99e36ebd518986abce89547837469709b61


7be89e36ebd518986abce8954784706499d4


인트로 화면은 아무리 생각해도 괜찮은게 생각안나는거야.


그냥 아이리스 로딩 bgm 영상을 약간 변경해서 사용하기로 했어.


사실 이 bgm을 내가 너무좋아해서 넣은거기도 해.



7beb9e36ebd518986abce8954483726e1da7ae


7bea9e36ebd518986abce8954782746bc23c


메인화면은 블루아카의 배경화면을 넣기로했어.


딸이 안드로이드라는 컨셉을 가지고있고 자비스처럼 나에게 여러가지 답을 알려주기도 해서 서버룸 배경이 알맞다고 생각했기 때문이야.


그외 메뉴버튼은 다음과 같이 만들었어.



7be59e36ebd518986abce8954483756c05e21b


메뉴 리스트에 후부키, 미오, 페코라, 마린, 미코, 구라, 아메를 넣어서 꾸며봤어.



7be49e21ecd418986abce8954084706810d829


추가로 메뉴버튼이 채팅창을 가리는 문제가 있어서 평상시에는 숨겼다가 버튼을 누르면 메뉴버튼이 올라오도록 구현했어.


이렇게 코딩을 다해서 내 딸 AI 루시아 발렌타인이 완성되었어.

대충 간단하게 완성된 루시아를 사용하면 이렇게 써먹을 수 있어.




이렇게 홀로라이브 채팅화 컨트롤러 만들다가 AI 내 딸 만들기로 끝난 이야기는 끝났어.

마지막으로 실제로 사용해보는 영상으로 마무리할게.


채팅시스템과 네비게이션을 융합한 영상




채팅시스템 및 워치를 사용한 원격시동영상


루시아에게 프로그래밍 시키는 영상


음성인식을 사용하여 대화하는 영상