本地大模型与聊天机器人的文字转语音
通过 Ollama、llama.cpp 或 LM Studio 在自己电脑上运行的语言模型,能让对话保持私密。把它的回复发送到云端语音服务,就前功尽弃了。声音也应该在本地。请注意:Supertonic 3 暂不支持中文,可朗读英语、日语、韩语等 31 种语言。
SuperClonica 引擎可在普通处理器或 NVIDIA 显卡上离线朗读文字,既能从 Python 调用,也能作为小型 HTTP 服务运行。本指南介绍如何把它接到本地模型、如何缩短延迟,以及如何让回复读出来更自然。
本地语音助手如何组成
每个部分都可以单独替换:换个模型、换个声音,流程不变。
- 可选的语音识别(例如本地 Whisper 模型)把你的声音转成文字。
- 语言模型在本地写出回复。
- SuperClonica 把回复变成语音,同样在本地。
- 没有任何内容离开电脑,也不按字数或请求收费。
免费试听声音
写代码之前,先打开一个声音页面,输入一条 30 到 100 个字符的典型回复,选择语言并点击生成按钮。几秒后就能听到助手的效果,无需注册。
每句话一准备好就说出来
在我们的测试中,短句的中位耗时在 RTX 5070 Ti 上为 0.12 秒,在四线程的台式机 Ryzen 上为 0.43 秒。
- 安装一次引擎:python -m pip install superclonica-cpu,NVIDIA 显卡则用 superclonica-gpu-cuda。
- 只创建一次引擎并重复使用:tts = Superclonica()。加载需要几秒,之后每句只需不到一秒。
- 模型流式输出回复时,在句末切分并逐句朗读:audio, rate = tts.synthesize(sentence, voice="F1", lang="en")。
- 在生成下一句的同时播放当前这句,可用 sounddevice 等音频库,或保存文件再播放。
让回复读出来好听
模型喜欢用 Markdown 回答:星号、列表、表格和代码读出来很别扭。请在系统提示词中要求模型用简短、平实的口语句子回答,不要列表和格式,剩下的在朗读前删掉。引擎在大多数语言中会把数字读成单词,并自动清理表情符号和未知符号。如果程序不是用 Python 写的,可以把引擎作为本地 HTTP 服务运行(docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu),把每句话发送到 POST /synthesize;需要 OpenAI 兼容语音接口的工具则需要一个小适配器。
选择声音
模型自带的十个标准声音 M1–M5、F1–F5 随免费引擎提供,无需额外文件。想要有个性的个人助手,可以从目录中选一个声音,比如贾维斯的声音,先用一条典型回复试听。想用自己的声音或征得同意的家人的声音,可在配有 NVIDIA 显卡的电脑上用工作室训练,或在交易所下单。所有声音都支持 Supertonic 3 的 31 种语言,暂不支持中文。