今天我们要测试 Fish Audio 的 S2 Pro,这是他们领先的文本转语音模型,目前已在 Hugging Face 上开放。该模型的独特之处在于支持细粒度的自然语言控制标签,你可以添加诸如“惊讶”、“现场感声音”等指令。我们将进行本地测试,运行其开源推理代码,同时也会检查 API 接口以对比速度和差异。目前,他们的 API 在本月剩余时间内似乎是免费的。

这款模型采用双架构设计:一个包含四十亿参数的慢速模式,以及一个仅四亿参数但速度极快的超级快速模式。它每步生成剩余的九个残差码本,从而实现细粒度的行内控制,包括停顿、重音、笑声和吸气等。实际上,它提供了多达一万五千种不同的选项供你实验。此外,它还支持多种语言。在服务器端,他们可能使用的是 H200 GPU,因此通过 API 运行推理代码会比本地快得多。

该模型的源代码已在 GitHub 上发布,我们可以下载并在本地运行。虽然模型权重是开源的,但采用的是研究许可协议,主要供用户实验、测试和玩耍。如果你喜欢他们的服务,可以考虑其商业选项。要在本地设置该模型,只需获取代码即可。你可以从 GitHub 下载 ZIP 包或通过 Git 克隆仓库。页面下方提供了安装指南,支持通过脚本、命令行界面、Web UI 或 Docker 环境运行。

你可以完全在沙盒化的 Docker 环境中运行它,只需按照说明安装 FFmpeg 等依赖项。创建一个 Python 虚拟环境并安装即可。如果你使用 Nvidia 显卡,需选择对应的 CUDA 版本;如果使用 Mac,它会自动利用图形卡加速,而非仅依赖 CPU。若没有显卡且仅限 CPU 环境,也可以安装 CPU 版本。默认情况下,使用 pip install -e . 命令即可完成设置。

首先需下载模型权重。我使用的是 Hugging Face 的命令行工具,虽然这是旧版方式(现在推荐 JF),但我将 Fish Audio S2 Pro 下载到了 checkpoints 文件夹,因为推理代码会在此处查找。接下来运行 python tools run web ui 命令启动服务。一旦启动,它会提供一个本地网页地址(如 127.0.0.1:7860)。这是一个美观的界面,你可以输入文本并点击生成。

查看活动监视器可以看到它确实在使用 Mac 的 GPU,无需额外配置即可自动加速。生成过程很快,“你好”这样的短句瞬间完成。你可以添加“兴奋”标签并重新生成,系统会显示预计耗时(约 9 秒)。生成的声音确实带有兴奋感。你还可以尝试“安静”或“耳语”等标签,效果相当有趣。此外,调整温度参数和种子值可以获得大量不同的语音变体,默认情况下每个提示词可产生十八千万亿种变化。

该模型还支持多说话人功能,你可以为不同角色设置特殊标签,如“兴奋”、“低沉嗓音”或“长停顿”。将温度设为 1.0 后点击生成,即可听到不同角色的对话。另一个亮点是支持参考音频输入:你只需录制 5 到 10 秒的声音作为参考 ID,系统便会使用该音色来重建语音。这需要一些时间处理,因此我们转去网站获取 API 密钥,以便利用他们免费开放的 H200 服务器资源。

在网站上,你可以看到文本转语音、创建声音、音效和音频分离等功能模块。开发者可以通过 Python 或 JavaScript 代码调用,但我将直接使用 curl 发送 HTTP 请求测试。点击“获取免费 API 密钥”并创建后,复制该长字符串并在终端中导出为环境变量。这样后续引用时只需使用美元符号即可简化命令。

让我们进行第一次测试,调用 S2.1 Pro 免费版本 API,并添加“兴奋”标签。生成几乎是瞬间完成的,这种速度足以支持实时语音应用效果极佳。生成的音频确实带有兴奋语气。如果移除该标签,声音则变得平淡自然。接下来我们将测试更复杂的提示词,以观察情绪动态变化的表现力,使用与本地运行相同的双说话人长文本进行对比。

短暂的停顿,然后笑了起来。“这绝对是个金矿。”说话者一、说话者二,还有这些很棒的功能。它就这样完成了。所以,我本地正在运行它,目前仍在生成中。没错,他们的服务器要快得多。是的,快很多。不过你知道的,至少你可以在本地测试一下,弄清楚你想用它来做什么。

“你绝对不敢相信我刚才在墙里发现了什么。”这是一个绝对的宝藏。“请告诉我,那不会是另一箱那些令人毛骨悚然的古董娃娃吧。”“啊,我今天实在太累了,没精力去应付鬼魂了。”“不、不、不。那是一个保险箱。”

就这样,它生成了一段很棒的动态语音。所以,我就等本地生成完成,然后我们做一个小小的对比。大概花了4分钟吧?我用的是我的MacBook Pro,所以有时候当你使用它太多时,风扇会狂转并拖慢一切。也许这就是为什么运行得有点慢的原因。所以,当我在Mac上本地运行时,它花了大约4分钟。也许等新款Mac发布时会更快,或者如果你在视频模式下运行会更快。但无论如何,目前的状态是本地运行花了4分钟。

而当我们使用云端时——我们将再次执行那个请求,只是为了强调一下。我们再运行一次,你可以看到只需几秒钟就完成了,而且整段语音听起来非常棒。就这样完成了。所以是本地4分钟,还是云端?让我们来听听效果吧。

“你绝对不敢相信我刚才在墙里发现了什么。”这是一个绝对的宝藏。“所以,是的,它包含了我们在这里定义的所有情绪范围:兴奋、短暂停顿。也许它漏掉了笑声,所以这只是需要注意的一点。”在线版本实际上包含了那个笑声。“你绝对不敢相信我刚才在墙里发现了什么。”[大笑]“所以我注意到的唯一一点是,也许本地生成漏掉了笑声标签,而在线API似乎捕捉到了它。但其他所有元素——呻吟、低沉声音和兴奋感——似乎都起作用了。”

所以,那可能只是代码中的一个小小bug,他们很快就会修复的。现在,我想尝试的是我的参考音频。之前我在做视频时,我记得发生了什么:有时麦克风会碰到我的脖子,当它碰到脖子时声音会变得沉闷且杂乱。所以我实际上不得不重新录制我视频中的配音。但我想看看AI能否替我做这件事。所以,我将只抓取我的声音——这不是Deep Sync People Flash,而是Deep Sync V4 Pro。

所以我将引用那段音频,然后我会说:“嘿各位,欢迎来到节目。”接着点击生成,看看会发生什么。它不会制作一个专业级的语音生成;它将使用我的声音来制作一个专业级的语音生成。显然,如果你给它更好的声音样本——我基本上只是在反复说Deep Sync——可能会做得更好,但让我们看看它在这里能做什么。正在生成中。系统建议本地制作这个生成需要80秒。

现在,作为对比,让我们看看当我们在云端执行此操作时,制作这个生成需要多长时间。所以我将在这里运行相同的代码,几秒钟内它应该就能完成这个生成。砰!甚至不到几秒。那超级快。所以基准是:“嘿各位,”“嘿各位,欢迎来到节目。你们好吗?我喜欢鱼。”那是没有声音克隆的情况。“现在,使用声音克隆后:”“嘿各位,欢迎来到节目。你们好吗?我喜欢鱼。”

这听起来更像我的声音,而且刚才使用起来超级简单。所以如果你感兴趣的话,去看看吧。它是Hugging Face上的S2 Pro Fish Audio,也在GitHub上:fish audio fish speech。关于该服务的更多细节,网址就是fish.audio。它是领先的文本转语音模型之一,提供声音克隆、多语言支持以及游戏NPC对话功能。你真的可以让你的游戏支持83种语言供你探索,并且它可用于我们的第三方生态系统。告诉我你们的想法吧。希望你们觉得这个视频有用并享受了节目。