로컬 LLM과 챗봇을 위한 텍스트 음성 변환
Ollama, llama.cpp, LM Studio로 내 컴퓨터에서 돌리는 언어 모델은 대화를 비공개로 지켜 줍니다. 그 답변을 클라우드 음성 서비스로 보내면 그 의미가 사라집니다. 목소리도 로컬이어야 합니다.
SuperClonica 엔진은 일반 CPU나 NVIDIA 그래픽 카드에서 오프라인으로 텍스트를 읽고, Python에서도, 작은 HTTP 서비스로도 쓸 수 있습니다. 이 가이드에서는 로컬 모델과 연결하는 법, 지연을 짧게 유지하는 법, 소리 내어 들었을 때 자연스러운 답변을 만드는 법을 소개합니다.
로컬 음성 비서의 구성
각 부분은 따로 바꿀 수 있습니다. 다른 모델, 다른 목소리, 같은 흐름.
- 선택 사항인 음성 인식(예: 로컬 Whisper 모델)이 내 목소리를 텍스트로 바꿉니다.
- 언어 모델이 로컬에서 답변을 씁니다.
- SuperClonica가 답변을 음성으로 바꿉니다. 역시 로컬입니다.
- 아무것도 컴퓨터 밖으로 나가지 않고, 글자 수나 요청당 요금도 없습니다.
목소리를 무료로 들어 보기
코드를 쓰기 전에 목소리 페이지에서 30~100자의 전형적인 답변을 입력하고, 언어를 고른 뒤 생성 버튼을 누르세요. 몇 초 만에 비서가 어떻게 들릴지 알 수 있습니다. 계정은 필요 없습니다.
문장이 준비되는 대로 말하기
우리 측정에서 짧은 문장의 중앙값은 RTX 5070 Ti에서 0.12초, 4스레드 데스크톱 Ryzen에서 0.43초였습니다.
- 엔진을 한 번 설치: python -m pip install superclonica-cpu, NVIDIA 그래픽 카드라면 superclonica-gpu-cuda.
- 엔진은 한 번 만들어 재사용하세요: tts = Superclonica(). 로딩은 몇 초, 그 뒤 문장마다 1초도 안 걸립니다.
- 모델이 답변을 스트리밍하는 동안 문장 끝에서 잘라 한 문장씩 읽히세요: audio, rate = tts.synthesize(sentence, voice="F1", lang="ko").
- 다음 문장을 만드는 동안 sounddevice 같은 오디오 라이브러리로 재생하거나, 파일로 저장해 재생하세요.
소리 내어 들어도 좋은 답변
모델은 Markdown으로 답하길 좋아합니다. 별표, 목록, 표, 코드는 소리 내어 읽으면 어색합니다. 시스템 프롬프트에서 목록이나 서식 없이 짧고 쉬운 구어체 문장으로 답하라고 요청하고, 남은 것은 읽히기 전에 지우세요. 엔진은 대부분의 언어에서 숫자를 단어로 읽고, 이모지와 알 수 없는 기호는 알아서 정리합니다. Python이 아닌 프로그램이라면 엔진을 로컬 HTTP 서비스로 실행하고(docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu) 문장마다 POST /synthesize로 보내세요. OpenAI 호환 음성 엔드포인트를 기대하는 도구에는 작은 어댑터가 필요합니다.
목소리 고르기
모델 기본 목소리 10종 M1~M5, F1~F5는 무료 엔진에 포함되어 추가 파일이 필요 없습니다. 개성 있는 개인 비서라면 자비스 목소리 같은 카탈로그 목소리를 고르고, 먼저 전형적인 답변으로 들어 보세요. 내 목소리나 동의한 가족의 목소리라면 NVIDIA 그래픽 카드가 있는 컴퓨터에서 스튜디오로 학습하거나 거래소에서 주문하세요. 모든 목소리가 Supertonic 3의 31개 언어를 말합니다. 중국어는 아직 지원하지 않습니다.