Skip to content

语音交互

语音是人类最自然的交流方式,语音 Agent 是对话式 AI 的前沿方向。从传统的"语音转文字→LLM 处理→文字转语音"三段式流水线,到 GPT-4o Realtime API 的端到端语音模型,语音交互的技术正在快速演进。

语音识别 (STT)

语音识别(Speech-to-Text)将音频转换为文字,是语音 Agent 的输入端。Whisper 是 OpenAI 开源的语音识别模型,支持 99 种语言,在噪声环境下也有很好的鲁棒性。

python
import whisper

model = whisper.load_model("base")  # tiny/base/small/medium/large
result = model.transcribe("audio.mp3", language="zh")
print(result["text"])

Whisper 的模型规模从 tiny(39M 参数)到 large-v3(1.5B 参数),速度和准确率递增。实时场景用 tiny 或 base,离线高精度场景用 medium 或 large。Whisper 的局限性在于它只做语音识别,不理解语音的情感、语气、停顿等副语言信息,这些信息在对话中是有价值的。

实时语音识别需要流式处理——不等用户说完一整句话再识别,而是边说边识别,持续输出部分结果。这需要将音频按短片段(如 300ms)切分,用流式 Whisper 模型逐片段识别,部分结果持续更新。WebRTC 的 VAD(Voice Activity Detection)模块可以检测用户是否在说话,只在说话时发送音频数据,节省带宽。

语音合成 (TTS)

语音合成(Text-to-Speech)将文字转换为语音,是语音 Agent 的输出端。现代 TTS 系统能够生成接近真人的语音,支持多种音色、语速和情感表达。

python
from openai import OpenAI

client = OpenAI()
response = client.audio.speech.create(
    model="tts-1",
    voice="alloy",  # alloy/echo/fable/onyx/nova/shimmer
    input="你好,我是你的AI助手,有什么可以帮助你的吗?"
)
response.stream_to_file("output.mp3")

TTS 的关键技术指标是自然度(听起来像真人还是机器)、表现力(能否传达情感和语气)和实时性(生成速度是否跟得上对话节奏)。OpenAI 的 TTS 和 Azure 的神经语音 TTS 在自然度上已经接近真人水平。

Voice Cloning(语音克隆)是 TTS 的一个重要应用——只需几秒到几分钟的目标语音样本,就能生成该人声音的合成语音。这为个性化语音助手(用自己的声音做 AI 语音)和无障碍应用(为失声患者合成语音)提供了可能,但也带来了声音欺诈的风险,需要配合水印和鉴伪技术使用。

流式语音对话

传统的语音 Agent 是三段式流水线:用户说话 → STT 转文字 → LLM 生成回答 → TTS 转语音 → 播放给用户。这种模式的端到端延迟通常在 3-8 秒,用户说完话后需要等待较长时间才能听到回复,体验远不如人类对话。

延迟的主要来源:STT 处理(0.5-1 秒)+ LLM 推理(1-3 秒)+ TTS 合成(0.5-1 秒)+ 网络传输。优化方向是流水线并行——LLM 开始生成第一个 token 时,TTS 就开始合成第一句话的语音,用户边听边等后续内容,感知延迟降到 1-2 秒。

端到端语音模型

GPT-4o 的 Realtime API 代表了端到端语音模型的最新方向。它跳过了 STT→LLM→TTS 的流水线,直接接受音频输入并生成音频输出。这种端到端架构保留了语音中的副语言信息(语气、情感、停顿),AI 的回复也带有自然的语音特征,不再是机械的文字转语音。

端到端模型的工程挑战在于实时性。音频是连续的数据流,模型需要在用户说话的同时实时处理,在用户停止说话后快速(< 500ms)开始回复。这要求模型具备流式推理能力,以及对"用户说完"的实时判断(VAD 在端到端模型中的集成)。

工程实践

语音 Agent 的工程实现需要注意以下几点:

音频格式:服务端通常处理 WAV 或 PCM 格式(无损、无压缩延迟),客户端使用 Opus 或 AAC 压缩(节省带宽)。格式转换需要考虑采样率(16kHz 是语音的标准采样率)和声道数(单声道即可)。

VAD(语音活动检测):判断用户何时在说话、何时说完。WebRTC VAD 是最常用的方案,基于能量和频谱特征判断。Silero VAD 是基于深度学习的方案,准确率更高。

中断处理:用户可能在 AI 回复过程中插话。系统需要实时检测用户的语音输入,中断当前 TTS 播放,切换到听用户说话的模式。这种"可打断"的能力是自然对话的基本要求。

多轮对话状态:语音对话没有明确的"发送"按钮,需要通过 VAD 和静默检测判断对话轮次的切换。过短的静默(如思考停顿)不应触发轮次切换,过长的等待又会让用户觉得系统没有响应。通常 600-800ms 的静默被视为一轮结束的信号。