Linux 文字转语音:在终端里离线生成自然语音
在 Linux 上,文字转语音通常意味着 espeak 或 Festival:快速、免费,但声音像机器人。神经网络声音听起来像真人,但几乎都在云端。免费的 SuperClonica 引擎把神经网络模型 Supertonic 3 带到你的 Linux 电脑上:它在普通处理器上离线运行,能说 31 种语言。请注意:Supertonic 3 暂不支持中文。
本指南介绍如何在虚拟环境中安装、在终端生成语音、用键盘快捷键朗读选中的文字,以及如何选择声音。
需要什么
与 espeak 或 Festival 不同,这是神经网络模型,语音听起来很自然,而且首次运行后就不再需要网络。
- 装有 Python 3.10 或更高版本的较新 64 位 Linux 发行版。
- Supertonic 3 模型约需 400 MB 磁盘空间,只下载一次。
- 不需要显卡:NVIDIA 显卡只是让它更快。
- 声音:内置的十个声音 M1 到 M5、F1 到 F5,或目录中的 JSON 文件。
在虚拟环境中安装
很多发行版已不允许 pip 安装到系统 Python 中,所以请使用虚拟环境:python3 -m venv ~/.venvs/tts && ~/.venvs/tts/bin/python -m pip install superclonica-cpu。之后命令是 ~/.venvs/tts/bin/superclonica;把这个文件夹加入 PATH 或设置别名。有 NVIDIA 显卡时,改装 superclonica-gpu-cuda:pip 会自动安装 CUDA 和 cuDNN。
在终端生成语音
模型在首次运行时下载;之后引擎无需网络即可工作。
- 一句话:superclonica --text "Hello from Linux." --voice F1 --lang en --output hello.wav && aplay hello.wav。
- 整个文件:用 --text-file article.txt 代替 --text;长文本会在自然停顿处分段,再合成一个 WAV。
- 根据你的声音系统,用 aplay、paplay 或 pw-play 播放。
- 机器繁忙时,用 --threads 4 限制处理器线程数。
用快捷键朗读选中文字
保存一个小脚本,并在桌面设置中给它绑定快捷键:xclip -o > /tmp/sel.txt (Wayland 下用 wl-paste -p > /tmp/sel.txt),然后 superclonica --text-file /tmp/sel.txt --voice F1 --lang en --output /tmp/sel.wav && aplay /tmp/sel.wav。在任意窗口选中文字,按下快捷键,引擎就会朗读出来。要朗读其他语言,修改 --lang 和声音即可。
声音和服务器
SuperClonica 目录中的每个声音都有一个页面,可以免费在线生成 30 到 100 个字符的句子。免费声音无需注册即可下载,付费声音一次购买后就以 JSON 文件的形式归你所有,用 --voice 传入。如需给网络中的其他程序使用,Docker Hub 上的 superclonica/superclonica 镜像会把同一引擎作为 HTTP 服务器运行。