AI语音助手开发:从语音识别到语音合成

17老师 · 2026-06-09 · 阅读约13分钟

← 返回博客列表

前言

构建一个完整的AI语音助手需要三个核心模块:语音识别(ASR)、大模型生成回复、语音合成(TTS)。本文介绍如何将它们串联成完整的语音交互系统。

一、语音识别:Whisper

1.1 本地部署Whisper

# 安装
pip install openai-whisper

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

# 模型对比
# tiny: 39M参数, 速度快, 准确度一般
# base: 74M参数, 平衡选择
# small: 244M参数, 准确度好
# medium: 769M参数, 准确度很好
# large: 1550M参数, 最准确, 最慢

1.2 使用OpenAI Whisper API

from openai import OpenAI
client = OpenAI()

with open("audio.mp3", "rb") as f:
    transcript = client.audio.transcriptions.create(
        model="whisper-1",
        file=f,
        language="zh"
    )
print(transcript.text)

二、语音合成:Edge-TTS

2.1 Edge-TTS(免费方案)

import edge_tts
import asyncio

async def text_to_speech(text, output_file, voice="zh-CN-XiaoxiaoNeural"):
    communicate = edge_tts.Communicate(text, voice)
    await communicate.save(output_file)

# 可用中文语音
# zh-CN-XiaoxiaoNeural - 女声, 温柔
# zh-CN-YunxiNeural - 男声, 年轻
# zh-CN-YunjianNeural - 男声, 成熟
# zh-CN-XiaoyiNeural - 女声, 活泼

asyncio.run(text_to_speech("你好,我是AI助手", "output.mp3"))

2.2 ElevenLabs(高质量方案)

import elevenlabs
elevenlabs.set_api_key("your_api_key")

audio = elevenlabs.generate(
    text="Hello, I am your AI assistant.",
    voice="Rachel",
    model="eleven_multilingual_v2"
)
elevenlabs.save(audio, "output.mp3")

三、完整语音助手流程

# 完整流程
1. 麦克风录音 -> audio.wav
2. Whisper语音识别 -> "今天天气怎么样"
3. GPT生成回复 -> "今天北京晴,气温25度,适合外出"
4. Edge-TTS语音合成 -> reply.mp3
5. 播放回复音频

# 完整代码
import whisper, edge_tts, asyncio, openai

# 识别
model = whisper.load_model("base")
result = model.transcribe("input.wav", language="zh")
user_text = result["text"]

# 生成回复
response = openai.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role":"user","content":user_text}]
)
reply_text = response.choices[0].message.content

# 合成语音
async def synthesize():
    c = edge_tts.Communicate(reply_text, "zh-CN-XiaoxiaoNeural")
    await c.save("reply.mp3")
asyncio.run(synthesize())

四、WebSocket实时语音对话

# 使用WebSocket实现实时语音对话
import websockets
import json

async def voice_handler(websocket):
    async for message in websocket:
        # 接收音频数据
        audio_data = message
        
        # 识别
        text = recognize(audio_data)
        
        # 生成回复
        reply = await generate_reply(text)
        
        # 合成语音
        audio = await synthesize(reply)
        
        # 发送回复音频
        await websocket.send(audio)

# 启动WebSocket服务器
async def main():
    async with websockets.serve(voice_handler, "0.0.0.0", 8765):
        await asyncio.Future()

asyncio.run(main())

五、性能优化

优化建议:
  • 流式识别:使用Whisper的streaming模式,边录音边识别
  • VAD检测:使用WebRTC VAD检测语音段,避免处理静音
  • 异步处理:识别、生成、合成三步并行
  • 模型缓存:预加载模型到内存,避免每次加载

总结

AI语音助手的核心是ASR+LLM+TTS三件套。Whisper负责语音识别,GPT负责生成回复,Edge-TTS/ElevenLabs负责语音合成。掌握这三个模块,就可以构建各种语音交互应用。

如果需要语音助手开发服务,欢迎联系17老师。

关于17老师:AI应用 · 数字化管理 · 全栈开发 · 网络安全全栈专家。联系邮箱:j.d88888888@qq.com,微信:AFIST17
上一篇
AI图像生成实战
下一篇
AI数据分析