第22篇:语音合成——AI 开口说话
Hermes 功能详解第22篇:语音与 TTS。把文字变成语音,还能自定义音色和语速。
这篇教程将带你了解 Hermes Agent 的语音合成功能,教你怎么让 AI 在聊天里“开口说话”。
为什么需要语音?
想象一下,你在做饭时收到一条长消息,盯着屏幕读很麻烦。如果 AI 能直接把回复“说”出来,你一边炒菜一边听,是不是方便多了?Hermes Agent 内置了 11 种语音引擎,从免费到付费,任你挑选。
第1步:选一个“嗓子”
打开配置文件 ~/.hermes/config.yaml,找到 tts 部分。默认用的是 Edge TTS,完全免费、无需注册,效果也不错,适合新手体验。
想换更高级的声音?把 provider 改一下就行:
tts:
provider: "elevenlabs" # 换成 ElevenLabs,音质“天花板”
小提示:如果你有 Nous Portal 付费订阅,可以免费用 OpenAI TTS,不用单独申请 API Key。
第2步:配置你的“嗓子”
每种引擎都有自己的设置项。比如用 Edge TTS,可以选声音和语速:
tts:
provider: "edge"
edge:
voice: "zh-CN-XiaoxiaoNeural" # 中文女声,温柔好听
speed: 1.0 # 1.0 是正常语速,调大更快
用 Gemini TTS 的话,还能写“人设提示词”,让 AI 用特定语气说话。比如创建一个 butler-voice.md 文件,里面写“你是一位英国老管家,说话沉稳、礼貌”,然后:
tts:
provider: "gemini"
gemini:
voice: "Kore"
persona_prompt_file: "~/.hermes/tts/butler-voice.md"
AI 就会用管家的腔调回复你,很有趣。
第3步:测试一下
在 CLI 里直接发消息,AI 回复后,音频会保存到 ~/.hermes/audio_cache/ 文件夹。在 Telegram 或 Discord 里,AI 会直接发语音气泡,点一下就能听。
第4步:处理长文本
如果 AI 回复特别长,超过引擎的单次限制(比如 Edge 是 5000 字符),Hermes 会自动把文本切成几段,按顺序合成,不会丢内容。你不需要做任何事,它自己会搞定。
第5步:高级玩法(可选)
- 加音效标签:Gemini 3.1 和 xAI 支持在文本里加
[whispers]、[laughs]这样的标签,AI 会真的用气声说话或笑出来。开启方式:
tts:
gemini:
audio_tags: true
-
调语速:全局语速在
tts.speed设置,每个引擎可以单独覆盖。比如 OpenAI 想快一点,就写tts.openai.speed: 1.5。 -
流式播放的采样率:如果你用的是 OpenAI 兼容的第三方 TTS 服务,流式播放时收到的是没有头信息的裸 PCM,Hermes 得知道它的采样率才不会变调。官方 OpenAI 是 24kHz;如果服务端会在响应头里报采样率(
X-Audio-Sample-Rate,或Content-Type里的rate=),Hermes 会自动采用。什么都不报的服务端,就手动设一下tts.openai.pcm_sample_rate(比如 Piper 后端填22050),否则声音会变快变尖。 -
克隆音的授权声明:有些自建的 OpenAI 兼容服务端,用克隆音时会要求请求里带一个
consent_attestation字段,否则直接返回400 consent_required。把服务端要求的声明文本填到tts.openai.consent_attestation就行,Hermes 会原样转发。用官方 OpenAI API 的话不用管这一项。 -
本地引擎预热与卸载:Piper、KittenTTS 这类本地引擎是“懒加载”的——第一次说话时才去加载模型(全新安装还要先下载语音),所以开启语音后的第一句回复会先沉默一阵。Hermes 会把语音开关当作“马上要用 TTS”的信号:桌面端打开 Read replies aloud 或开始一次语音对话,CLI / TUI 里执行
/voice tts(以及设置了voice.auto_tts时的/voice on),都会在后台提前加载好引擎;把开关关掉则会卸载常驻模型(Piper 语音几十 MB,KittenTTS 最多约 80MB),不再白占内存。每个开关持有一份“租约”,只有所有界面的租约都释放后模型才会卸载,所以在一个桌面窗口关掉朗读,不会影响另一个窗口正在进行的对话。云端引擎没有模型可加载,开关只是确保按需安装的 SDK(edge-tts、ElevenLabs、Mistral)已经就位。预热是尽力而为的:加载失败也不影响开关本身,第一句回复会像以前一样按需加载。 -
本地模型下载走镜像:Piper、KittenTTS 这类本地引擎第一次用会从 Hugging Face 拉模型,之后优先用本地缓存,不再联网检查版本。如果你的网络访问不了 Hugging Face,可以在启动 Hermes 的 shell 或服务里导出镜像地址:
HF_ENDPOINT=https://your-hugging-face-mirror.example
HF_HUB_DISABLE_XET=1
HF_HUB_DISABLE_XET=1 是为了让下载走镜像的普通 HTTP 通道,而不是去连不认 HF_ENDPOINT 的 Xet 主机。
总结
让 AI 开口说话,只需三步:选引擎 → 配声音 → 发消息。免费方案足够日常使用,付费方案音质更惊艳。语音功能让 AI 从“屏幕里的文字”变成了“耳边的小伙伴”,互动感直接拉满。
下篇预告:AI 会说话了,那它能“听懂”我们说话吗?下一篇我们聊聊语音转文字——让 AI 听懂你的语音消息。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/features/tts