ChatTTS 웹UI
webui.py 시작
python webui.py
python webui.py --server_port=8080
conda create -n chattts python=3.9
conda activate chattts
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
pip install omegaconf vocos transformers vector-quantize-pytorch
영어 |中文简体
ChatTTS는 LLM 보조와 같은 대화 시나리오를 위해 특별히 설계된 텍스트 음성 변환 모델입니다. 영어와 중국어를 모두 지원합니다. 우리 모델은 중국어와 영어로 구성된 100,000시간 이상 학습되었습니다. HuggingFace의 오픈 소스 버전은 SFT 없이 40,000시간 동안 사전 훈련된 모델입니다.
모델 및 로드맵에 대한 공식적인 문의사항은 [email protected]으로 문의해 주세요. 토론을 위해 QQ 그룹: 808364215에 가입할 수 있습니다. Github 문제 추가는 언제나 환영합니다.
모델에 대한 자세한 설명은 Bilibili의 비디오를 참조하십시오.
이 저장소는 학문적 목적으로만 사용됩니다. 교육 및 연구용으로 제작되었으며 상업적 또는 법적 목적으로 사용해서는 안 됩니다. 저자는 정보의 정확성, 완전성 또는 신뢰성을 보장하지 않습니다. 이 저장소에 사용된 정보와 데이터는 학술 및 연구 목적으로만 사용됩니다. 공개적으로 사용 가능한 소스에서 얻은 데이터이며 저자는 데이터에 대한 소유권이나 저작권을 주장하지 않습니다.
ChatTTS는 강력한 텍스트 음성 변환 시스템입니다. 그러나 이 기술을 책임감 있고 윤리적으로 활용하는 것은 매우 중요합니다. ChatTTS의 사용을 제한하기 위해 40,000시간 모델의 학습 중에 소량의 고주파 노이즈를 추가하고 MP3 형식을 사용하여 오디오 품질을 최대한 압축하여 악의적인 행위자가 잠재적으로 범죄에 사용할 수 없도록 했습니다. 목적. 동시에 우리는 내부적으로 탐지 모델을 교육했으며 향후 이를 오픈 소스로 제공할 계획입니다.
import ChatTTS
from IPython . display import Audio
chat = ChatTTS . Chat ()
chat . load_models ()
texts = [ "" ,]
wavs = chat . infer ( texts , use_decoder = True )
Audio ( wavs [ 0 ], rate = 24_000 , autoplay = True )
###################################
# Sample a speaker from Gaussian.
import torch
std , mean = torch . load ( 'ChatTTS/asset/spk_stat.pt' ). chunk ( 2 )
rand_spk = torch . randn ( 768 ) * std + mean
params_infer_code = {
'spk_emb' : rand_spk , # add sampled speaker
'temperature' : .3 , # using custom temperature
'top_P' : 0.7 , # top P decode
'top_K' : 20 , # top K decode
}
###################################
# For sentence level manual control.
# use oral_(0-9), laugh_(0-2), break_(0-7)
# to generate special token in text to synthesize.
params_refine_text = {
'prompt' : '[oral_2][laugh_0][break_6]'
}
wav = chat . infer ( "" , params_refine_text = params_refine_text , params_infer_code = params_infer_code )
###################################
# For word level manual control.
text = 'What is [uv_break]your favorite english food?[laugh][lbreak]'
wav = chat . infer ( text , skip_refine_text = True , params_infer_code = params_infer_code )
inputs_en = """
chat T T S is a text to speech model designed for dialogue applications.
[uv_break]it supports mixed language input [uv_break]and offers multi speaker
capabilities with precise control over prosodic elements [laugh]like like
[uv_break]laughter[laugh], [uv_break]pauses, [uv_break]and intonation.
[uv_break]it delivers natural and expressive speech,[uv_break]so please
[uv_break] use the project responsibly at your own risk.[uv_break]
""" . replace ( ' n ' , '' ) # English is still experimental.
params_refine_text = {
'prompt' : '[oral_2][laugh_0][break_4]'
}
audio_array_cn = chat . infer ( inputs_cn , params_refine_text = params_refine_text )
audio_array_en = chat . infer ( inputs_en , params_refine_text = params_refine_text )
30초 분량의 오디오 클립에는 최소 4GB의 GPU 메모리가 필요합니다. 4090D GPU의 경우 초당 약 7개의 의미 토큰에 해당하는 오디오를 생성할 수 있습니다. 실시간 계수(RTF)는 약 0.65입니다.
이는 일반적으로 자기회귀 모델(bark 및 valle의 경우)에서 발생하는 문제입니다. 일반적으로 피하기가 어렵습니다. 적절한 결과를 찾기 위해 여러 샘플을 시험해 볼 수 있습니다.
현재 출시된 모델에서 유일한 토큰 수준 제어 단위는 [laugh], [uv_break] 및 [lbreak]입니다. 향후 버전에서는 추가 감정 제어 기능을 갖춘 모델을 오픈 소스로 제공할 수 있습니다.