Qwen3-TTS는 텍스트를 매우 자연스럽고 인간처럼 들리는 음성으로 변환해 주는AI 텍스트-투-스피치(Text-to-Speech, TTS) 모델이라고 한다. 음성 클론, 목소리 디자인, 스트리밍 생성 등을 지원하는 프로덕션-레디(실사용급) TTS 시스템이라고 하는데... 필자가 뭘 잘못했는지는 모르겠지만, Clone의 기능은 아닌거 같다.

사실 필자도 유튜브를 보다가 음성 클론 기능이 있는데, 쉽고 괜찮다고 해서 한번 설치해본거라. 필자가 놓쳐서 그랬을 수도 있지만, GPT와 Gemini를 통해서 진행하다보면 결론은 Clone은 아니라고 한다. 필자가 목소리를 10~20초간 녹음한후 소스로 입력하고 실행해본결과 화자의 호흡이나 말하는 속도나 특색 일부를 넣긴하지만, 기본적으로 사전 제공하는 목소리에 입혀져서 나오는 정도인것 같다.
그럼에도 불구하고, 해보고 싶은 독자가 있을 수도 있고, 필자가 빠뜨린 부분을 찾아서 사용할 수 있도록 기록을 남긴다.
1. Python 설치
1.1. 파이선 다운로드
아래의 사이트에서 파이선을 다운로드한다. 현재 Qwen3-TTS 관ㄹ녀하여 3.10 ~ 3.11 버전을 우선시한다. 테스트 버전에서는 3.11.9를 설치하였다.
https://www.python.org/downloads/windows/
1.2. 설치
별다른 것 없이 설치를 진행한다. 만약 설치버전에서 Add python to PATH 항목이 표시되면 체크하고 그렇지 않다면 그냥 설치를 진행하고, 완료되면 Close를 눌러 설치를 종료한다.
1.3. 테스트
설치가 완료되면 아래와 같이 입력하여 설치된 버전을 확인하자.
python –version
py --version
pip --version
1.4. 가상환경 사용
하나 이상의 python이 설치되어있다면 가상환경으로 특정 버전을 지정하여 사용할 수 있다.
1.4.1. 가상환경 설정
cd c:\tts
mkdir venv_qwen
cd venv_qwen
py -3.11 –m venv venv
1.4.2. 가상환경 활성화
가상환경은 다음과 같이 활성화가 가능하다. 정상적인 경우 프롬프트가 (venv) 가 추가되어 표시 된다.
venv\Scripts\activate
1.5. 관련 패키지 설치
1.5.1. 패키지툴 업데이트
python –m pip install --upgrade pip
1.5.2. 관련 패키지 업데이트
향후 사용할 패키지를 설치한다.
pip install torch transformers accelerate soundfile numpy
1.6. 트러블 슈팅
1.6.1. 버전이 출력되지 않는경우
파이선 버전이 출력되지 않는경우는 패스가 설정되지 않았을 수 있다. 설치때 확인이 안되었기 때문에 다음 두 경로를 시스템 환경 변수(path)를 추가해 주면된다. 파이선이 설치된 경로는 아래와 같고, Scripts 경로에는 pip등이 포함되어있다.
C:\Users\<USER_NAME>AppData\Local\Programs\Python\Python311\
C:\Users\<USER_NAME>AppData\Local\Programs\Python\Python311\Scripts\
1.6.2. 앱스토어가 열리는 경우
만약 정상 설치되어있는 경우라도 선언 위치가 뒷에 있는경우 앱스토어가 먼저 열릴 수 있다. 이경우, 환경 변수에서 두 패스를 Appstore 패스보다 위에 두면된다.
2. Git 설치 (Windows)
2.1. Git 공식 사이트 접속
필자가 설치한 버전은 서치일 기준 2.52를 설치하였다.
https://git-scm.com/download/win

2.2. Select Component
설치때 아래의 항목이 나오면 선택(Recommend)하는 것 제외하고 기본값으로 진행.
[*] Git from the command line and also from 3rd-party software
2.3. 설치 체크
설치 확인을 위해 cmd를 열어서 아래와 같이 git 명령을 실행
git –-version
git version 2.52.0.windows.1
3. QWEN3-TTS 설치
3.1. SOX 설치
아래의 경로에서 SoX(Sound eXchange Files)를 다운로드한다. 다운로드 버전은 14.4.2를 설치한다.
https://sourceforge.net/projects/sox/files/sox/

설치가 완료되면 환경변수 path에 SoX 경로를 추가한다. 해당 소프트웨어는 32비트만 있으므로, 아래의 경로가 기본 설치 경로가 된다.
C:\Program Files (x86)\sox-14-4-2\
설치가 완료되면 sox --version을 입력하여 정상적으로 실행되는지 확인한다.
sox –version
3.2. 설치 디렉터리 만들기
Tts와 관련하여 사용한 디렉터리(폴더)를 생성한다.
cd c:\
mkdir tts
cd tts
3.3. Qwen3-tts 다운로드
아래의 git에서 Qwen3-TTS를 다운로드 한다.
git clone https://github.com/QwenLM/Qwen3-TTS.git
3.4. 관련 패키지 설치
프로젝트 root에서 다음과 같이 명령을 입력한다. 현재 프로젝트 경로는 C:\tts\Qwen3-TTS로 설치가 되었을 것으로 예상되므로 개발을 위해서 아래와 같이 명령을 입력한다.
(venv) c:\tts\Qwen3-TTS>pip3 install –e .
설치가 완료되었다면 qwen_tts 폴더가 생성되고, 내부에 파일이 있음을 확인할 수 있다.
3.5. 예제 실행
이 예제는 CPU 기반으로 기존 예제를 수정하였다. 수정한 원본은 custom_voice이다.
| # coding=utf-8 # Copyright 2026 The Alibaba Qwen team. # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import time import torch import soundfile as sf from qwen_tts import Qwen3TTSModel def main(): device = "cpu" MODEL_PATH = "Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice" tts = Qwen3TTSModel.from_pretrained( MODEL_PATH, device_map="cpu", dtype=torch.float32, attn_implementation="eager", ) # -------- Single (with instruct) -------- #torch.cuda.synchronize() t0 = time.time() wavs, sr = tts.generate_custom_voice( text="동해물과 백두산이 마르고 닳도록 하나님이 보우하사 우리 나라만세.", language="Korean", speaker="Vivian", instruct="부드럽게 말해", ) #torch.cuda.synchronize() t1 = time.time() print(f"[CustomVoice Single] time: {t1 - t0:.3f}s") sf.write("qwen3_tts_test_custom_single.wav", wavs[0], sr) # -------- Batch (some empty instruct) -------- texts = ["其实我真的有发现,我是一个特别善于观察别人情绪的人。", "She said she would be here by noon."] languages = ["Chinese", "English"] speakers = ["Vivian", "Ryan"] instructs = ["", "Very happy."] #torch.cuda.synchronize() t0 = time.time() wavs, sr = tts.generate_custom_voice( text=texts, language=languages, speaker=speakers, instruct=instructs, max_new_tokens=2048, ) #torch.cuda.synchronize() t1 = time.time() print(f"[CustomVoice Batch] time: {t1 - t0:.3f}s") for i, w in enumerate(wavs): sf.write(f"qwen3_tts_test_custom_batch_{i}.wav", w, sr) if __name__ == "__main__": main() |
실행하면 중국어 같은 음성 2개와, 애국가 앞소절 한글로 녹음된 파일이 생성된다.
python test_model_12hz_custom_voice.py




최근댓글