거북이는 다음과 같은 우선 순위로 구축 된 텍스트 음성 프로그램입니다.
이 repo에는 추론 모드에서 거북이 TTS를 실행하는 데 필요한 모든 코드가 포함되어 있습니다.
Colab은 이것을 시도하는 가장 쉬운 방법입니다. https://colab.research.google.com/drive/1wvvqupqwidbuvewwounglpghu3hg_cbr?usp=sharing
자신의 컴퓨터에서 이것을 사용하려면 nvidia gpu가 있어야합니다.
먼저, https://pytorch.org/get-started/locally/을 사용하여 pytorch를 설치하십시오. Windows에서는 Conda 설치 경로를 사용하는 것이 좋습니다 . 나는 당신이 이것을하지 않으면, 당신은 의존성 문제를 쫓는 데 많은 시간을 할애 할 것이라고 들었습니다.
다음으로 거북이를 설치하면 종속성입니다.
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
python setup.py install Windows에있는 경우 PysoundFile : conda install -c conda-forge pysoundfile 설치해야합니다.
이 스크립트를 사용하면 하나 이상의 목소리로 단일 문구를 말할 수 있습니다.
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fast이 스크립트는 많은 양의 텍스트를 읽는 도구를 제공합니다.
python tortoise/read.py --textfile < your text to be read > --voice random이렇게하면 TextFile을 문장으로 나눈 다음 한 번에 하나씩 연설로 변환합니다. 일련의 음성 클립이 생성 될 때 출력합니다. 모든 클립이 생성되면 단일 파일로 결합하여 출력됩니다.
때때로 거북이는 출력을 망칩니다. read.py 다시 실행하여 regenerate 인수를 통해 나쁜 클립을 다시 생성 할 수 있습니다.
거북이는 프로그래밍 방식으로 사용할 수 있습니다.
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' )거북이는 특히 멀티 스피커 모델로 훈련되었습니다. 참조 클립을 컨설팅하여이를 달성합니다.
이 참조 클립은 음성 생성을 안내하기 위해 제공하는 스피커의 녹음입니다. 이 클립은 음성의 피치와 톤, 말하기 속도, LISP 또는 말더듬과 같은 말하기 결함과 같은 출력의 많은 특성을 결정하는 데 사용됩니다. 참조 클립은 또한 볼륨, 배경 노이즈, 녹음 품질 및 리버브와 같은 오디오 출력의 비 목성 관련 측면을 결정하는 데 사용됩니다.
무작위로 음성을 생성하는 기능을 포함 시켰습니다. 이 목소리는 실제로 존재하지 않으며 실행할 때마다 무작위가됩니다. 결과는 상당히 매력적이며 나는 당신이 그것으로 놀고있는 것이 좋습니다!
'random'을 음성 이름으로 전달하여 임의의 음성을 사용할 수 있습니다. 거북이는 나머지를 돌볼 것입니다.
ML 공간에있는 사람들의 경우 : 이것은 음성 컨디셔닝 잠재 공간에 임의의 벡터를 투사하여 만들어집니다.
이 저장소에는 몇 가지 사전 포장 된 목소리가 제공됩니다. "Train_"로 선불 된 목소리는 훈련 세트에서 나 왔으며 다른 것보다 훨씬 더 잘 수행합니다. 당신의 목표가 고품질의 연설이라면, 나는 당신이 그들 중 하나를 선택하는 것이 좋습니다. Zero-Shot Mimicing을 위해 거북이가 무엇을 할 수 있는지보고 싶다면 다른 사람들을 살펴보십시오.
거북이에 새로운 목소리를 추가하려면 다음을 수행해야합니다.
위에서 언급했듯이, 참조 클립은 거북이 출력에 중대한 영향을 미칩니다. 다음은 좋은 클립을 선택하기위한 몇 가지 팁입니다.
거북이는 주로 확산 모델과 결합 된 자동 회귀 디코더 모델입니다. 이 두 가지 모두 사용하기 쉽기 위해 추상화 할 수있는 많은 손잡이가 있습니다. 나는 설정의 다양한 순열을 사용하여 수천 개의 클립을 생성하고 음성 사실주의와 명료성을위한 메트릭을 사용하여 효과를 측정함으로써이를 수행했습니다. 기본값을 내가 찾을 수있는 최고의 전체 설정으로 설정했습니다. 특정 사용 사례의 경우 이러한 설정을 사용하는 것이 효과적 일 수 있습니다 (그리고 내가 뭔가를 놓쳤을 가능성이 높습니다!)
이 설정은 거북이로 포장 된 일반 스크립트에서 사용할 수 없습니다. 그러나 API에서 사용할 수 있습니다. 전체 목록은 api.tts 참조하십시오.
어떤 사람들은 거북이로 신속한 엔지니어링을 할 수 있다는 것을 발견했습니다! 예를 들어, 당신은 당신의 텍스트 전에 "정말 슬프다"와 같은 것을 포함시켜 감정을 불러 일으킬 수 있습니다. 나는 당신이 이것을 활용하는 데 사용할 수있는 자동화 된 편집 시스템을 구축했습니다. 괄호로 둘러싸인 프롬프트에서 텍스트를 수정하려고 시도하여 작동합니다. 예를 들어, "[정말 슬퍼요] 제발 먹이를주십시오." "제발 먹이를 먹으십시오"라는 단어 만 말할 것입니다 (슬픈 색조로).
거북이 섭취는 포인트 잠복을 생성하는 작은 서브 모델을 통해 개별적으로 공급하여 참조 클립을 섭취 한 다음 생성 된 모든 잠복의 평균을 취합니다. 내가 한 실험은이 포인트 잠복이 상당히 표현력이 있으며, 말하기 속도, 말하기 속도, 연설 이상에 이르기까지 모든 것에 영향을 미친다는 것을 나타냅니다.
이것은 몇 가지 깔끔한 속임수에 적합합니다. 예를 들어, 피드를 두 개의 다른 목소리와 결합하여 거북이를 결합 할 수 있으며이 두 목소리의 "평균"이 생각하는 것을 출력합니다.
스크립트 get_conditioning_latents.py 사용하여 설치 한 음성에 대한 컨디셔닝 잠재를 추출하십시오. 이 스크립트는 잠복을 .pth 피클 파일로 버립니다. 파일에는 단일 튜플 (autoregreassive_latent, diffusion_latent)이 포함됩니다.
또는 API.TextToSpeech.get_conditioning_latents ()를 사용하여 잠재를 가져 오십시오.
당신이 그들과 함께 연주 한 후에는 튜플 (autoregreassive_latent, diffusion_latent)으로 절인 컨디셔닝 잠복을 포함하는 단일 ".pth"파일로 Subdirectory를 만들어 음성을 생성 할 수 있습니다.
이 모델이 잘못 사용될 수 있다는 우려에서, 나는 오디오 클립이 거북이에서 나올 가능성을 알려주는 분류기를 만들었습니다.
이 분류기는 모든 컴퓨터에서 실행할 수 있으며 사용량은 다음과 같습니다.
python tortoise/is_this_from_tortoise.py --clip=<path_to_suspicious_audio_file>
이 모델은이 레포의 결과/ 음성/ 폴더의 내용에 대해 100% 정확도를 가지고 있습니다. 그럼에도 불구 하고이 분류기를 "강한 신호"로 취급하십시오. 분류기를 속일 수 있으며이 분류기가 잘못된 긍정을 나타내는 것은 불가능하지 않습니다.
거북이 TTS는 OpenAi의 Dalle에서 영감을 얻어 음성 데이터에 적용하고 더 나은 디코더를 사용합니다. https://nonint.com/2022/04/25/tortoise-architectural-design-doc/