Qwen3‑TTS‑VD‑Flash 및 Qwen3‑TTS‑VC‑Flash 출시: 제어 가능한 음성 디자인과 빠른 다국어 음성 클로닝

TL;DR

Qwen은 두 가지 새로운 텍스트‑투‑스피치 모델을 발표했습니다—Qwen3‑TTS‑VD‑Flash는 자연어 기반 음성 디자인을, Qwen3‑TTS‑VC‑Flash는 3초 다국어 음성 클로닝을 위해 설계되었으며—두 모델 모두 Qwen API를 통해 이용 가능하고, 경쟁사보다 높은 제어성, 표현력 및 낮은 단어 오류율을 제공합니다.

새로운 모델 개요

Qwen3‑TTS‑VD‑Flash (음성 디자인)

  • Purpose: 사용자가 음향 속성, 페르소나, 감정, 말투를 자연어로 설명함으로써 맞춤형 음성 프로필을 만들 수 있습니다. 별도의 참고 오디오를 제공하거나 고정된 카탈로그에서 선택할 필요가 없습니다.
  • Control Granularity: 음색, 운율, 속도, 피치, 감정 톤에 대한 세밀한 지시를 지원하며, 무엇을 말할지부터 어떻게 말할지까지 전체 파이프라인을 포괄합니다.
  • Benchmark Performance: InstructTTS‑Eval 스위트에서 Qwen3‑TTS‑VD‑Flash는 전체적으로 GPT‑4o‑mini‑tts와 Mimo‑audio‑7b‑instruct를 능가하고, 역할극 시나리오에서는 Gemini‑2.5‑pro‑preview‑tts를 앞섭니다.
  • Expressiveness & Robustness: 의미 단서에 따라 톤과 리듬을 자동으로 조정하는 인간과 유사한 음성을 생성하며, 핀인(pinyin), 특수 기호, 희귀 문자 등 복잡하거나 비표준 텍스트도 안정적으로 파싱합니다.

Qwen3‑TTS‑VC‑Flash (음성 클로닝)

  • Purpose: 약 3 초 만에 화자의 음성을 클론하고, 클론된 음색을 사용해 중국어, 영어, 독일어, 이탈리아어, 포르투갈어, 스페인어, 일본어, 한국어, 프랑스어, 러시아어 등 10개 언어로 음성을 합성할 수 있습니다.
  • Multilingual Accuracy: MiniMax TTS 다국어 테스트 세트에서 평균 단어 오류율(WER)이 가장 낮으며, MiniMax, ElevenLabs, GPT‑4o‑Audio‑Preview를 모두 제치고 모든 지원 언어에서 최고 성능을 기록했습니다.
  • Robust Text Handling: 복잡한 스크립트, 구두점, 실시간 오디오 입력을 품질 저하 없이 처리하며, 화자 정체성을 유지하면서 정확한 내용을 전달합니다.
  • Cross‑Species Experimentation: 염소 소리와 같은 비인간 발성을 클론하는 능력을 보여주어 극한의 음색 유연성을 입증하는 개념 증명을 제공합니다.

핵심 기술 역량

Controllable Generation

  • 사용자는 "중년 남성, 울려 퍼지는 바리톤, 과도하게 활기찬 인포머셜 목소리"와 같은 자연어 프롬프트를 입력하면 해당 설명에 맞는 음성을 얻을 수 있습니다.
  • 역할극 예시에는 악당 마법사, 기업 프로젝트 매니저 등 서로 다른 페르소나가 포함되며, 각각 맞춤형 피치, 속도, 볼륨, 감정 흐름을 적용합니다.

High Expressiveness

  • 두 모델 모두 의미 내용에 따라 운율을 동적으로 조정해, 수동 타이밍 신호 없이도 생동감 있고 상황에 맞는 전달을 구현합니다.
  • 샘플 출력은 슬프고 숨결이 섞인 톤에서 자신감 넘치고 단호한 말투까지, 하나의 발화 안에서 섬세한 감정 변화를 보여줍니다.

Robustness to Complex Input

  • 모델은 핀인 주석, 희귀 문자, 혼합 언어 문장을 정확히 읽어내며, 이해도와 자연스러움을 유지합니다.
  • 실시간 오디오(예: 고대 중국 텍스트, 다국어 대화)도 오류 없이 처리되어 강력한 파싱 파이프라인을 입증합니다.

실용적인 사용법

API를 통한 음성 디자인 (Python 예시)

import requests, base64, os
api_key = os.getenv("DASHSCOPE_API_KEY")
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "model": "qwen-voice-design",
    "input": {
        "action": "create",
        "target_model": "qwen3-tts-vd-realtime-2025-12-16",
        "voice_prompt": "A composed middle‑aged male announcer with a deep, rich, magnetic voice, steady speed, clear articulation.",
        "preview_text": "Dear listeners, welcome to the evening news.",
        "preferred_name": "announcer",
        "language": "en"
    },
    "parameters": {"sample_rate": 24000, "response_format": "wav"}
}
url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"
resp = requests.post(url, headers=headers, json=payload, timeout=60)
if resp.status_code == 200:
    out = resp.json()["output"]
    voice_name = out["voice"]
    audio = base64.b64decode(out["preview_audio"]["data"])
    with open(f"{voice_name}_preview.wav", "wb") as f:
        f.write(audio)
    print(f"Created voice {voice_name}")
else:
    print("Error", resp.status_code, resp.text)

위 스니펫은 맞춤형 음성 프로필을 생성하고 미리보기 WAV 파일을 저장합니다.

API를 통한 음성 클로닝 (Python 예시)

import dashscope, base64, pathlib, os
from dashscope.audio.qwen_tts_realtime import QwenTtsRealtime, QwenTtsRealtimeCallback, AudioFormat

def create_voice(file_path):
    api_key = os.getenv("DASHSCOPE_API_KEY")
    data_uri = "data:audio/mpeg;base64," + base64.b64encode(pathlib.Path(file_path).read_bytes()).decode()
    payload = {
        "model": "qwen-voice-enrollment",
        "input": {
            "action": "create",
            "target_model": "qwen3-tts-vc-realtime-2025-11-27",
            "preferred_name": "guanyu",
            "audio": {"data": data_uri}
        }
    }
    headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
    resp = requests.post("https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization", json=payload, headers=headers)
    return resp.json()["output"]["voice"]

class PrintCallback(QwenTtsRealtimeCallback):
    def on_event(self, response):
        if response.get('type') == 'response.audio.delta':
            audio = base64.b64decode(response['delta'])
            # stream or save audio here

voice = create_voice("voice.mp3")
callback = PrintCallback()
tts = QwenTtsRealtime(model="qwen3-tts-vc-realtime-2025-11-27", callback=callback,
                       url="wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime")
tts.connect()
tts.update_session(voice=voice, response_format=AudioFormat.PCM_24000HZ_MONO_16BIT, mode='server_commit')
for chunk in ["Right? I really like this kind of supermarket,", "especially during the New Year."]:
    tts.append_text(chunk)
    time.sleep(0.1)
tts.finish()
callback.wait_for_finished()

위 예시는 3초 길이의 음성 샘플을 등록한 뒤, 실시간으로 다국어 텍스트를 스트리밍 합성하는 방법을 보여줍니다.

TTS 분야에 미치는 영향

  • 고정 음성 세트에서 동적 음성 디자인으로의 전환: 자연어 사양을 허용함으로써 Qwen3‑TTS‑VD‑Flash는 사전 녹음된 음성 라이브러리의 병목을 없애고, 브랜드 전용 혹은 캐릭터 기반 음성을 빠르게 프로토타이핑할 수 있게 합니다.
  • 생산 속도의 다국어 클로닝: 3초 클로닝 시간과 10개 언어에 걸친 낮은 WER은 Qwen3‑TTS‑VC‑Flash를 현지화 가상 비서, 더빙, 크로스‑랭귀지 콘텐츠 제작 등 글로벌 애플리케이션에 적합하게 만듭니다.
  • 경쟁 우위: GPT‑4o‑mini‑tts, Gemini‑2.5‑pro‑preview‑tts, MiniMax, ElevenLabs 대비 벤치마크 우수성은 Qwen의 아키텍처(대형 멀티모달 트랜스포머에 세밀하게 조정된 음향 제어 헤드)가 새로운 성능 기준을 설정하고 있음을 시사합니다.
  • 연구 기회: Hugging Face와 ModelScope에 공개된 데모와 인용 정보는 제어 가능한 TTS, 다국어 음성 전이, 잡음 입력에 대한 강인성 등을 학술적으로 평가할 수 있는 기반을 제공합니다.

시작하기

  1. API 키 획득: Alibaba Cloud Model Studio(싱가포르 또는 베이징 지역 전용 키)에서 키를 발급받습니다.
  2. 필요 패키지 설치: pip install requests dashscope pyaudio (운영체제별 portaudio 패키지 포함).
  3. 모델 선택: qwen3-tts-vd-realtime-2025-12-16은 음성 디자인, qwen3-tts-vc-realtime-2025-11-27은 클로닝에 사용합니다.
  4. 위 코드 스니펫을 따라 음성 프로필을 만들거나 화자를 클론한 뒤, REST 또는 WebSocket 엔드포인트를 통해 텍스트를 합성합니다.

인용

@misc{qwen3_tts_202512,
  author = {Qwen Team, Alibaba},
  title = {Qwen3-TTS Steps Up: Voice Cloning and Voice Design!},
  year = {2025},
  url = {https://qwen.ai/blog?id=qwen3-tts-vc-voicedesign},
  urldate = {2025-12-23}
}

모든 기술 세부 사항은 2025년 12월 23일자 Qwen 블로그 게시물에서 직접 인용했으며, 추가적인 주장이나 수치는 포함되지 않았습니다.

Sources