简单介绍
Spark - TTS 这个文本转语音大模型突然火起来了,我也跟风下载下来做了本地部署体验体验。
这是它的 github 地址。github.com/SparkAudio/...
官方介绍说了它的 4 个特点:
以上是官方自己的介绍。针对这个我说一下自己的感受。
-
简单而高效
这一点确实,下载部署安装确实够简单也不需要额外的折腾。完成后使用方式上,也提供了 web GUI 操作界面让用户快速体验,确实不错。
-
高质量的克隆
这一点非常的厉害,甚至是"惊艳"到了。(也可能是因为第一次体验这类零样本克隆声音的大模型,确实挺有冲击感)只要环境稍微安静点,仅仅送入 5 到 10 秒的音频,它克隆出来的声音确实非常接近真人。
-
双语支持
同时支持中文和英文。尤其是中文,感觉生成的音色要比英文的好听,自然很多。
-
可控的语音生成
它也内置了性别,语调,语速的控制入口, web GUI 操作界面就能快速体验到。
本地部署
按 github 上的操作步骤来:
第一步先克隆到本地
bash
git clone https://github.com/SparkAudio/Spark-TTS.git
cd Spark-TTS
第二步创建一个Conda 环境
这一步之前本地部署 DeepSeek 的时候已经安装过 Conda 直接过。(没有安装过的可以看这里www.anaconda.com/docs/gettin...)
ini
conda create -n sparktts -y python=3.12
然后激活环境
conda activate sparktts
接着安装依赖
ini
pip install -r requirements.txt
# 官方也考虑到了特殊情况,如果安装失败可以试试下面这种安装方式
# If you are in mainland China, you can set the mirror as follows:
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
第三步模型下载
可以使用Python代码方式
javascript
from huggingface_hub import snapshot_download
snapshot_download("SparkAudio/Spark-TTS-0.5B", local_dir="pretrained_models/Spark-TTS-0.5B")
不过我采用的是第二种git下载方式:
bash
mkdir -p pretrained_models
# Make sure you have git-lfs installed (https://git-lfs.com)
git lfs install
git clone https://huggingface.co/SparkAudio/Spark-TTS-0.5B pretrained_models/Spark-TTS-0.5B
(要是没有git lfs记得装一下。之后就是耐心等下载了)
第四步修改代码
修改webui.py文件,注释掉30行,用下面的代码替换掉。如图所示一行代码搞定。启动的时候从英伟达的N卡切到cpu模式。不过入参device也废了。。。
ini
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
完成这一步后从webui这里启动模型已经没问题了,但是会吐出来一个http://0.0.0.0:7860地址。使用体验不好,我本地是打不开这个地址的。需要从http://localhost:7860进入。如果想在改改地址可以修改下面这里:
同一个文件webui.py, 修改229行即可。
启动
css
python webui.py --device 0
这里特别说明一下我是因为想要快速体验,而且这种带UI操作界面的相对来说对外行也比较友好,所以只修改了webui.py文件。文档中还有另外两种使用方式,如果走其他方式启动,也得按上面的修改方式重新修改。
方式1,用这个sh脚本:
bash
cd example
bash infer.sh
方式2,命令行中跑:
css
python -m cli.inference \
--text "text to synthesis." \
--device 0 \
--save_dir "path/to/save/audio" \
--model_dir pretrained_models/Spark-TTS-0.5B \
--prompt_text "transcript of the prompt audio" \
--prompt_speech_path "path/to/prompt_audio"
体验
声音克隆
右上角这里可以直接录制声音,然后 text 部分输入要生成声音的文本,点 Generate 直接生成。
这里克隆了我自己和同事的声音,具体效果因为隐私问题就不放出来成品音频文件了。
说说效果,确实惊艳。克隆出来我自己的声音,我老妈是完全无法分辨。克隆同事的声音也是惟妙惟肖。
同时测试了一下它的克隆方言的效果,发现对它说方言好像不行。完全无法识别,没法有效提取声音的特征来进行声音克隆。此外录制声音时,办公室环境稍微嘈杂一点,它克隆出来的声音完全没有特征,听着很机械。
声音生成
内置了男声女声,pitch 音调高低。speed 速度的控制入口。
体验下来,个人觉得生成的中文效果比英文的要听着舒服、自然。
不过考虑到英文的语速一般比中文的要快,提高语速 speed=4 和 5 的时候效果会有所提升。
性能
Mac M4芯片机器。
css
Once when I was six years old I saw a magnificent1 picture in a book, called True Stories from Nature, about the primeval forest.
英文生成这一句平均 14 秒左右。cpu 消耗如下:
中文生成一句诗词,平均 12 秒左右。cpu 消耗相似。
(掘金好像不能上传 mp3 文件, 这是微信公众号文章地址:mp.weixin.qq.com/s/UGvPKAWqp... 这里有 mp3 文件。感兴趣的大佬可以点过去听听)
最后------安全问题
被它的效果惊艳到后,就想到了安全问题上。现在AI 的发展真的是太迅猛了,这种效果完全可以用在非法途径。大家也看到了,像我老妈这样的老人完全无法分辨(也可能跟她年纪大听力有所下降有关)。面对这种情况,后期我们在安全方面是不是也需要加强相应的策略。例如:
- 在大模型生成的音频文件中加入标签数据,或者什么"元数据",可以用大模型或者其他专用工具识别出来它是合成音,不是真人声音。
- 是否能在手机端集成反向对抗的 AI 模型,在通话过程中动态识别。如果识别出情况有异,直接在通话界面提示出来。
以上是一个 AI 外行的本地部署体验。此外再吐槽一下,好多大模型都是直接适配的英伟达 GPU,Mac 上想体验都要稍微改改。后续研究研究,会使用苹果 mps 后再做测试。