语音 AI 助手构建指南:2026年 OpenAI Realtime API / Whisper / Fish Audio 实战

用语音与 AI 交互,是 2026 年最自然的使用方式。OpenAI 的 Realtime API 让构建语音助手变得前所未有的简单。本文从零开始,手把手教你用 Realtime API + 前端框架打造一个低延迟语音 AI 助手。

💡 核心技术栈:OpenAI Realtime API(语音对话)+ Whisper(语音识别)+ Fish Audio / OpenAI TTS(语音合成)。这套组合延迟可低于 1 秒,体验接近真人对话。

OpenAI Realtime API 是什么?

Realtime API 是 OpenAI 2025 年推出的 WebSocket 实时语音对话 API,支持 GPT-4o 的实时语音交互。与传统的 STT → LLM → TTS 三步走不同,Realtime API 原生支持语音输入输出,延迟更低。

核心技术对比

技术功能延迟价格备注
Realtime API端到端语音对话⭐⭐⭐⭐⭐¥18/1M 输入最新方案
Whisper API语音→文字⭐⭐⭐¥0.7/分钟最成熟
Fish Audio文字→语音⭐⭐⭐⭐免费(开源)中文效果好

前端实现(Vue 3 示例)

<!-- Vue 3 语音助手组件 -->
<template>
  <div class="voice-assistant">
    <button @click="toggleRecording" :class="{ recording: isRecording }">
      {{ isRecording ? '🔴 录音中...' : '🎤 开始对话' }}
    </button>
    <div v-if="transcript" class="transcript">{{ transcript }}</div>
    <div v-if="response" class="response">{{ response }}</div>
  </div>
</template>

<script setup>
import { ref, onUnmounted } from 'vue'

const isRecording = ref(false)
const transcript = ref('')
const response = ref('')
let mediaRecorder = null
let audioContext = null

async function toggleRecording() {
  if (isRecording.value) {
    stopRecording()
  } else {
    await startRecording()
  }
}

async function startRecording() {
  const stream = await navigator.mediaDevices.getUserMedia({ audio: true })
  mediaRecorder = new MediaRecorder(stream)

  // 使用 HolySheep Realtime API(WebSocket)
  const ws = new WebSocket('wss://api.holysheep.ai/v1/realtime?model=gpt-4o')

  ws.onopen = () => {
    isRecording.value = true
    // 音频数据通过 MediaRecorder 实时发送
    mediaRecorder.ondataavailable = (e) => {
      if (e.data.size > 0) {
        ws.send(e.data)
      }
    }
    mediaRecorder.start(100) // 每 100ms 发送一次
  }

  ws.onmessage = (event) => {
    const data = JSON.parse(event.data)
    if (data.type === 'text') {
      response.value = data.content
    }
    if (data.type === 'audio') {
      playAudio(data.content) // 播放 AI 语音回复
    }
  }

  ws.onerror = (err) => console.error('WebSocket error:', err)
}

function stopRecording() {
  if (mediaRecorder) mediaRecorder.stop()
  if (ws) ws.close()
  isRecording.value = false
}

// 音频播放
function playAudio(base64Audio) {
  const audio = new Audio(`data:audio/mp3;base64,${base64Audio}`)
  audio.play()
}

onUnmounted(() => stopRecording())
</script>

后端实现(Python FastAPI)

# pip install fastapi uvicorn openai websockets

from fastapi import FastAPI, WebSocket
from fastapi.middleware.cors import CORSMiddleware
import openai
import base64

app = FastAPI()
app.add_middleware(CORSMiddleware, allow_origins=["*"])

# 配置 HolySheep API
client = openai.OpenAI(
    api_key="sk-holysheep-xxx",
    base_url="https://api.holysheep.ai/v1"
)

@app.websocket("/ws/voice")
async def voice_websocket(websocket: WebSocket):
    await websocket.accept()

    try:
        # 创建 Realtime 会话
        session = client.chat.completions.create(
            model="gpt-4o-realtime-preview",
            modalities=["text", "audio"],
            audio={"voice": "alloy", "format": "mp3"},
            messages=[{
                "role": "system",
                "content": "你是一个友好的 AI 语音助手,请用简洁的语言回答。"
            }]
        )

        async for chunk in session:
            if chunk.type == "audio":
                await websocket.send_json({
                    "type": "audio",
                    "content": base64.b64encode(chunk.audio).decode()
                })
            elif chunk.type == "text":
                await websocket.send_json({
                    "type": "text",
                    "content": chunk.text
                })
    except Exception as e:
        print(f"Error: {e}")
    finally:
        await websocket.close()

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

Whisper 语音识别独立使用

import openai

client = openai.OpenAI(
    api_key="sk-holysheep-xxx",
    base_url="https://api.holysheep.ai/v1"
)

# 音频文件转文字
with open("recording.mp3", "rb") as audio_file:
    transcript = client.audio.transcriptions.create(
        model="whisper-1",
        file=audio_file,
        response_format="text"
    )
    print(f"识别结果:{transcript.text}")

Fish Audio 中文语音合成

# Fish Audio 是开源中文 TTS,支持本地部署
# 安装:pip install fish_audio_sdk

from fish_audio import FishSpeech

model = FishSpeech("fish-speech-1.4")

text = "你好,我是你的 AI 语音助手,有什么可以帮助你的吗?"
audio_data = model.generate(text, voice="female_zh")

# 保存为音频文件
with open("output.mp3", "wb") as f:
    f.write(audio_data)

完整架构图

用户说话
    ↓
麦克风采集(MediaRecorder)
    ↓
WebSocket 实时发送音频
    ↓
HolySheep Realtime API(GPT-4o)
    ↓
WebSocket 实时接收音频 + 文字回复
    ↓
前端播放音频 + 显示文字
👉 HolySheep API:¥1/$1 · Realtime API / Whisper / TTS 全支持
微信/支付宝 · 国内直连 · OpenAI-Compatible