Tortoise — это программа преобразования текста в речь, созданная со следующими приоритетами:
Этот репозиторий содержит весь код, необходимый для запуска Tortoise TTS в режиме вывода.
Рукопись: https://arxiv.org/abs/2305.07243.
Живая демонстрация размещена на Hugging Face Spaces. Если вы хотите избежать очереди, продублируйте пространство и добавьте графический процессор. Обратите внимание, что в этой демонстрации не работают места, предназначенные только для ЦП.
https://huggingface.co/spaces/Manmay/tortoise-tts
pip install tortoise-tts
Если вы хотите установить последнюю версию разработки, вы также можете установить ее непосредственно из репозитория git:
pip install git+https://github.com/neonbjb/tortoise-tts
Я называю свои репозитории, связанные с речью, в честь флоры и фауны пустыни Мохаве. Черепаха немного насмешлива: эта модель безумно медленная. Он использует как авторегрессионный декодер, так и диффузионный декодер; оба известны своей низкой частотой дискретизации. Ожидайте, что на K80 предложение среднего размера будет генерироваться каждые 2 минуты.
ну..... уже не так медленно, теперь мы можем получить RTF 0,25-0,3 на 4 ГБ видеопамяти, а при потоковой передаче мы можем получить задержку < 500 мс !!!
На этой странице представлен большой список примеров выходных данных.
Крутое приложение Tortoise + GPT-3 (не связанное с этим репозиторием): https://twitter.com/lexman_ai. К сожалению, этот проект, похоже, больше не активен.
Если вы хотите использовать это на своем компьютере, у вас должен быть графический процессор NVIDIA.
Кончик
В Windows я настоятельно рекомендую использовать метод установки Conda. Мне сказали, что если вы этого не сделаете, вы потратите много времени на поиск проблем с зависимостями.
Сначала установите миниконду: 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...
перед активацией среды черепахи.
Примечание
Если вы хотите использовать черепаху-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. "
На macOS 13+ с чипами M1/M2 вам необходимо установить ночную версию 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 .
Имейте в виду, что DeepSpeed отключен на Apple Silicon, поскольку он не работает. Флаг --use_deepspeed
игнорируется. Возможно, вам придется добавить PYTORCH_ENABLE_MPS_FALLBACK=1
к приведенным ниже командам, чтобы они работали, поскольку MPS не поддерживает все операции в Pytorch.
Этот скрипт позволяет вам произнести одну фразу одним или несколькими голосами.
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
Это разобьет текстовый файл на предложения, а затем преобразует их в речь по одному. Он будет выводить серию голосовых клипов по мере их создания. Как только все клипы будут сгенерированы, он объединит их в один файл и выведет его.
Иногда Черепаха портит вывод. Вы можете повторно создать любые плохие клипы, повторно запустив read.py
с аргументом --regenerate.
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' )
Чтобы использовать DeepSpeed:
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 был полностью создан автором (Джеймсом Беткером) с использованием собственного оборудования. Их работодатель не участвовал ни в одном аспекте развития Tortoise.
Tortoise TTS распространяется по лицензии Apache 2.0.
Если вы используете этот репозиторий или содержащиеся в нем идеи для своего исследования, цитируйте его! Запись bibtex можно найти на правой панели GitHub.