본문 바로가기
반응형

TTS14

Unity에서 Python TTS 서버 호출하기: FastAPI로 Qwen3-TTS 서버 만들기 Unity에서 Python TTS 서버 호출하기: FastAPI로 Qwen3-TTS 서버 만들기 Unity 프로젝트에서 TTS 기능을 붙이려면 몇 가지 방법이 있다.Unity 안에서 직접 모델을 돌릴 수도 있지만, Python 기반 TTS 모델은 보통 의존성도 많고 GPU 환경도 필요해서 Unity에 바로 넣기 부담스럽다.그래서 이번에는 구조를 이렇게 잡았다.Unity ↓ HTTP 요청Python FastAPI 서버 ↓Qwen3-TTS ↓WAV 파일 생성 Unity는 텍스트만 서버로 보내고, 실제 TTS 처리는 Python 서버가 담당하는 방식이다.처음부터 TTS 모델까지 한 번에 붙이면 문제가 생겼을 때 원인을 찾기 어렵다.그래서 먼저 HTTP 서버가 잘 뜨는지 확인하고, 그다음 Unity와 통신이 되.. 2026. 4. 24.
Qwen3-TTS 최종 선택은 무엇이었나 Qwen3-TTS 최종 선택은 무엇이었나faster-qwen3-tts까지 비교한 뒤, 결국 1.7B를 남겼다여기까지 테스트를 진행하면서 흐름은 꽤 분명해졌다.처음에는 Qwen3-TTS 1.7B CustomVoice를 Windows 로컬에 설치하고, Web UI를 띄우고, 한국어 음성을 생성하는 것까지 확인했다. 그 과정만 놓고 보면 “실행은 된다”는 결론은 이미 나와 있었다. 문제는 그 다음이었다. 품질은 나쁘지 않았지만 속도가 걸렸다. Web UI 기준으로는 약 15초 정도가 걸렸고, Python 직접 호출 기준으로 다시 재도 1.7B가 약 10초, 0.6B는 오히려 약 13초 수준이었다. 즉 병목은 Web UI가 아니라 원본 qwen3 경로 자체였다. 그래서 마지막 질문은 결국 하나로 좁혀졌다. 이 .. 2026. 4. 2.
Qwen3-TTS는 실시간으로 붙일 수 있을까 Qwen3-TTS는 실시간으로 붙일 수 있을까1.7B와 0.6B를 직접 돌려보고 속도를 다시 봤다3편까지 오면 Qwen3-TTS가 최소한 Windows 로컬에서 실행되고, 한국어 음성도 실제로 생성된다는 건 확인된다.문제는 그다음이다. 설치가 되고, UI가 뜨고, 소리가 나온다고 해서 바로 실사용 가능한 건 아니다. 특히 내가 이걸 본 이유가 단순 데모 감상이 아니라 연동 가능성, 그중에서도 Unity 같은 쪽과의 연결 가능성을 보려는 데 있었다면, 결국 제일 먼저 걸리는 건 속도다. 실제로 문서 흐름도 여기서 완전히 바뀐다. 3편까지는 “된다”를 확인하는 과정이었다면, 4편부터는 “이 속도로는 괜찮은가”를 따져보기 시작한다. 처음 Web UI에서 한국어를 생성했을 때 체감 시간은 약 15초였다.그 정도.. 2026. 4. 2.
Qwen3-TTS 한국어 음성은 실제로 어땠나 Qwen3-TTS 한국어 음성은 실제로 어땠나Web UI에서 직접 돌려본 첫 테스트 기록2편에서 flash_attention_2 문제를 우회하고 나서야 Qwen3-TTS Web UI를 정상적으로 띄울 수 있었다.거기까지 갔으면 다음은 당연히 하나다. 그래서 실제로 소리가 어떻게 나오느냐. 설치가 되는 것과 실행이 되는 것은 다르고, 실행이 되는 것과 “쓸 만하다”는 또 다르다. 그래서 이번에는 브라우저에 뜬 Web UI에서 직접 한국어 문장을 넣고, 화자를 바꿔 보고, 실제 생성 결과를 확인해봤다. 문서 흐름상 이 단계부터 비로소 “설치 성공”이 아니라 로컬 테스트 성공이라고 말할 수 있는 구간으로 들어간다. 이번 글은 그 첫 테스트 기록이다.Web UI가 어떻게 보였는지, 어떤 문장으로 시험했는지, 한.. 2026. 4. 2.
Qwen3-TTS Web UI가 바로 안 뜬 이유 Qwen3-TTS Web UI가 바로 안 뜬 이유 Windows에서 flash_attention_2 문제를 직접 잡아본 기록1편에서 설치 자체는 생각보다 깔끔하게 끝났다.conda 환경을 만들고, PyTorch CUDA를 잡고, qwen-tts도 설치했고, Hugging Face 로그인 준비까지 끝냈다. 여기까지만 보면 이제 qwen-tts-demo만 실행하면 바로 브라우저가 뜰 것 같았다. 실제로 나도 그렇게 생각했다. 그런데 문제는 그 다음부터였다. 설치는 끝났는데 실행이 안 됐다. 정확히 말하면, Web UI를 띄우는 단계에서 로그는 나오는데 정상적으로 이어지지 않았고, 처음 봤을 때는 원인이 딱 보이지 않았다. 이번 글은 그 과정을 정리한 기록이다.어떤 명령으로 실행했고, 어떤 경고가 떴고, 왜 .. 2026. 4. 2.
Windows에서 Qwen3-TTS 로컬 설치 시작 Windows에서 Qwen3-TTS 로컬 설치 시작RTX 4080 환경에서 Qwen3-TTS를 직접 올려봤다이번에 Qwen3-TTS를 로컬에서 직접 올려본 이유는 단순했다.이제는 모델 소개만 보는 단계가 아니라, 실제로 내 환경에서 돌아가는지, 설치부터 실행까지 어느 정도 손이 가는지, 나중에 Unity 같은 쪽에 붙일 수 있을 정도로 관리 가능한지를 봐야 했다. 그래서 제일 먼저 한 일은 성능 비교가 아니라, 아주 기본적인 것부터 밟는 거였다. Windows에서 설치가 되느냐, CUDA가 제대로 잡히느냐, 모델 다운로드까지 무리 없이 이어지느냐. 이걸 먼저 확인하고 싶었다.이번 테스트 환경은 아래와 같다.OS: Windows셸: Anaconda PromptGPU: NVIDIA GeForce RTX 40.. 2026. 4. 2.
Coqui XTTS-v2 오류 해결 후기 - speaker_wav 적용부터 Python API 최종 성공까지 Coqui XTTS-v2 오류 해결 후기 - speaker_wav 적용부터 Python API 최종 성공까지1편에서는 Windows 로컬 환경에서 Coqui TTS를 설치하고, XTTS-v2를 실행하는 단계까지 정리했습니다.이번 2편에서는 실제로 막혔던 문제들을 어떻게 해결했는지, 그리고 최종적으로 어떤 코드로 한국어 음성 합성에 성공했는지 정리해보겠습니다.두 번째 문제PyTorch 2.6 계열에서 XTTS 체크포인트 로딩이 깨지는 문제transformers 버전을 맞춘 뒤 다시 XTTS-v2를 실행했더니, 이번에는 다른 오류가 발생했습니다.로그를 보면 핵심은 아래 메시지였습니다.pickle.UnpicklingError: Weights only load failed... 이 문제는 PyTorch 2.6에.. 2026. 3. 31.
Coqui XTTS-v2 설치 후기 - Windows 로컬 환경에서 한국어 TTS 테스트 시작하기 Coqui XTTS-v2 설치 후기 - Windows 로컬 환경에서 한국어 TTS 테스트 시작하기MeloTTS로 한국어 음성 합성과 재학습을 계속 시도했지만, 실제 결과물 품질이 기대에 못 미쳤습니다.학습 시간은 길었고, 데이터셋과 하이퍼파라미터를 계속 손봐야 했으며, 그렇게 시간을 들여도 결과가 안정적으로 좋아진다는 보장이 없었습니다.그래서 방향을 바꿨습니다.직접 재학습하는 방식 대신, 이미 공개된 멀티링구얼 모델을 가져와서 설치 → 실행 → 오류 확인 → 한국어 테스트까지 빠르게 검증하는 쪽으로 접근했습니다.이번에 테스트한 모델은 Coqui TTS의 XTTS-v2 입니다.[이미지: Hugging Face의 XTTS-v2 모델 페이지 화면][이미지: Coqui TTS 공식 문서 메인 화면]XTTS-v2.. 2026. 3. 31.
Unity에서 OpenAI API로 AI 도슨트 만들기 Unity에서 OpenAI API로 AI 도슨트 만들기STT → LLM → TTS 흐름을 하나로 연결한 기록앞선 글들에서는 Unity에서 OpenAI API를 이용해 텍스트를 생성하고, 이미지를 만들고, TTS와 STT를 각각 붙여보는 과정을 정리했다. 여기까지는 기능을 하나씩 검증하는 단계였다면, 이번에는 그 기능들을 연결해서 실제로 대화하는 구조를 만들어본 기록을 정리해보려고 한다. 문서 기준 마지막 파트도 바로 이 지점을 다룬다. 즉, 사용자가 마이크에 질문하고, 시스템이 그 말을 이해한 뒤, 적절한 답을 생성해서 다시 음성으로 들려주는 전체 흐름이다. 이번 글의 핵심은 “OpenAI API 기능이 많다”가 아니라, 그 기능들을 어떻게 순서대로 이어서 하나의 사용자 경험으로 만들었는가에 있다. 실제.. 2026. 3. 26.
데이터를 따로 구해서 다시 시도 데이터를 따로 구해서 다시 시도한 기록직접 모은 데이터로 학습을 계속 돌려보면서 느낀 건 명확했다.생각보다 시간이 많이 들고, 결과는 쉽게 좋아지지 않았고, 데이터 수집 자체도 꽤 손이 많이 갔다. 한 번 잘라서 넣고 끝나는 게 아니라, 음성을 정리하고, 텍스트를 맞추고, metadata를 다시 만들고, 전처리를 돌리고, 학습을 돌린 뒤에 결과를 들어보는 과정이 계속 반복됐다. 그래서 어느 시점부터는 “이걸 계속 직접 모으는 게 맞나?”라는 생각이 들기 시작했다. 자연스럽게 다음 선택지는 공개 데이터셋이었다.처음에는 남자 목소리냐 여자 목소리냐가 중요한 게 아니라고 생각했다.지금 단계에서 가장 필요한 건 특정 화자의 완벽한 복제가 아니라, 학습이 되는 구조 자체를 확인하는 것에 더 가까웠기 때문이다. 그.. 2026. 3. 26.
MeloTTS 학습을 돌리면서 겪은 문제들 MeloTTS 학습을 돌리면서 겪은 문제들설치만 끝나면 금방 될 줄 알았다.재학습 전에 필요한 것들도 나름대로 정리해뒀고, metadata나 캐시, 전처리 같은 것도 한 번씩 점검했다. 그래서 이제부터는 진짜 학습만 잘 돌리면 되는 줄 알았다. 그런데 실제로 들어가 보니, 여기서부터가 더 오래 걸렸다. 설치는 한 번 뚫으면 끝이지만, 학습은 한 번 돌린다고 끝나지 않았다. 오히려 같은 걸 계속 반복해서 돌려보고, 결과를 듣고, 설정을 바꾸고, 다시 돌리는 과정이 계속 이어졌다. 처음에는 “학습만 시키면 점점 좋아지겠지” 정도로 생각했다.그런데 딥러닝 쪽은 늘 그렇듯, 결국 하이퍼파라미터 문제가 바로 앞에 있었다. epoch를 얼마나 줘야 하는지, batch size를 얼마나 올릴 수 있는지, learni.. 2026. 3. 26.
MeloTTS 재학습 전에 먼저 정리한 것들 MeloTTS 재학습 전에 먼저 정리한 것들MeloTTS를 Windows에서 일단 로컬로 돌리는 데까지는 성공했다.한국어 음성도 나왔고, 설치는 귀찮았지만 최소한 “이 프로젝트로 더 가볼 수는 있겠다”는 판단은 섰다. 문제는 그다음이었다. 그냥 제공되는 모델을 실행해보는 것과, 내 데이터를 넣어서 다시 학습시키는 건 완전히 다른 문제였다. 여기서부터는 설치 삽질과는 다른 종류의 귀찮음이 시작됐다. 처음에는 단순하게 생각했다.데이터를 넣고 학습 스크립트를 돌리면 되겠지 싶었다. 그런데 실제로 해보니 그렇게 간단하지 않았다. 데이터를 조금만 수정해도 이전 캐시가 남아서 에러가 나고, wav 파일 하나를 지웠는데 metadata 쪽에 흔적이 남아 있으면 바로 꼬였다. 학습 로그를 보면 손실값보다 먼저 봐야 할.. 2026. 3. 26.
반응형