일상 대화를 위한 생성 음성 모델.
영어 |简体中文| 일본어 | 러시아어 | 스페인어 | 프랑세즈 | 한국어
메모
이 저장소에는 알고리즘 인프라와 몇 가지 간단한 예가 포함되어 있습니다.
팁
확장된 최종 사용자 제품의 경우 커뮤니티에서 관리하는 인덱스 저장소 Awesome-ChatTTS를 참조하세요.
ChatTTS는 LLM 보조와 같은 대화 시나리오를 위해 특별히 설계된 텍스트 음성 변환 모델입니다.
영어
중국인
출시 예정...
자세한 설명은 Bilibili의 동영상 을 참조하세요.
대화형 TTS : ChatTTS는 대화 기반 작업에 최적화되어 자연스럽고 표현력이 풍부한 음성 합성이 가능합니다. 여러 스피커를 지원하여 대화형 대화를 촉진합니다.
세밀한 제어 : 모델은 웃음, 일시정지, 감탄사 등 세밀한 운율 특징을 예측하고 제어할 수 있습니다.
더 나은 운율 : ChatTTS는 운율 측면에서 대부분의 오픈 소스 TTS 모델을 능가합니다. 우리는 추가 연구 및 개발을 지원하기 위해 사전 훈련된 모델을 제공합니다.
중요한
출시된 모델은 학술 목적으로만 사용됩니다.
메인 모델은 100,000시간 이상의 중국어 및 영어 오디오 데이터로 학습되었습니다.
HuggingFace 의 오픈 소스 버전은 SFT 없이 40,000시간 동안 사전 훈련된 모델입니다.
40,000시간 기본 모델 및 spk_stats 파일을 오픈 소스로 제공합니다.
스트리밍 오디오 생성.
오픈 소스 DVAE 인코더 및 제로샷 추론 코드.
다중 감정 제어.
ChatTTS.cpp( 2noise
org의 새로운 저장소를 환영합니다)
코드는 AGPLv3+
라이센스에 따라 게시됩니다.
이 모델은 CC BY-NC 4.0
라이센스에 따라 게시됩니다. 교육 및 연구용으로 제작되었으며, 상업적이거나 불법적인 목적으로 사용되어서는 안 됩니다. 저자는 정보의 정확성, 완전성 또는 신뢰성을 보장하지 않습니다. 이 저장소에 사용된 정보와 데이터는 학술 및 연구 목적으로만 사용됩니다. 공개적으로 사용 가능한 소스에서 얻은 데이터이며 저자는 데이터에 대한 소유권이나 저작권을 주장하지 않습니다.
ChatTTS는 강력한 텍스트 음성 변환 시스템입니다. 그러나 이 기술을 책임감 있고 윤리적으로 활용하는 것은 매우 중요합니다. ChatTTS의 사용을 제한하기 위해 40,000시간 모델의 학습 중에 소량의 고주파 노이즈를 추가하고 MP3 형식을 사용하여 오디오 품질을 최대한 압축하여 악의적인 행위자가 잠재적으로 범죄에 사용할 수 없도록 했습니다. 목적. 동시에 우리는 내부적으로 탐지 모델을 교육했으며 향후 이를 오픈 소스로 제공할 계획입니다.
GitHub 문제/PR은 언제나 환영합니다.
모델 및 로드맵에 대한 공식적인 문의는 [email protected] 으로 문의해 주세요.
그룹 1 , 808364215
그룹 2 , 230696694
그룹 3 , 933639842
그룹 4 , 608667975
여기를 클릭하여 가입하세요.
자식 클론 https://github.com/2noise/ChatTTScd ChatTTS
pip install --upgrade -r 요구 사항.txt
conda create -n chattts python=3.11 conda는 chattts를 활성화합니다 pip 설치 -r 요구사항.txt
pip 설치 safetensors vllm==0.2.7 torchaudio
경고
설치하지 마십시오! TransformerEngine의 적용은 현재 개발 중이며 현재 제대로 실행될 수 없습니다. 개발 목적으로만 설치하세요. 자세한 내용은 #672 #676에서 확인하세요.
메모
설치 과정이 매우 느립니다.
pip 설치 git+https://github.com/NVIDIA/TransformerEngine.git@stable
경고
설치하지 마십시오! 현재 FlashAttention-2는 이 문제에 따라 생성 속도를 늦춥니다. 개발 목적으로만 설치하세요.
메모
Hugging Face Doc에서 지원되는 장치를 확인하세요.
pip install flash-attn --no-build-isolation
아래 명령을 실행할 때 프로젝트 루트 디렉터리 아래에 있는지 확인하세요.
파이썬 예제/web/webui.py
오디오를
./output_audio_n.mp3
에 저장합니다.
python example/cmd/run.py "텍스트 1." "문자 2."
PyPI에서 안정 버전 설치
핍 설치 ChatTTS
GitHub에서 최신 버전 설치
pip 설치 git+https://github.com/2noise/ChatTTS
개발 모드의 로컬 디렉터리에서 설치
pip 설치 -e .
import ChatTTSimport torchimport torchaudiochat = ChatTTS.Chat()chat.load(compile=False) # 더 나은 성능을 위해 True로 설정texts = ["여기에 첫 번째 텍스트를 입력하세요", "여기에 두 번째 텍스트를 입력하세요"]wavs = chat.infer(texts )for i in range(len(wavs)):""" 일부 버전의 torchaudio에서는 첫 번째 줄이 작동하지만 다른 버전에서는 작동합니다. 두 번째 줄. """try:torchaaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]).unsqueeze(0), 24000)제외:torchaaudio.save(f"basic_output{ i}.wav", torch.from_numpy(wavs[i]), 24000)
################################## Gaussian.rand_spk에서 스피커 샘플 = chat.sample_random_speaker()print (rand_spk) # 나중에 음색 복구를 위해 저장params_infer_code = ChatTTS.Chat.InferCodeParams(spk_emb = rand_spk, # 샘플링 추가 스피커 온도 = .3, # 사용자 정의 온도 사용top_P = 0.7, # 상단 P decodetop_K = 20, # 상단 K 디코드)######################## ########### 문장 수준 수동 제어의 경우 # oral_(0-9), laugh_(0-2), break_(0-7) # 사용하여 텍스트에 특수 토큰을 생성합니다. ynthese.params_refine_text = ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_6]', )wavs = chat.infer(texts,params_refine_text=params_refine_text,params_infer_code=params_infer_code, )################################# 단어 수준 수동 제어의 경우.text = '[uv_break는 무엇입니까? ]가장 좋아하는 영국 음식은요?[웃음][lbreak]'wavs = chat.infer(text, Skip_refine_text=True, params_refine_text=params_refine_text, params_infer_code=params_infer_code)"""torchaudio의 일부 버전에서는 첫 번째 줄이 작동하지만 다른 버전에서는 두 번째 줄도 작동합니다."""try:torchaaudio.save("word_level_output.wav", torch.from_numpy(wavs[0 ]).압착 해제(0), 24000)제외:torchaaudio.save("word_level_output.wav", torch.from_numpy(wavs[0]), 24000)
inputs_en = """chat T T S는 대화 애플리케이션용으로 설계된 텍스트 음성 변환 모델입니다. [uv_break]혼합 언어 입력을 지원하고 [uv_break] [uv_break]웃음[uv_break]과 같은 운율 요소를 정밀하게 제어하는 다중 스피커 기능을 제공합니다.[laugh ], [uv_break] 일시정지, [uv_break] 및 억양. [uv_break] 자연스럽고 표현력이 풍부한 음성을 전달하므로 [uv_break] 프로젝트를 이용해주세요. 책임은 본인의 책임입니다.[uv_break]""".replace('n', '') # 영어는 아직 실험적입니다.params_refine_text = ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_4]', )audio_array_en = chat.infer(inputs_en, params_refine_text=params_refine_text)torchaudio.save("self_introduction_output.wav", torch.from_numpy(audio_array_en[0]), 24000)
남성 연설자 | 여성 연사 |
intro_en_m.webm | intro_en_f.webm |
30초 분량의 오디오 클립에는 최소 4GB의 GPU 메모리가 필요합니다. 4090 GPU의 경우 초당 약 7개의 의미 토큰에 해당하는 오디오를 생성할 수 있습니다. 실시간 요소(RTF)는 약 0.3입니다.
이는 일반적으로 자기회귀 모델(bark 및 valle의 경우)에서 발생하는 문제입니다. 일반적으로 피하기가 어렵습니다. 적절한 결과를 찾기 위해 여러 샘플을 시험해 볼 수 있습니다.
현재 출시된 모델에서 유일한 토큰 수준 제어 단위는 [laugh]
, [uv_break]
및 [lbreak]
입니다. 향후 버전에서는 추가 감정 제어 기능을 갖춘 모델을 오픈 소스로 제공할 수 있습니다.
껍질, XTTSv2 및 valle은 자동 회귀 스타일 시스템을 통해 놀라운 TTS 결과를 보여줍니다.
fish-speech는 LLM 모델링을 위한 오디오 토크나이저로서 GVQ의 기능을 보여줍니다.
사전 훈련된 보코더로 사용되는 보코스.
초기 알고리즘 실험을 위한 wlu-audio lab.