Tortoise는 다음 우선순위에 따라 구축된 텍스트 음성 변환 프로그램입니다.
이 저장소에는 추론 모드에서 Tortoise TTS를 실행하는 데 필요한 모든 코드가 포함되어 있습니다.
원고: https://arxiv.org/abs/2305.07243
Hugging Face Spaces에서 라이브 데모가 호스팅됩니다. 대기열을 피하려면 공간을 복제하고 GPU를 추가하세요. 이 데모에서는 CPU 전용 공간이 작동하지 않습니다.
https://huggingface.co/spaces/Manmay/tortoise-tts
pip install tortoise-tts
최신 개발 버전을 설치하려면 git 저장소에서 직접 설치할 수도 있습니다.
pip install git+https://github.com/neonbjb/tortoise-tts
저는 모하비 사막 동식물의 이름을 따서 음성 관련 저장소의 이름을 지정하고 있습니다. Tortoise는 좀 까다롭습니다. 이 모델은 엄청나게 느립니다. 자동회귀 디코더 와 확산 디코더를 모두 활용합니다. 둘 다 낮은 샘플링 속도로 유명합니다. K80에서는 2분마다 중간 크기의 문장을 생성할 것으로 예상됩니다.
음..... 더 이상 그렇게 느리지는 않습니다. 이제 4GB vram에서 0.25-0.3 RTF를 얻을 수 있고 스트리밍을 사용하면 < 500ms 대기 시간을 얻을 수 있습니다!!!
예제 출력의 대규모 목록은 이 페이지를 참조하세요.
Tortoise + GPT-3의 멋진 애플리케이션(이 저장소와 관련 없음): https://twitter.com/lexman_ai. 안타깝게도 이 프로젝트는 더 이상 활성화되지 않는 것 같습니다.
자신의 컴퓨터에서 이것을 사용하려면 NVIDIA GPU가 있어야 합니다.
팁
Windows에서는 Conda 설치 방법을 사용하는 것이 좋습니다 . 이렇게 하지 않으면 종속성 문제를 해결하는 데 많은 시간을 소비하게 될 것이라는 말을 들었습니다.
먼저 miniconda를 설치하세요: https://docs.conda.io/en/latest/miniconda.html
그런 다음 anaconda 프롬프트를 터미널(또는 conda와 작동하도록 구성된 다른 터미널)로 사용하여 다음 명령을 실행합니다.
이는 다음을 수행합니다.
conda create --name tortoise python=3.9 numba inflect
conda activate tortoise
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
conda install transformers=4.29.2
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
python setup.py install
선택적으로 pytorch를 기본 환경에 설치하여 다른 conda 환경에서도 사용할 수 있습니다. 이렇게 하려면 거북이 환경을 활성화하기 전에 conda install pytorch...
라인을 보내면 됩니다.
메모
tortoise-tts를 사용하려면 항상 tortoise
conda 환경이 활성화되어 있는지 확인해야 합니다.
Windows를 사용하는 경우 pysoundfile을 설치해야 할 수도 있습니다: conda install -c conda-forge pysoundfile
사용 사례에 따라 시작하기 쉬운 방법이자 좋은 출발점입니다.
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
docker build . -t tts
docker run --gpus all
-e TORTOISE_MODELS_DIR=/models
-v /mnt/user/data/tortoise_tts/models:/models
-v /mnt/user/data/tortoise_tts/results:/results
-v /mnt/user/data/.cache/huggingface:/root/.cache/huggingface
-v /root:/work
-it tts
이는 일부 TTS를 수행할 준비가 된 환경에서 대화형 터미널을 제공합니다. 이제 거북이가 tts를 위해 노출하는 다양한 인터페이스를 탐색할 수 있습니다.
예를 들어:
cd app
conda activate tortoise
time python tortoise/do_tts.py
--output_path /results
--preset ultra_fast
--voice geralt
--text " Time flies like an arrow; fruit flies like a bananna. "
M1/M2 칩이 있는 macOS 13+에서는 공식 페이지에 명시된 대로 PyTorch의 거의 버전을 설치해야 합니다.
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
환경을 활성화한 후에 이를 수행하십시오. conda를 사용하지 않으면 명령은 다음과 같습니다.
python3.10 -m venv .venv
source .venv/bin/activate
pip install numba inflect psutil
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
pip install transformers
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
pip install .
Apple Silicon에서는 DeepSpeed가 작동하지 않으므로 비활성화되어 있습니다. --use_deepspeed
플래그는 무시됩니다. MPS는 Pytorch의 모든 작업을 지원하지 않으므로 아래 명령 앞에 PYTORCH_ENABLE_MPS_FALLBACK=1
추가해야 작동할 수 있습니다.
이 스크립트를 사용하면 하나 이상의 음성으로 단일 문구를 말할 수 있습니다.
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fast
python tortoise/socket_server.py
포트 5000에서 수신 대기합니다.
이 스크립트는 많은 양의 텍스트를 읽는 도구를 제공합니다.
python tortoise/read_fast.py --textfile < your text to be read > --voice random
이 스크립트는 많은 양의 텍스트를 읽는 도구를 제공합니다.
python tortoise/read.py --textfile < your text to be read > --voice random
이렇게 하면 텍스트 파일이 문장으로 분할된 다음 한 번에 하나씩 음성으로 변환됩니다. 일련의 음성 클립이 생성되면 출력됩니다. 모든 클립이 생성되면 이를 단일 파일로 결합하여 출력합니다.
때때로 Tortoise는 출력을 망쳐 놓습니다. --regenerate 인수를 사용하여 read.py
다시 실행하면 잘못된 클립을 다시 생성할 수 있습니다.
Tortoise는 다음과 같이 프로그래밍 방식으로 사용할 수 있습니다.
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ()
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
딥스피드를 사용하려면:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( use_deepspeed = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
kv 캐시를 사용하려면:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( kv_cache = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
float16에서 모델을 실행하려면:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( half = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
더 빠른 실행을 위해서는 세 가지를 모두 사용하십시오.
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( use_deepspeed = True , kv_cache = True , half = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
이번 프로젝트는 생각보다 많은 호평을 받았습니다. 하지만 저는 거인의 어깨 위에 서 있습니다. 그리고 이 일이 가능하도록 도운 커뮤니티의 놀라운 분들께 감사의 말씀을 전하고 싶습니다.
Tortoise는 전적으로 저자(James Betker)가 자체 하드웨어를 사용하여 제작했습니다. 그들의 고용주는 Tortoise 개발의 어떤 측면에도 관여하지 않았습니다.
Tortoise TTS는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다.
이 저장소나 그 안에 있는 아이디어를 연구에 사용하는 경우 인용해 주세요! Bibtex 앙트레는 GitHub의 오른쪽 창에서 찾을 수 있습니다.