AiHummer
中文
登录帐户
v1.3.x
{ }Swagger

语音输入输出(语音转文本 / 文本转语音)

v1.3.x · 已更新 2026-09-15

AiHummer 车把手 箱内的语音输入和语音输出 — 无需付费的语音 API。传入的音频片段会被转录(STT),文本驱动正常的代理回合,答案会被语音输出(TTS)。两个引擎都 免费且本地 并作为 边车: 使用 faster-whisper 进行转录,使用 edge-tts 进行合成。

声音转换是如何工作的

语音通话是指双方都有音频的普通代理通话:

  1. 网关将入站音频发送到 STT 辅助容器 (:8001, faster-whisper) 并返回文本。
  2. 该文本驱动了通常的函数调用回合——相同的路由器,协调器, 将工具和记忆作为短信。
  3. 回复文本已发送到 TTS 辅助程序 (:8002,edge-tts)和 口语音频会返回给呼叫者。

这是作为单一端点暴露的, POST /v1/voice/turn因此,通道或客户端可以传递音频并接收音频,而无需自行协调步骤。

端点

方法 终端 目的
POST /v1/voice/turn 音频输入 → 代理回合 → 音频输出
GET /v1/voice/config 当前语音配置(引擎、调节旋钮)
POST /v1/voice/turn HTTP/1.1
Host: localhost:8780
Content-Type: application/json

{
  "audio": "<base64-encoded clip>",
  "format": "wav"
}

[!NOTE] 语音特征是……的一部分 核心 — 它们不绑定到 SIP 插件。 SIP 通道为其使用相同的 STT/TTS 引擎 local 引擎,但声音 对于任何调用的客户端,进/出均可使用 /v1/voice/turn.

语音边车

港口 边车 发动机 角色 连接有
8001 语音转文字 更快的耳语 语音 → 文本 AIHUMMER_STT_URL
8002 文字转语音 edge-tts 文本 → 语音 AIHUMMER_TTS_URL

两个引擎都是免费的并且是本地的:没有任何数据发送给付费语音供应商。和每个旁路一样,网关可以访问它们 通过 URL,这样你就可以在网关旁运行它们,或者指向一个共享实例。

布线

本地主机安装程序会为您设置STT和TTS的URL。它们是 目录设置 — 从管理员界面更改它们 (管理 → 设置) 或者与 aihummer settings set; gateway.env 仅适用于 Bootstrap,并在以下情况下被忽略:

# Voice in/out (auto-configured by the installer)
aihummer settings set AIHUMMER_STT_URL http://127.0.0.1:8001
aihummer settings set AIHUMMER_TTS_URL http://127.0.0.1:8002

[!TIP] 因为每个边车只是一个 URL,多个网关可以共享一个 STT/TTS 例子。集中较重的语音服务,而不是为每个副本运行一份 主持人。

调节音频路径

音质调节旋钮位于 媒体 · 声音 设置组,可以从网页管理员界面配置——无需重新部署。它们涵盖实时音频路径:

旋钮 它控制什么
双工 全双工(边说边听)与半双工
建筑工程与施工 声学回声消除
噪声抑制 在语音转文字之前过滤背景噪音
自动增益控制 自动增益控制(电平归一化)
VAD 阈值 语音活动检测灵敏度
打断 让呼叫者在代理回答中途打断

GET /v1/voice/config 返回有效的配置,以便客户端能够发现活动的引擎及其设置。

自动语音回复

何时朗读完成的回复由 「Media · Voice」 组的三个设置决定(Web 界面 → 管理 → 设置):

设置 取值
自动语音回复 AIHUMMER_TTS_AUTO_REPLY off——从不;always——总是;inbound(默认)——仅在回应传入音频时;tagged——由智能体显式标记为语音时
朗读字符数上限 AIHUMMER_TTS_MAX_CHARS 0(默认)——朗读完整回复;10010000——朗读文本的上限
摘要长语音回复 AIHUMMER_TTS_SUMMARIZE 默认开启:长回复由模型缩短到上限;模型不可用时朗读文本开头

无论哪种模式,回复的完整文本都保留在对话历史中。off 只关闭自动朗读——通过 tts 工具的显式合成请求仍然可用。

对于单个对话,智能体可以应对话方要求,用 voice_preferences(读取生效值)和 set_voice_preferences(设置 automax_charssummarize;空对象恢复实例默认值)工具覆盖这些值。只有对话参与者才能写入。语音输出会采用网关启动后才接入的提供商,并遵循具体用户的设置。

接下来去哪儿