大家好,欢迎回到频道。我在片头已经提过这个了。好吧,让我们直接用英语来试一下。今天我们要测试 Fish Audio S2.1 版本。我们将使用 Fish Audio S2.1 Pro 语音模型来克隆我的声音,将其转换为另一种语言,从而让我能够夺回一些被上传到其他平台视频的版权控制权。
为了说明为什么这是必要的,我先提供一点前置条件和背景信息。让我们看一段我认为存在问题的视频片段。这是一个名为“Bilibili”的网站,它是一个中国网站,用于发布视频。你可以把它想象成类似 YouTube 的平台。这里最大的问题是,我并没有上传这段视频,而且有很多其他账号在这里发布了我的其他视频。
这些账号一直在进行此类上传行为,许多制作该领域(如 AI 模型评测等)视频的其他创作者也在这里。嗯,所以让我们听听这里被克隆成中文的我的声音片段吧,仔细听一下这段内容。
“太深了。” “非常……” “深。” >> 实际上,有人克隆了我的声音并将其翻译成中文,然后将其叠加回视频中上传到这里。>> “实际的常规语音听起来并不差,但在引言的某些部分……”
“是的。” >> 所以,我现在甚至想笑。因为如果通过同一个人的工作流将其翻译回来,听起来就会那样。所以今天整个视频 essentially 就是关于这个的。我们将选取我的一个特定视频,即《Quen 3.8 Next》,然后我们建立一个本地 AI 工作流。
该工作流将根据时间戳将其切片,转录语音,然后使用 Fish Audio S2.1 Pro 以及 API 或 MCP 服务器,我们将以编程方式将该视频更改为我的声音克隆成的中文版本。然后将该音频拉取回来,叠加到视频中,这样我就可以在自己上传和创建的 Bilibili 上发布我自己的视频了。
所以这将是一个部分本地工作流和部分云工作流的结合,仅使用 Fish S2.1 Pro。实际上,我在一年多前测试过他们的部分文本转语音模型。所以一年前的那个视频实际上是测试 Fish Audio 的一个开源文本转语音模型。颇具讽刺意味的是,在引言中我展示了我的克隆声音被翻译成另一种语言的情景。
所以那可能只是我们今天要做的事情的前奏。好了,让我们开始吧。我通常没有完全具体的计划来专门实施生成这些视频所需的每个部分的技术栈。不过,我有概念性的计划,这就足以开始了。所以在深入之前,我想感谢 Fish Audio 的支持。
因为他们好心支持我试图夺回一些被搬运并发布在此处的视频的努力,尽管这些视频的语音克隆成功率各不相同。此外,他们好心允许我使用他们的平台进行此操作。所以感谢 Fish Audio 的支持。另外,至少在接下来的 48 小时内,对于想要测试该模型的人来说,S2.1 Pro API 是免费开放的。
前提是这符合公平使用政策。所以,随着视频的发布时间的不同,这里的数字可能会有所变化。但这会很有趣,因为我已经很久没有做过文本转语音的视频了。如果你是频道的老观众,谢谢你的支持。你可能熟悉我们在过去几年中测试过的那些视频非常有趣。
让我们从第一步开始,也就是克隆我的声音。所以我们的第一步是从 Fish Audio 仪表板进入“创建语音”,并选择即时语音克隆功能。我已经从《Quen 3.8 Next》视频中提取了一个特定的片段,我将用它来演示这个端到端的流程。我相信我有大约 15 秒的音频准备好上传了。让我看看我是否记得清楚。
所以这就是我将用于克隆语音的片段。现在,我们使用 Q4KM 量化在后面的机器上运行进行真正的本地测试。这是 Unsloth 的量化版本,我们给它做了 Subway FPS 测试。我想让它完成一些相对简单的任务,以查看它在该量化下的表现如何。
我认为这大约是 15 秒,并且包含了足够的关于语音类型、量化和本地等词汇的语料。虽然我不知道这实际上会对结果产生多大影响,但我们现在看到它已经上传了。我们已上传 15 秒音频。30 秒足以应对大多数声音,更长的音频仍然会有所帮助。所以我们看到这已经足够了。
我在想我是否应该上传更多内容。我只是想看它在 15 秒内的表现如何,但根据我们获得的质量,我们也可能会进一步使用更强烈的语音片段。所以让我们看看仅从 15 秒中能得到什么结果。目前它正在分析音频。好吧,那里显示“良好”,我假设这是好的意思。
下一步,我们继续查看详细信息。这没问题。很好。它自动为我们命名了这个语音为“清晰科技解说员”,谢谢。但我们接下来的步骤基本上是根据我们使用此声音的目的来更改一些内容,对于本视频来说,当然,“清晰科技解说员”是在范围内的。
然而,这也是你可以做一些有趣事情的地方,我们可能必须尝试一下。“中年男性。” 好吧,我不知道我对这个感觉如何。现在我也有一些选项,比如选择特定用例。“解说”和“教育”没问题,但我也想包括社交媒体。我有点想 inclusion 娱乐性,因为这些视频可能更偏向那一边而不是教育类。
并且在此之外,我们还有一些关于如何具体处理对此访问权限的选项。我将保持私密状态,以便只有我自己可以访问,否则我们可能会遇到更多此类情况的发生,而这些是我自己造成的。所以我们的下一步就是点击“创建”。
你必须确认你拥有创建、分享和克隆此特定语音的权限,我已经为自己授予了该权限。所以没问题。好了,让我们现在看一下。这里有一个音频样本。这是我们使用 Q4KM 量化在机器上运行进行的真正本地测试。
我们身后的机器正在运行。我们已经给它进行了 Subway FPS 测试,以观察它在特定量化下的表现。现在,我认为这实际上就是刚才播放的语音克隆,它复述了样本片段中转录出的 speech 部分。其实很难分辨真假,所以我想这算是个好消息吧。现在,如果我们想做一些调整,也可以点击这里的“编辑模型”按钮。
向下滚动时,我们会看到有一堆可选的语音质量设置。这些是根据系统对该克隆声音的分析结果自动选择的,以便评估其特性。我对所有这些选项都感到满意,也不打算在这方面做任何更改,因为目前的语音听起来已经相当不错了。
接下来我认为只需点击“使用此声音”,我们就可以稍微玩弄一下这个功能了。我们可以看到我们使用的是 Fish Audio S2.1 Pro 的免费版本,这对于今天的演示部分来说已经足够了。
接下来我想做的是再次在频道中搜索一些文本转语音视频,比如“嘿你好”、“哦那是说话人我道歉”、“嘿你好订阅”。这里有两个不同的样本,只是为了做一个 A/B 测试:“嘿你好订阅”……我觉得其中一个更好,我也就接受这个结果了。
我已经将这里的一个简单句子翻译成了中文。现在我要把它复制粘贴到 Fish Audio 中。当构建出能够自主转录视频、将其翻译成中文,然后通过 API 发送回来的流水线时,这将会实现自动化。不过我只是想看看它在这里听起来效果如何。“很好。”
我们可以看到有一件事不一定能完美翻译。我的名字只是被读作……“哦,好吧。”让我们试试另一个。“真有趣。第二次尝试听起来更像是如果我基本懂一点中文可能会发出的声音,因为发音听起来更像英语化的版本。第一次尝试则像是一个对中文掌握更熟练的人发出的声音。”
现在,我实际上并不打算在这里挑选哪一个更好,因为这两个都完全没问题。而且这整个演示的重点仅仅在于证明我的声音可以被克隆出来,让我说出一种我在现实生活中实际上不会说的不同语言。这将使我能够更接近我们在这里看到的效果——Deep Fabula。“那个听起来更像第二次尝试,它让我听起来非常基本的美式英语化。”
“嘿,你需要什么?”……实际上那个好多了。所以这也是问题的一部分:他们用来克隆的工具可能并没有针对质量进行优化,而是为了大批量作业,以便快速推出被盗的内容。
有了这些背景,我们现在的下一步基本上是进入下一个阶段。但在这样做之前,我想在这里稍微找点乐子。所以我特别想玩弄的一个功能是情感控制。即使在短短几分钟内也好。
在文档中我们可以看到,这是文本转语音的选项之一,而情感控制本质上就是一堆会改变声音以反映特定情感的标签。我们可以看到这里有 24 种基本情感可供选择,还有高级情感,这些可能会带来更幽默的效果。
在这种情况下,我想用我们刚才的克隆声音和一些基本语音来尝试其中几个。当我浏览这些文档时,我发现最好至少有 15 秒的干净音频……不,是至少一分钟。所以我可能最终会重新克隆声音,以便用于我们要构建的堆栈的实际部署中。
但就目前而言,我只是想看看使用一个短的 15 秒片段效果如何。我想其中一些会融入进去并显得很有趣。我们也可以包括一些,只要点击这里的标签即可。还有自动标记的选项,但那就不那么有趣了。所以让我们看看这个听起来怎么样。
好吧。然后我们会尝试清嗓子、呻吟声和观众笑声。我不知道是否可以像这样堆叠它们,但我们将拭目以待。我应该跳过第一个笑声音效的……
我想有时候会发生这种情况,是的,在这个量化 5090 中,对于这些简单的美元……只是为了看看它在当前量化下的表现。让我们看看第二次尝试是否稍微好一些。“给我 RTX5090,MSRP 为 2,000 美元。”……很好。只想快速看一秒钟。“给我 RTX5090,MSRP 为 2,000 美元。”哦,“给我 RTX5090,MSRP……”“听起来像我爷爷的声音。”
“嘿大家好,欢迎回到频道。今天我们要测试 Fish Audio S2.1。”……我把那部分放在了介绍里。“嘿大家好,欢迎回到频道。今天我们要测试 Fish Audio S2.1。”好吧,让我们只用英语试试。“今天我们正在测试 Fish Audio S2.1。现在我将进行最后一次语音克隆。”
然而,这大约是 70 秒……或者差不多一分钟零十八秒的我的声音。这是从同一个 Quen 3.8 下一个视频中提取出来的。因为他们在平台上经常提到,如果你有一段大约一分钟的声音之类的东西……之前那个声音处于橙色到黄色区域。这次深绿色,这意味着质量足够好。
所以这肯定会给我们提供更高质量的输出,特别是当我们想要一些较长的语音生成时。所以我会让它分析这段声音,然后我会用它做一个快速测试,接着我们将进入实际弄清楚如何将其接入工作流的阶段。该工作流将使用本地模型来转录视频,然后根据时间戳等对其进行切片等操作。
现在我想快速检查一下它。所以我要在这里为我们的新“技术解释者声音”添加另一个声音,然后我们就可以快速测试一下了。“嘿大家好,欢迎回到频道。我们把速度设得太低了。那是我的错误。”……“嘿大家好,欢迎回到频道。”
那非常好。“我想”……“嘿大家好,欢迎回到频道。我想听到它在中文和英文中的效果,因为当我用中文说话时,很难判断它是否是一个好的克隆。除非像那个一开始那样……但它不是。”
好吧。所以我将在这里通过 ChatGPT Mac 应用使用 GPT56 Soul,设置为“超高级”。我已经写出了一个相当复杂的提示词,概述了整体目标。
这正是我们此刻正在做的事情。我想我会逐字复述一遍:我需要执行以下构建流程。视频被放置在主机系统上,平均时长为30分钟,然后根据随视频提供的时间戳将其分割成若干部分。接着,这些带时间戳的部分被输入到本地模型中,将语音转录为文本,从而生成该视频部分的字幕。
随后,这些字幕将被翻译成中文,翻译后的内容会发送到Fish Audio API,通过调用我的克隆声音来重建该视频部分的音频。之后,这些音频片段将被重新插入视频中,替换掉原始的英语音频。最后,视频会被拼接回完整的成品,准备上传到平台,此时视频的音频已变为我用中文克隆的声音。
我们还需要确保克隆后的音频在时间位置上与源音频大致对齐。或许需要对源片段和克隆片段的音频进行某种波形分析并进行比较,以便自主地左右微调音频以使其匹配。简单来说,如果我的嘴在动但没有声音播放,这个步骤就是为了确保音频大致与源视频同步。
我提到我认为Quen 3.8 Next模型具备处理这些视频切片并转录它们的能力。因此,我们可以用它进行初始测试构建,回答任何必要的后续问题,并在身后的6000 Pro机器(即7号机)上搭建环境。我现在要按下回车键了。
起初我可能觉得,使用大型语言模型来转录视频片段有些大材小用。也许更简单的做法是构建一个系统,将视频分离出音频,仅根据时间戳分割音频,然后将其输入轻量级转录模型生成文本再翻译。但我只是想看看这个方案的效果,因为这可能是一种更强大的处理方式。
系统提示没有音频输入很好。基本上它指出该模型实际上不接受音频作为直接输入,因此我将为此设置一个专用的语音管道,仅使用Quen将转录后的语音翻译成中文,这样可能效果更好。有趣的是,它在我注意到之前就已经发现Blackwell机器的主机已从7号变为20号,这是正确的。
关于同步问题,它指出不会直接关联英语和中文的波形,因为语音学特征会使信号产生误导。相反,管道将匹配源语音的开始、结束和持续时间,然后使用Fish的速度控制加上微小的最终时间拉伸。它将重建的音频放置到原始时间线上,并流式复制视频,以避免累积的时间拉伸漂移。
这正是我喜欢先给它一个总体概述的原因,因为它会指出很多错误之处,比如“嘿,这里错了”。我会建议替代方案。根据所用模型的强度,这既是好事也是坏事。56 Soul仅基于其部署的堆栈完成了验证,确保其在特定系统上正确运行。
接下来有几件事要做。其中一件我无法在镜头前展示,因为我需要获取API密钥和声音ID等信息。我将在此处创建一个。显然创建之后我就无法展示了。接下来,我要获取我们要使用的那个声音的ID。这是那个1分18秒的克隆版本,而不是15秒的版本。
虽然两者在质量上差别似乎不大,但在更长的生成过程中差异可能会变得明显一些。接下来,我给它增加了一个额外要求:将刚才构建的堆栈包装成一个Web UI界面。这样这台机器就可以从当前这台访问,简化选择源片段、输入API密钥等设置过程,无需进行任何终端操作。
前端已完成构建。我还告诉它保持Quen模型加载在内存中,因为它原本会根据使用情况动态加载和卸载,但这会引入端到端流程的延迟。现在我需要进入设置界面,输入Fish Audio API密钥以及克隆声音ID。我们还从实际的Fish文档中获取了一些关于如何使用该工具的指标信息。
我现在要给它提供必要的API密钥和声音ID,这些我无法展示。好的,我已经在此处输入了Fish凭据,并且选择了正确的S2.1 Pro模型。让我们测试一下保存的凭据。保存。现在测试凭据:Fish已连接,技术解说员声音S2.1 Pro。完美。
确认是正确的模型S2.1 Pro,而“技术解说员声音”正是那1分18秒的克隆版本。好了,既然一切设置妥当,我们来看看自动分段长度功能。这是在未提供时间戳时用于切割视频的选项,这也许能行得通。
在GPT-4o协助排查了一些问题后——主要是Chrome浏览器无法访问本地网络导致不可达,以及本地语音转文本存在CUDA依赖问题——现在理论上应该可以正常使用了。我仍需要确认设置中的API密钥已选中,如前所述测试凭据时声音和模型均正确。
我们现在基本准备就绪。让我们用一段较短的源视频试一下,就像我不喜欢使用AI术语那样,我们运行一个快速冒烟测试以确保其正常工作。所以……
这是一个26GB的文件,我决定暂时不加入时间戳,先看看普通话配音的效果如何。之前失败的任务已经修复,现在正运行到65%左右。电脑正在使用本地Qwen模型将语音转录文本翻译成中文,随后发送给Fish Audio的S2.1 Pro模型,利用克隆声音生成中文语音并合成到视频中。这一过程非常酷,系统自动切片视频并将转录文本发送给Fish Audio生成语音。这种结合本地和云服务的工作流,能在一个下午内搭建完成,实现了视频转录、克隆声音配音及合成的自动化。
下载完成后,试听效果令人惊叹,听起来确实是我的声音。这验证了管道的基本功能。接下来进行正式测试:处理全长约30至40分钟的Qwen 3.8视频。目前视频时长约为33分钟,文件大小为6.6GB。我们将时间戳粘贴到Web UI中并上传源视频。API已选中Fish Audio S2.1克隆声音,假设系统能处理如此长视频的切片和压缩。这是首次端到端的烟雾测试,上传过程耗时较长。
视频转录正在本地进行,能听到GPU在运行,使用的是Qwen 3.8 Next Q4KM量化模型。转录完成后,GPU将负责将其翻译成简体中文,随后翻译文本将被发送至Fish Audio S2.1 Pro模型生成克隆语音。系统正在生成克隆语音,同时监控显示磁盘空间在减少,表明文件正在创建中。所有语音片段生成完毕后,系统开始拼接音频和重新混合视频。转录、翻译及切片均已完成,各片段通过API合成后重组为最终视频。
下载完成后播放发现语速过慢,经分析这是管道逻辑有意为之:Fish Audio具备变速功能,系统试图将中文语音压缩至与英文原片相同的时长。然而中文翻译通常语速更快,强行拉伸导致听感不自然。正确的做法是将时间戳视为章节边界,利用Whisper将每章分割为10至30秒的片段。以正常语速合成后,较短的中文应保留自然间隙而非拉伸至整章长度。
为优化效果,我将调整设置重新渲染。系统支持在不重新上传的情况下再生成现有任务,这将节省时间并应用更优化的参数。新的渲染版本旨在解决时长匹配问题,使中文配音更符合自然语速和节奏。经过调整后的结果应该能更准确地反映正确的处理流程,确保翻译内容的自然流畅性。
我认为整个核心要点是,语音确实百分之百听起来就像我在说中文。这似乎是我之前甚至没有真正意识到的一个事实,对于那些内容窃贼而言:实际上需要一点艺术性的微调,才能让语音与原本用英语制作的视频正确同步,然后再替换成中文。接下来有趣的部分在于找出如何微调这个系统,使其音频能够恰当地拉伸以匹配视频时长,同时避免留下太多无声的空白间隙。然而,这一流程的核心组件实际上是获得一个经过适当翻译、由我本人说中文的声音版本。这种声音可以通过我们在此处使用的 API 进行编程调用,这一点非常关键且有趣。
但这真正的重要性在于,我们拥有一个程序化的解决方案,可以直接通过本地工作室调用 Fish Audio 的 API。这一过程在很大程度上实现了自动化:我只需上传视频,并且由于我们发现时间戳会导致音频人为变慢,因此不使用这些时间戳似乎是一个更好的指标。现在的系统流程大致如下:源视频被上传后,首先进行转录;接着,本地的 Qwen 模型将视频的英文转录内容翻译成中文;然后,利用我们克隆的声音(我认为是那个技术解说员声音,即那段长达 1 分 18 秒的片段),将中文文本发送给 Fish Speech API。
随后,系统会将生成的音频传回本地环境,根据片段与视频部分的对应关系将其拼接在一起,最后导出视频。这样,视频的语种就从英语变成了中文,且使用的是我的克隆声音。这基本上是一个概念验证式的构建(vibe build),旨在实现一个真正可用的功能工具,这也是我一直需要的。因为我很希望能将自己上传的内容也发布到该网站上,尤其是考虑到有那么多不同的人以各种方式搬运我的内容:有些人只用字幕,有些则克隆我的声音来冒充我。我想对此采取应对措施。
这是其中的第一步:构建一个自主且可复制的流程,其中部分功能利用云端以获取更强大的克隆声音能力(这也是我们使用 S2.1 Pro 的原因),而另一部分则卸载到本地处理,例如将转录内容翻译成中文,并自动化 API 调用等事宜。这是一个相当有趣的构建项目,我玩得很开心,当然在语音工作室里尝试这些也乐趣无穷。因此,我认为这为我奠定了一个基础系统框架,使我几乎可以自动化地将我的内容上传到 Billy 网站的原生中文版本中,而无需在手动处理这些事务上花费太多精力。
这大概要结束今天的视频了,这部分内容也是对 Fish Audio 的 S2.1 Pro 模型的一次测试。正如我们所见,该模型非常出色:即使只有短短 15 秒的语音片段,它也能非常完美地克隆声音。这真的很酷。此外,我们还基本上通过“氛围编程”(vibe coding)的方式,构建了一个将 Fish Audio API 集成到本地运行系统中的流程。简而言之,就是将一段英语母版转化为普通话配音。这大概是我能对此事做出的最好总结。
如果你有任何问题,请随时在评论区留言。再次感谢 Fish Audio 让我使用 S2.1 Pro 模型,并通过 API 进行自动化操作和娱乐。如果你有任何问题,请随时在评论区留言。感谢观看。