Supertonic 3 音色:自定义音色的来源与使用方法
Supertonic 3 是一个能在普通电脑上运行的小型开放语音合成模型。它自带 10 个预设音色,其他任何音色都是你自己添加的一个小文件。有了这个文件,就能在自己的 CPU 或显卡上离线生成模型所支持的 31 种语言中任意一种的语音。
本指南介绍 Supertonic 3 音色是什么、在原 Supertonic 项目已归档的情况下去哪里获取自定义音色,以及如何在官方代码、SuperClonica 引擎和 Docker 中使用音色。SuperClonica 出售并训练此类音色,凡涉及我们自己的服务都会注明。请注意:Supertonic 3 目前不支持中文语音。
什么是 Supertonic 3 音色
Supertonic 3 音色是一种音色风格(voice style):一个约 0.3 MB 的 JSON 文件,里面有两组很小的数字。一组决定音色和说话方式,另一组决定语速和停顿。模型本身约为 385 MB 的 ONNX 文件,所有音色共用,只需下载一次。
由于音色与模型分开,切换音色几乎没有成本:同一套安装可以使用你传入的任何音色文件。一个音色可用于模型支持的所有语言,从英语、西班牙语、德语到俄语、日语、韩语、阿拉伯语和印地语。用制作它的录音所使用的语言说话时最自然。中文不在这 31 种语言之中。
去哪里获取 Supertonic 3 音色
M1 至 M5 和 F1 至 F5 这 10 个预设音色随模型提供。其他音色有以下几个来源。
- GitHub 上的免费音色:superclonica/supertonic-voices 仓库提供免费音色文件,并附有 9 种语言的试听样本。
- SuperClonica 音色目录:170 多个音色,包括游戏和动画角色、旁白,以及男声、女声和童声。每个音色页面都有演示,还能在线免费合成一句简短的话;免费音色无需账号即可下载,付费音色一次购买即可。
- 定制音色:在定制页面描述你想要的音色并附上录音,作者会为你训练。
- 你自己的声音:SuperClonica 可以用一段简短清晰的录音,在你自己的 NVIDIA 显卡上免费训练音色(使用我们的 worker 程序)。
- Supertone 原有的自定义音色服务 Voice Builder 不在归档项目之内,因此已无法再在那里制作新音色。
在官方 Supertonic 代码中使用音色
归档的 Supertonic 仓库仍然可以使用。克隆仓库,创建 Python 3.11 虚拟环境,安装 huggingface_hub,然后用 hf download supertone-oss-archive/supertonic-3 --local-dir assets 把模型下载到 assets 文件夹(项目的快速入门中固定了确切的版本)。接着安装 py/requirements.txt 中的依赖。
要用自定义音色说话,在 py 文件夹中运行示例脚本并传入音色文件:python example_onnx.py --voice-style ./voice.json --text "Your text here" --lang en --n-test 1。WAV 文件会出现在 results 文件夹中。换成其他语言时修改 --lang,例如 ja 或 ko。
在 SuperClonica 引擎中使用音色
SuperClonica 是我们基于 Supertonic 3 的引擎。它无需转换即可读取同样的音色文件,按我们的测试,在 CPU 上平均快 61%,在显卡上快 73%;它还会去除模型在词与词之间的底噪,并把数字读成文字。
安装一个软件包:python -m pip install superclonica-cpu,NVIDIA 显卡则安装 superclonica-gpu-cuda。在 Python 中创建一次引擎,调用 tts.synthesize("Hello!", voice="voice.json", lang="en", seed=7),再用 tts.save("hello.wav", audio) 保存。命令行用法:superclonica --text "Hello!" --voice voice.json --lang en --output hello.wav。基础模型会在首次运行时下载。
在 Docker 中使用音色
Docker Hub 上的 superclonica/superclonica 镜像把引擎作为 HTTP 服务器运行:docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu;使用 NVIDIA 显卡时用 cuda 标签并加上 --gpus all。
发送到 POST /synthesize 的请求包含文本、语言和音色:音色 JSON 的内容直接放进请求里。由于音色约为 0.3 MB,最好把请求写进文件,再用 curl -d @request.json 发送。返回结果是 16 位 WAV。
获得好效果的小技巧
养成几个习惯,就能让音色发挥最佳效果。
- 填写文本的语言,而不是音色的语言:俄语音色朗读英文文本时用 lang=en。
- 满意某次结果时固定随机种子(seed):同样的文本、音色和种子会再次得到同样的音频。
- 使用官方代码时,把数字、日期和缩写写成希望读出的样子;SuperClonica 引擎会自动把数字读成文字。
- 把长文本分成段落。SuperClonica 引擎会自动这样做,把长文本分成短片段朗读,减少词语重复或被截断。
- 购买前先听演示:音色会保留其录音的特点,包括口音。
真人声音与模型规则
目录中的部分音色受到知名人物的启发。它们不是本人的真实声音,本人也没有参与,因此不要把这类音频当作本人的真实话语。
Supertonic 3 以 BigScience Open RAIL-M 许可证发布,其使用限制适用于所有音色:不要在未经同意的情况下用语音冒充他人,不要用来欺骗或骚扰他人,并在必要时说明音频由机器生成。