뒤로
최이현
최이현 ·

AI로 FIFA 해설을 대체해서 경기마다 새로운 해설 듣는 서비스?

생성형 인공지능은 아직 현실에서 부자연스럽다.

chatgpt, dall e, whisper 모두 자연스러움과는 거리가 있다.

약간 기계 냄새 난다고 해야 하나?

그래도 Ai는 우리가 여태껏 풀지 못했던 수많은 문제들을 풀 도구로써 활용될 거라고 생각한다.

GdI9KWAY57x5MeOeHnk33GGJRXzbmvNfaaCHUCHzfabbXZsewmV4pZAYHPufKS5ToTGpeeoGoD-xq8sfvCwlrg.webp

학창 시절에 축구와 피파를 정말 많이 좋아했었다.

피파를 하면 짜증나는 점이 한두가지가 아니었다.

일단, 매 경기마다 같은 해설이 나오고 경기 상황과 전혀 맞지 않는 내용이었기 때문이다.

게임 내 실시간 데이터를 읽고, 그걸 오디오로 전환할 수 있는 생성형 인공지능이 있다면 어떨까? 요런 생각을 꿈꿔오고 있었다.

그러면 게임의 완성도는 크게 올라갈 것이다.

피파를 오래 해본 사람들이라면, 100이면 100 공감할 내용이다.

알다시피 피파 시리즈는 1년 마다 새로 나오는데, 거의 바뀌지 않는 점이 아쉽다.

2qzs8jvhkaa41.jpg

그래서 엉성하게 만들어봤다.

4년 전 인공지능 붐이 불기 이전에 나온 인도 프로그래머가 만든 프로젝트를 보고

나도 할 수 있겠다 싶었다.

터무니없는 코딩 실력과, 수려한 GPT 프롬프트 엔지니어링 기술을 사용했다.

일단 개요는 다음과 같다.

축구 게임 설치하기

축구 게임 실시간 데이터 가져오기

실시간 데이터를 텍스트로 전환하기

텍스트를 읽는 GPT-3.5 API를 활용해서 축구 해설 생성하기

만들어진 축구 해설 텍스트를 TTS (text to speech)를 활용해서 오디오로 만들기

일단 피파나 위닝 같은 큰 상업용 축구 게임은 게임 내부 데이터에 접근하는 데 한계가 있는 걸로 알고 있다.(시도해본 적은 없음)

그래서 오픈 소스 축구 시뮬레이터를 사용해야 했고,

마침 구글에서 4년 전 쯤에 만든 Google Research Football을 사용했다.

Google Research Football은 구글에서 만든 강화 학습 환경이다.

스크린샷 2023-09-18 211330.png

이런 거 하라고 만들어진 거는 아니지만, 게임 내부 데이터에 전부 접근이 가능하고,

일단 오픈 소스에다 내부 데이터가 접근 가능한 유일한 3D 환경이었을 거다.

그래서 Google Research Football을 다운받는데도 좀 힘이 들었는데,

4년 전에 나와서 업데이트가 안된 부분들을 이전 버전으로 되돌리는 작업을 거쳤다.

그렇게 Google Research Football을 설치했고, 깃허브의 내용을 참고해서

게임 내부 데이터에 접근할 수 있었다.

코너킥이나, 옐로카드, 골, 스로인, 골킥 등등

그렇게 게임 내부 데이터를 텍스트로 전환하는 코드를 GPT의 도움으로 만들 수 있었다.

(진짜 chatGPT 나온 이후로 오류를 구글이나 커뮤니티에 검색할 필요가 없어졌다.)

이제, OpenAI의 API를 가져와서 게임 내부에서 나온 실시간 텍스트 데이터를 프롬프트로써 제공하면 약간 이런 형식이 된다.

GPT의 역할 = 전문 축구 해설 위원

프롬프트 = "골이 들어갔습니다"

그러면 GPT가 프롬프트를 읽고, 이런 해설 텍스트를 생성한다.

"기가 막힌 득점이네요! 원정 팀의 사기를 꺾는 멋진 골입니다."


(물론 이 정도로 완벽한 해설이 지금은 나오지 않고, 영어이다.)

축구 해설을 학습한 GPT 모델이 필요했고, 처음에는 축구 경기의 해설을 다운받아서

자막만 추출하는 코드를 만들어서 사용했다.

하지만, 내용이 정제되지 않고, 뒤죽박죽 엉터리여서 결국 방황 끝에 GPT가 만들어준 해설 텍스트를 사용하기로 했다.
약 10000자 이내.

스크린샷 2023-09-18 212639.png

그리고 만들어진 텍스트 파일을 토큰화해서 gpt가 읽기 쉽도록 만든 후

학습을 시켰다 (파인튜닝)

스크린샷 2023-09-18 212723.png

openai가 gpt3.5 파인튜닝을 출시한게 7월 28일 즈음 이었을 테니 따끈따끈한 신상 인 셈이다.

그렇게 OpenAI의 API를 가져오고, google research fooball의 실시간 데이터를

GPT에게 프롬프트로 제공했다.

나온 텍스트를 TTS (Text_to_speech)를 사용해서 오디오로 변환했다.

중간중간 생략한 과정도 있긴 한데, 엔지니어가 아닌 입장에서 일주일 만에 만들어낸 MVP 치고는 그래도 엉성했다.

결과물 코드 (주요 파일) =

스크린샷 2023-09-18 212056.png스크린샷 2023-09-18 211809.png

MVP를 만들고 나니 문제점들을 발견했는데, 이는 다음과 같다.

  1. GPT가 해설을 만들고 나면 상황이 이미 늦어있다.(골이 터지고, 10초 뒤에 해설 나옴)

    개선점 = openAI가 아니라 Llama-2를 사용할 것.(API와 로컬의 속도 차이가 크다)

  2. 서비스가 너무 엉성하고 풍부한 내용의 실제 해설과 거리가 있다.

    개선점 = Google Research Football의 실시간 데이터 뿐만 아니라, 로직 구현, 일반 해설 코드도 추가할 것.

    (MVP에서는 프리킥, 골킥, 골, 파울, 옐로 카드 등 실시간 데이터만 해설을 생성했지만, 이후에는 선수의 위치를 파악해서 역습 상황을 분석하고, 장거리 드리블을 인식 하는 등의 로직을 추가할 수 있다, 그리고 외부 데이터를 학습하면, 클럽이나 선수에 대한 자세한 정보를 해설에서 내보낼 수 있다.)

  3. 환각 문제

    GPT-3.5의 환각 문제는 심각하다. (골이 들어갔는데, 멋진 세이브라는 해설이 나오기도 한다;;)

  4. GRF의 태생적인 불완전성

    (GRF이 원래 무거운 상황을 견디기 어려운 거 같다. 너무 많이 튕기고, 너무 많이 끊긴다. 상업용이 아니라 연구 목적이라 최적화가 아예 되어 있지 않다.)

  5. 뻣뻣한 인조인간 목소리 TTS 버려야 한다.

    이건 tensorflow 같은 거로 새로운 모델을 만들어야 한다.

    Google Cloud Console API 사용해서 진짜 세상 간단한 TTS 모델을 만들어본적이 있는데, 별 차이 없이 딱딱했다.

    구글이나, 마이크로소프트나, 오픈AI도 해결 못한 거로 봐서는 텍스트만 가지고

    감정 실린 목소리를 만드는 데는 아직 무리가 있다. (데이터 부족)

    [약간 상용화의 최종 보스 느낌이다.] 다만 축구 해설용 모델을 따로 만드는 게 더 적은 리소스를 이용해 더 좋은 결과를 만드는 좋은 기회가 될 수도 있다고 생각한다.

이 정도가 있겠다.

매 경기 같은 해설이 나오는 피파를 하면서 고통받았던 사람이 있다면, 한번 같이 문제를 해결해보고 싶다.

또, 조언을 주시거나, 피드백을 해주실 고마운 분이 계시다면 아래 메일을 보내주시면 감사하겠습니답 ;)

choidlgus629@gmail.com

일단 내가 MVP로 증명한 것은 실시간 데이터를 가져와서 축구 해설이 생성 가능하다는 것이다.

10년 뒤에는 너무나 당연한 듯이 세상에 나와있겠지만, 그 문제를 해결하는 시간을 앞당길 수 있거나, 내가 그 문제를 해결하는 데 도움이 될 수 있으면 좋겠다.

혹시나 위에 설명한 내용이 약간 괴짜 너드 같다고 느껴질 수도 있겠지만,

내가 만든 코드는 혼돈과 엉터리 그 자체이고 절대 어려운 일이 아니며,

나는 절대 이런 모습이 아니다.

1-44.jpg

MVP를 만들어보고, chatgpt같은 Ai가 적어도 내 레벨에서는 코딩이라는 것을 재정의 해버렸다고 느꼈다.

그리고 생각보다 나온 결과물이 부끄럽게 느껴지는 것도 사실이다.

위에서 나온 문제점들이 짬뽕되어 혼돈 그 자체가 되었으니까.

그래도 MVP를 1주일 안에 만들었고, 그 사이에서 정말 많은 것을 배울 수 있었으며,

내가 풀고 싶은 문제이고, 내가 가장 열정적인 고객이 될 서비스를 만든다는 게 맘에 들었다.

MVP를 만들기 전에 상상하던 거 =

3105.webp

일주일 뒤 =

The-Simpsons-Hans-Moleman-Kiss-600x338.jpg

8

댓글

로그인 후 댓글을 남길 수 있습니다.

최현종
최현종

무지무지 재밌는 프로젝트네요!!

HyunWoo Joo
HyunWoo Joo

안녕하세요 최이현님 팔로우를 보고 따라들어왔어요. 이런 말을 해서 죄송한데 날 것으로 기분을 말해드리고 싶어요. ‘이런 미친..’ 피파를 즐겨하는 유저로서 너무 재밌네욯ㅎㅎㅎㅎ 한달이나 지났는데 현재 어떤 상황인가요?

최이현
최이현

지금은 경기에서 나오는 실시간 데이터를 그래프로 변환해서 모델을 학습시키고 있어요:)

HyunWoo Joo
HyunWoo Joo

아이디에이션을 같이 해봐요! 실시간 해설을 보고 '실시간' 부분에서 문제를 해결 중이신걸로 글에서 봤어요. 혹시 경기를 하면서 '같은 해설'을 듣는 상황이 개선안이라면 새로운 안으로서 옆에 스트리밍 채팅 처럼 ai가 여러 의견을 뱉어내는 건 어떨까요? 본질적으로 게임을 하면서 '여러 피드백'을 실시간으로 받는다에 포커스를 맞춰봤어요

최이현
최이현

색다른 아이디어인거 같아요;) Ai가 유저에게 의견을 낸다면, 텍스트로 출력해서 오디오로 변환할 수도 있겠네요. 유저랑 ai 모델이랑 상호작용을 할 수도 있고요

HyunWoo Joo
HyunWoo Joo

특히나 조금 느리게 출력된다고 하더라도 수많은 사람이 훈수두는 게임 스트리머 기분을 느낀다는게 재밌지 않나요? ㅋㅋㅋㅋㅋ

최이현
최이현

ㅋㅋㅋㅋㅋㅋ 재밌겠네요