<> 2024년 7월 5일: 최신 AR 체크포인트 출시: 출력 안정성이 높아졌습니다. 매우 큰 업데이트가 곧 출시됩니다!
CAMB.AI의 MARS5 영어 음성 모델(TTS)에 대한 저장소입니다.
이 모델은 독특하게 새로운 NAR 구성 요소가 포함된 2단계 AR-NAR 파이프라인을 따릅니다(아키텍처에서 자세한 내용 참조).
단 5초의 오디오와 텍스트 조각만으로 MARS5는 스포츠 해설, 애니메이션 등과 같이 운율이 어렵고 다양한 시나리오에 대해서도 음성을 생성할 수 있습니다. 데모를 확인해 보세요:
여기에서 전체 비디오를 시청하세요:
그림 : MARS5의 개략적인 아키텍처 흐름. 텍스트와 참조 오디오가 주어지면 자동 회귀 변환기 모델을 통해 거친(L0) 인코딩 음성 특징을 얻습니다. 그런 다음 다항식 DDPM 모델에서 텍스트, 참조 및 대략적인 특징을 정제하여 나머지 인코딩 코드북 값을 생성합니다. 그런 다음 DDPM의 출력이 보코딩되어 최종 오디오를 생성합니다.
모델은 바이트 쌍으로 인코딩된 텍스트와 함께 원시 오디오에 대해 훈련되었으므로 구두점 및 대문자 사용과 같은 사항을 사용하여 조정할 수 있습니다. 예를 들어 일시 정지를 추가하려면 스크립트에서 해당 부분에 쉼표를 추가하세요. 또는 단어를 강조하려면 성적표에 대문자로 입력하세요. 이는 생성된 출력의 운율을 안내하는 매우 자연스러운 방법을 가능하게 합니다.
화자 ID는 2~12초 사이의 오디오 참조 파일을 사용하여 지정되며 길이는 약 6초로 최적의 결과를 제공합니다. 또한 MARS5는 참조 사본을 제공함으로써 오디오를 생성하는 데 시간이 조금 더 걸리더라도 복제 및 출력 품질을 향상시키는 ' 딥 클론 '을 수행할 수 있도록 합니다. 이에 대한 자세한 내용과 기타 성능 및 모델 세부 정보는 docs 폴더를 참조하세요.
우리는 모델을 쉽게 로드하기 위해 torch.hub
사용합니다. 저장소를 복제할 필요가 없습니다. 추론을 수행하는 단계는 간단합니다.
pip를 사용하여 설치 :
요구사항:
pip install --upgrade torch torchaudio librosa vocos encodec safetensors regex
import torch , librosa
mars5 , config_class = torch . hub . load ( 'Camb-ai/mars5-tts' , 'mars5_english' , trust_repo = True )
# The `mars5` contains the AR and NAR model, as well as inference code.
# The `config_class` contains tunable inference config settings like temperature.
(선택 사항) Huggingface에서 모델 로드(저장소가 복제되었는지 확인)
from inference import Mars5TTS , InferenceConfig as config_class
import torch , librosa
mars5 = Mars5TTS . from_pretrained ( "CAMB-AI/MARS5-TTS" )
# Load reference audio between 1-12 seconds.
wav , sr = librosa . load ( '<path to arbitrary 24kHz waveform>.wav' ,
sr = mars5 . sr , mono = True )
wav = torch . from_numpy ( wav )
ref_transcript = "<transcript of the reference audio>"
참고: 참조 성적표는 선택 사항입니다. 딥 클론을 수행하려면 이 옵션을 전달하세요.
MARS5는 두 가지 종류의 추론을 지원합니다. 즉, 참조의 사본이 필요하지 않은 얕고 빠른 추론(이를 얕은 복제 라고 함)과 두 번째로 느리지만 일반적으로 더 높은 품질의 방식인 깊은 복제 라고 합니다. 딥 클론을 사용하려면 프롬프트 기록이 필요합니다. 이에 대한 자세한 내용은 모델 아키텍처를 참조하세요.
# Pick whether you want a deep or shallow clone. Set to False if you don't know prompt transcript or want fast inference. Set to True if you know transcript and want highest quality.
deep_clone = True
# Below you can tune other inference settings, like top_k, temperature, top_p, etc...
cfg = config_class ( deep_clone = deep_clone , rep_penalty_window = 100 ,
top_k = 100 , temperature = 0.7 , freq_penalty = 3 )
ar_codes , output_audio = mars5 . tts ( "The quick brown rat." , wav ,
ref_transcript ,
cfg = cfg )
# output_audio is (T,) shape float tensor corresponding to the 24kHz output audio.
그게 다야! 이러한 기본 설정은 꽤 좋은 결과를 제공하지만 추론 설정을 자유롭게 조정하여 특정 사용 사례에 맞게 출력을 최적화할 수 있습니다. 다양한 추론 설정에 대한 정보와 문서는 InferenceConfig
코드 또는 데모 노트북을 참조하세요.
최상의 품질을 위한 몇 가지 팁:
DockerHub에서 가져오기
DockerHub 페이지에서 Docker 이미지를 직접 가져올 수 있습니다.
직접 구축
다음 명령을 실행하여 이 리포지토리에 제공된 Dockerfile에서 사용자 지정 이미지를 빌드할 수 있습니다.
cd MARS5-TTS
docker build -t mars5ttsimage ./docker
참고: 이 이미지는 Dockerfile 또는 docker-compose에 사용자 지정 추론 스크립트를 추가할 수 있는 기본 이미지로 사용해야 합니다. 출력을 직접 생성하는 이미지는 곧 Docker Hub에 추가되고 이 저장소에 Dockerfile로 추가됩니다.
체크포인트
MARS5의 체크포인트는 이 github 저장소의 릴리스 탭 아래에 제공됩니다. 우리는 두 가지 체크포인트를 제공합니다:
'vocab'
키 아래의 각 체크포인트에 내장되어 있으며 저장된 minbpe 토크나이저와 대략 동일한 형식을 따릅니다. 체크포인트는 pytorch .pt
체크포인트와 safetensors .safetensors
체크포인트로 제공됩니다. 기본적으로 torch.hub.load()
safetensors 버전을 로드하지만 torch.hub.load()
호출에서 ckpt_format='safetensors'
또는 ckpt_format='pt'
인수를 사용하여 원하는 체크포인트 버전을 지정할 수 있습니다. . 예를 들어 safetensors 형식을 강제로 적용하려면 다음을 수행합니다.
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='safetensors')
또는 체크포인트를 로드할 때 pytorch .pt
형식을 강제로 적용하려면 다음을 수행하세요.
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='pt')
하드웨어 요구 사항 :
GPU에 최소 7억 5천만+4억 5천만 개의 매개변수를 저장할 수 있어야 하며, 7억 5천만 개의 활성 매개변수로 추론을 수행할 수 있어야 합니다.
필요한 하드웨어 요구 사항이 없고 애플리케이션에서 MARS5를 사용하려는 경우 API를 통해 사용할 수 있습니다. 사용 사례에 맞게 테스트하기 위해 추가 크레딧이 필요한 경우 언제든지 [email protected]
로 문의하세요.
MARS5는 현재 완벽하지 않으며 품질, 안정성 및 성능을 개선하기 위해 노력하고 있습니다. 우리가 개선하고자 하는 부분은 다음과 같습니다. 기여를 환영합니다.
특정 작업
site-packages/torch/nn/functional.py:4840: UserWarning: The operator 'aten::col2im' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications
. MARS5 개선에 기여하고 싶다면 자유롭게 기여해 주세요(아래 지침 참조).
모델 개선에 대한 기여를 환영합니다. 실험해 보면 알 수 있듯이 정말 훌륭한 결과를 얻을 수 있으며, 지속적으로 우수한 출력을 생성하도록 더욱 개선할 수 있습니다. 또한 다양한 시나리오에서 MARS5를 어떻게 사용했는지 보고 싶습니다. ? 토론에 카테고리를 표시하고 알려 예시를 공유하세요.
기여 형식 :
리포지토리에 기여하는 가장 좋은 방법은 GitHub에서 마스터 리포지토리를 포크하는 것입니다.
git remote add upstream [email protected]:Camb-ai/mars5-tts.git
git push --set-upstream origin <NAME-NEW-BRANCH>
우리는 GNU AGPL 3.0에 따라 영어로 MARS5를 오픈 소스화하고 있습니다. 상업적인 문의가 있거나 MARS의 비공개 소스 버전에 대한 라이선스를 받으려면 [email protected]로 이메일을 보내주세요.
우리는 모든 사람의 목소리를 중요하게 여기겠다는 단 하나의 목표를 가지고 전 세계에 분산되어 있는 야심찬 팀입니다. CAMB.AI는 Interspeech 출판사인 Carnegie Mellon의 전직 Siri 엔지니어들로 구성된 연구팀으로, 우리 팀에 합류할 여러분을 찾고 있습니다.
우리는 적극적으로 채용하고 있습니다. 관심이 있으시면 [email protected]로 이메일을 보내주세요. 자세한 내용은 채용 페이지를 방문하세요.
포럼 및 Discord에서 CAMB.AI 커뮤니티에 가입하여 제안, 피드백 또는 질문을 팀과 공유하세요.
이 프로젝트의 코드 일부는 다음 저장소에서 채택되었습니다. 꼭 확인해 보세요! 다음 작성자에게 감사드립니다.
.trim()
코드에 대한 librosa: https://librosa.org/doc/main/generated/librosa. Effects.trim.html