기반 모델은 요즘 핫한 ISFTB와 VITS이다. 빠르면서도 퀄리티가 좋은 걸로 유명하다. ljspeech 데이터셋을 쓰는데, 직접해보았을 때 둘 다 무조건 음소별 패딩을 주고 하는 게 낫다.음소를 붙여서 그냥 Training 하게 되면 발음을 구분을 못한다.방법은 아래 글 참고.2024.12.17 - [데이터 사이언스 & 로봇/ML 및 DL 관련 이론] - [TTS] 한국어의 음소와 음절 패딩 IPA 발음으로도 실험해보았으나, espeak-ng의 변환은 12년 전에서 변하지 않았으므로 정말 낮은 퀄리티였다(외국인 발음).다국어를 위해 IPA로 하려면 개인적인 preprocessing이 필요하다. 거의 없어서 직접 만드는 것도 고려해야한다. 직접 부딪히고 파인튜닝해보면서 깨달은 점은 다음과 같다.1. 1..

멀티 에이전트에는 감독형 에이전트와 협력형 에이전트가 있다.이번 프로젝트를 진행할 때, 필자의 팀은 감독형 에이전트를 사용해 심리 상담 에이전트를 구축했었다. 왜 이렇게 구축했냐면, 심리 상담 시스템은 협력해서 결론을 내는 게 아니라 각 전문가가 대답하고, 해당 대답을 모아서 적절한 걸 반환하는 게 맞다고 생각했기 때문이다.실제로 이렇게 구축하면 supervisor가 각 agent에게 대답을 전부 물어보고, 각 대답이 모여 충분히 되었다고 판단되었을 때 어떤 Agent의 대답이 적절한지 판단하고 반환된다. 처음에 LangChain의 ReACT 에이전트로 구성했었는데, 다음과 같은 문제가 발생했다.Invalid or incomplete responseParsing LLM output produced bot..

지난번 글에서는 프론트엔드적으로 기능에 대해서 회고를 했다. 이번 시간에는 백엔드 기능에서 중점적으로 뒀던 것과, 어떻게 했는지를 보자. 1. LangChain을 이용한 멀티 Agent우선, LangChain의 Agent 시스템을 쓸 수 있도록 했다.ChatOpenAI를 사용했고, Chain으로 만들었다. 그리고 RunnableWithMessageHistory를 사용했는데, 사실 이렇게 전체 대화를 넣는 것 보다 요약해서 추가하고, 전의 대화 맥락을 추가해서 알아듣게 하는 게 훨씬 좋다. 이 부분은 다른 팀원이 바꿨는데 추가할 시간이 없어서 다시 못 바꿨다. LangGraph로 멀티 Agent를 만들었을 때, 이 부분 때문에 무한 루프가 걸리는 일도 있었지만 Structured Output으로 Input..

KDT 대회 본선이 끝났다.결과는 우수상. 200팀 참가 중 최종 4위가 된 셈이다.솔직히 말하자면 고생은 많이 했지만, 이 정도로도 굉장히 만족할만한 결과였다. 무엇보다 우리 위에 대상 1팀, 최우수상 2팀으로 총 3팀 밖에 없었는데, 그분들도 굉장히 공을 많이 들인게 보여서 솔직히 그럴만 했다고 생각한다. 그러나 반성을 안 할 수는 없는 법이다.프로젝트를 하면서 백엔드 뿐만 아니라, UI / UX에 대해서 프론트쪽에서 기능을 추가한 것들이 매우 많았다.특히나 React를 다루면서 Html과는 다른 State에 대한 개념을 잘 다루게 되었고, 그러면서 동적 웹페이지에 대한 개념이 많이 늘어난 것 같다. 그래서 오늘은 프로젝트를 하며 추가했던 기능들 중 프론트엔드 편에 대해 정리해보고, 다음에는 백엔드 ..
WebSocket을 연결하면 단일 요청에 비해 연결 횟수가 줄어들어서 http에 비해서 빨라진다는 건 대부분 알고 있을 것이다.그러면 얼마나 빨라지는지 우리 서비스에서 실험해봤다. TTS edge function과 React를 웹소켓으로 연결했을 경우Response from backend: {response: '안녕하세요! 만나서 정말 반가워요. 요즘 어떻게 지내고 계신가요?'}useSpeechRecognition.js:126 tts2: 3860.410888671875 msuseSpeechRecognition.js:163 Response from backend: {response: '알겠어요! 그럼 계속 이야기 나눠볼까요? 요즘 어떤 일들이 있으셨나요?'}useSpeechRecognition.js:126..
대회 프로젝트를 진행하는데, 프론트엔드를 할 사람이 없었다.이번 프로젝트는 한명이 빠지는 바람에 할 사람이 없다. 심지어 JS 자체를 모르는 분도 있다.게다가 제 6회 KDT 해커톤 본선까지 진출해버리면서 구현 작업을 더 디테일하게 해야했다.따라서 필자가 AI 백엔드 기본 구현, 작업 검수에 이어서 프론트엔드까지 전부 구현하고 맡게 되었다. 그러면서 1년 전 기억을 되살려내면서 꾸역꾸역 만들어낸 React 코드이다. 그 중에서도 오늘은 새롭게 알게 된 페이지 전환 애니메이션에 대해서 알아보려고 한다.일단 간단하게 설명하자면 React-trainsition-group이라는 걸 쓴다. 개인적으로 framer는 뚝뚝 끊기는 느낌이 있어서 이게 더 낫다고 판단하여 쓰게 되었다. 코드는 아래와 같다.import ..