Qwen3-TTS-1.7B-Base 경량 배포 가이드: API 및 웹 인터페이스 활용법

Qwen3-TTS-1.7B-Base의 핵심 장점: 소형 모델의 실용적 음성 생성

기존 TTS 솔루션은 고비용 외주, 전문 녹음 필요, 기계적 음질 등으로 인해 사용이 제한적이었습니다. Qwen3-TTS-1.7B-Base는 4.3GB 크기의 경량 모델로 중급 GPU에서 원활하게 작동하며, 3초 내에 참조 음성 업로드 후 즉시 목소리 변환을 지원합니다. 97ms 미만의 지연 시간으로 자연스러운 음성 생성이 가능하며, 10개 언어(중·영·일·한·독·불·러·포·스·이)를 지원합니다. 이 가이드에서는 실제 구현에 집중하여 오늘부터 사용 가능한 방법을 단계별로 안내합니다.

환경 설정: 5분 내 완료

모델 배포에 복잡한 CUDA 컴파일이나 PyTorch 버전 조정이 필요하지 않습니다. 다음 단계를 따라 Ubuntu 22.04 환경을 준비하세요.

2.1 하드웨어 및 시스템 확인

다음 조건을 확인하세요:

  • GPU: NVIDIA RTX 3060 이상 (VRAM ≥ 8GB)
  • OS: Ubuntu 22.04 LTS
  • CUDA: 12.1 버전 설치 (기본 지원 버전)

다음 명령어로 확인:

nvidia-smi
python3 --version  # 3.11.x 버전 확인

2.2 필수 라이브러리 설치

다음 명령어로 라이브러리 설치:

pip install torch==2.3.1+cu121 torchvision==0.18.1+cu121 torchaudio==2.3.1+cu121 --extra-index-url https://download.pytorch.org/whl/cu121
pip install gradio==4.41.0 numpy==1.26.4 librosa==0.10.2 ffmpeg-python==0.2.0
sudo apt install -y ffmpeg

2.3 모델 파일 다운로드

모델 파일을 다음 경로에 저장:

mkdir -p /opt/ai-models/Qwen/
cd /opt/ai-models/Qwen/
wget https://model-repo.example.com/qwen3-tts-1.7b-base.tar.gz
tar -xzf qwen3-tts-1.7b-base.tar.gz
wget https://model-repo.example.com/qwen3-tokenizer.tar.gz
tar -xzf qwen3-tokenizer.tar.gz

서비스 시작: 두 가지 접근 방식

3.1 웹 인터페이스 사용법

다음 명령어로 서비스 시작:

cd /opt/Qwen3-TTS-1.7B-Base
bash run_webui.sh

브라우저에서 http://:7860로 접속 후 다음과 같은 작업을 수행합니다:

  • 참조 음성 업로드 (WAV 16kHz, 3-10초)
  • 참조 텍스트 입력 (음성 대응 텍스트)
  • 목표 텍스트 입력 (생성할 문장)
  • 언어 선택 및 생성 모드 설정

3.2 Python API 통합 예시

다음 코드로 간단한 API 호출 구현:

import httpx
import base64

def generate_voice(ref_path, target_text, lang="zh"):
    with open(ref_path, "rb") as f:
        audio_base64 = base64.b64encode(f.read()).decode()
    
    payload = {
        "audio_data": f"data:audio/wav;base64,{audio_base64}",
        "input_text": target_text,
        "lang": lang,
        "streaming": False
    }
    
    response = httpx.post(
        f"http://{server_ip}:7860/synthesize",
        json=payload,
        timeout=30
    )
    
    if response.status_code == 200:
        with open("output.wav", "wb") as f:
            f.write(base64.b64decode(response.json()["audio"]))
        return True
    return False

# 사용 예시
generate_voice("/home/user/ref.wav", "오늘 날씨가 좋아요.", "zh")

실제 사례: 목소리 클론 생성

4.1 참조 음성 준비

3초 내외의 청결한 음성 샘플(16kHz WAV)을 준비합니다. 다음 조건을 준수하세요:

  • 배경 소음 최소화
  • 단일 채널, PCM 16비트
  • 인간의 발화로 자연스러운 억양

4.2 웹 인터페이스를 통한 생성

  1. 참조 음성 업로드
  2. 참조 텍스트: "이것은 내 목소리 샘플입니다."
  3. 목표 텍스트: "Qwen TTS를 사용해 보세요. 매우 자연스럽습니다."
  4. "생성" 버튼 클릭

4-6초 후 생성된 음성이 재생됩니다.

4.3 배치 처리 예시

다중 사용자에게 맞춤형 메시지를 생성하는 스크립트:

names = ["홍길동", "이순신", "유관순"]
for name in names:
    generate_voice(
        "/opt/ai-models/ref_sample.wav",
        f"안녕하세요, {name}님. Qwen TTS 서비스에 오신 것을 환영합니다.",
        "zh"
    )

주요 문제 해결

5.1 첫 실행 지연

모델 로딩 시 1-2분 소요는 정상입니다. 이후 재시작 시 10-15초 내 완료됩니다.

5.2 오류 발생 시 확인 사항

  • 오디오 형식: ffmpeg -i input.mp3 -ac 1 -ar 16000 -f wav output.wav로 변환
  • 텍스트 길이: 200자 이내 권장 (초과 시 OOM 발생 가능성)
  • GPU 메모리: config.yaml에서 batch_size를 1로 설정

5.3 서비스 안정화

systemd를 사용해 자동 재시작 설정:

[Unit]
Description=Qwen TTS Service

[Service]
ExecStart=/bin/bash -c 'cd /opt/Qwen3-TTS-1.7B-Base && ./run_webui.sh'
Restart=always
RestartSec=15

[Install]
WantedBy=multi-user.target

태그: Qwen3-TTS Python API Gradio voice cloning TTS deployment

8월 7일 06:34에 게시됨