🤖HermesBlog
Hermes 功能详解 · 第22篇2026/8/9· Easy Understand Hermes Agent

第22篇:语音合成——AI 开口说话

Hermes 功能详解第22篇:语音与 TTS。把文字变成语音,还能自定义音色和语速。

这篇教程将带你了解 Hermes Agent 的语音合成功能,教你怎么让 AI 在聊天里“开口说话”。

语音合成: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