乌龟是一个文本到语音程序,具有以下优先级:
此存储库包含以推理模式运行乌龟TTS所需的所有代码。
COLAB是尝试此操作的最简单方法。我整理了一个笔记本,您可以在此处使用:https://colab.research.google.com/drive/1wvvqupqwidbuvew.wounglpghu3hg_cbr?usp = sharing
如果您想在自己的计算机上使用它,则必须有一个NVIDIA GPU。
首先,使用以下说明安装pytorch:https://pytorch.org/get-started/locally/。在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这将把文本文件分解为句子,然后一次将它们转换为语音。它将在生成时输出一系列的口语剪辑。生成所有夹子后,它将它们组合到一个文件中并输出。
有时,乌龟会拧紧输出。您可以通过重新运行的read.py 。
乌龟可以通过编程方式使用,就像这样:
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或口吃等说话缺陷。参考剪辑还用于确定音频输出的非Voice相关方面,例如音量,背景噪声,记录质量和混响。
我提供了一个随机生成语音的功能。这些声音实际上并不存在,并且每次运行时都会随机。结果非常有趣,我建议您与之一起玩!
您可以通过将“随机”作为语音名称传递来使用随机语音。乌龟将照顾其余的。
对于ML空间中的那些:这是通过将随机向量投射到语音条件潜在空间中创建的。
此存储库带有几种预包装的声音。用“ train_”准备的声音来自训练集,表现远胜于其他训练。如果您的目标是高质量的演讲,我建议您选择其中一个。如果您想看看乌龟可以做什么模仿零射击,请看看其他人。
要添加新的声音为乌龟,您将需要执行以下操作:
如上所述,您的参考剪辑对乌龟的产出有深远的影响。以下是挑选好剪辑的一些技巧:
乌龟主要是一种自回旋解码器模型,并结合了扩散模型。这两者都有很多旋钮,可以将我抽象出来的旋转,以便于使用。我通过使用设置的各种排列生成数千个剪辑来实现这一目标,并使用指标来衡量其效果。我将默认设置设置为我能找到的最佳总体设置。对于特定的用例,使用这些设置可能有效(很可能我错过了一些东西!)
这些设置在包装有乌龟的普通脚本中不可用。但是,它们在API中可用。有关完整列表,请参见api.tts 。
有些人发现有可能用乌龟及时进行工程!例如,您可以在文本之前包括“我真的很难过”之类的东西来唤起情感。我构建了一个自动修订系统,您可以用来利用它。它可以通过试图在括号包围的提示中编辑任何文本来起作用。例如,提示“ [我真的很难过,]请喂我。”只会说“请喂我”(令人难过的音调)。
乌龟通过单独通过产生潜在点的小s子模型将参考剪辑摄入参考剪辑,然后占据所有产生的潜在潜在的潜伏期的平均值。我进行的实验表明,这些点潜在的表现力很大,从语气到口语速度到语音异常的一切都影响了一切。
这使自己有些整洁的技巧。例如,您可以将饲料两种不同的声音结合在一起,并输出它认为这两个声音的“平均值”听起来像。
使用脚本get_conditioning_latents.py为安装的语音提取条件潜在。该脚本将将潜伏期倾倒到.pth Pickle文件。该文件将包含一个元组(AutoreGreliction_Latent,diffusion_latent)。
或者,使用api.texttospeech.get_conditioning_latents()获取潜伏期。
与它们一起玩耍后,您可以使用它们来通过在Voices中创建一个子目录/带有单个“ .pth”文件,该文件包含腌制潜在的潜伏期作为元组(AutoreGreseregryse_latent_latent,diffusion_latent)。
出于担心该模型可能被滥用的担忧,我建立了一个分类器,该分类器讲述了音频剪辑来自乌龟的可能性。
该分类器可以在任何计算机上运行,用法如下:
python tortoise/is_this_from_tortoise.py --clip=<path_to_suspicious_audio_file>
该模型在此存储库中的结果/和声音/文件夹的内容上具有100%精度。尽管如此,将此分类器视为“强信号”。分类器可以被愚弄,并且该分类器也并非不可能表现出误报。
乌龟TTS的灵感来自Openai的Dalle,应用于语音数据并使用更好的解码器。它由5个单独的模型组成:https://nonint.com/2022/04/25/tortoise-architectural-design-doc/