智能语音对话系统实践指南

本文提供一个项目示例代码,旨在演示如何集成 ASR(自动语音识别)、LLM(大语言模型)和 TTS(语音合成)三大核心能力,构建智能语音对话系统。

准备环境和代码

请先在本地或开发服务器上完成环境准备和项目示例代码获取。

重要

本项目要求 Python 3.10 或更高版本。

  1. 下载项目示例代码ALTDemo.zip解压后使用。文件结构如下:

    ALTDemo/
    ├── asset/                    # 资源文件目录
    │   ├── test.crt             # [可选] 用于本地 HTTPS 的自签名 SSL 证书
    │   ├── test.key             # [可选] 用于本地 HTTPS 的自签名 SSL 密钥
    │   └── test.wav             # 测试音频文件
    ├── api_server.py            # API 服务 (基于 FastAPI)
    ├── config.py                # 配置文件
    ├── engine.py                # 核心引擎 (封装 ASR/LLM/TTS 调用)
    ├── http_stream.py           # API 调用示例脚本
    ├── utils.py                 # 工具函数
    ├── webui.py                 # Web UI 界面 (基于 Gradio)
    ├── requirements.txt         # Python 依赖包列表
    └── README.md                # 项目说明文档
  2. 安装 Python 依赖。在项目根目录下执行以下命令:

    pip install -r requirements.txt

一、部署云端依赖服务 (PAI-EAS)

本系统依赖的三个核心模型服务均通过模型在线服务 (PAI-EAS) 进行部署。

1.1 部署 ASR 服务 (Paraformer)

此服务用于将用户的语音输入转换为文本。

  1. 登录PAI控制台在左侧导航栏单击Model Gallery

  2. 模型广场搜索speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch,单击模型卡片右下角的部署,使用默认配置进行部署。image

  3. 等待约10分钟,服务状态变为运行中,即部署成功。

1.2 部署 LLM 服务 (Qwen3-14B-FP8)

此服务用于理解文本并生成智能回复。

  1. 返回模型广场,搜索 Qwen3-14B-FP8,使用默认配置进行部署。

  2. 等待约5分钟,服务状态变为运行中,即部署成功。

1.3 部署 TTS 服务 (CosyVoice)

此服务用于将 LLM 生成的文本合成为语音。

推荐使用EAS的场景化部署,参见快速部署Frontend/Backend分离式高性能服务

二、配置本地项目

查看上一步部署服务的调用信息,并配置到config.py中。

2.1 查看调用信息

推理服务页签,单击目标服务名称进入概览页面,在基本信息区域单击查看调用信息

image

2.2 配置config.py

编辑 config.py 文件,配置为步骤一部署的3个服务的调用地址和Token。

# 1. ASR 服务 (语音识别)
# 格式:从 PAI-EAS 服务详情页复制的“公网调用地址”,需要以 / 结尾
ASR_BASE_URL = "http://your-asr-service.cn-hangzhou.pai-eas.aliyuncs.com/"
ASR_API_KEY = "your_asr_api_key_here"

# 2. LLM 服务 (大语言模型)
# 格式:从 PAI-EAS 服务详情页复制的“公网调用地址”,并拼接上/v1
LLM_BASE_URL = "http://your-llm-service.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/your-service-name/v1"
LLM_API_KEY = "your_llm_api_key_here"
# LLM 系统提示词,用于设定机器人的角色和回复风格
LLM_GUIDE = "你是一个聊天机器人, 跟我聊天, 但是不能超过50字"

# 3. TTS 服务 (语音合成)
# 格式:从 PAI-EAS 服务详情页复制的“公网调用地址”
TTS_BASE_URL = "http://your-tts-service.cn-hangzhou.pai-eas.aliyuncs.com"
TTS_API_KEY = "your_tts_api_key_here"
# TTS 语音合成参数
TTS_REFERENCE_AUDIO_ID = ""      # 音色克隆参考音频 ID

三、体验与集成

通过 Web UI 进行语音对话

  1. 启动 Web UI 服务。在项目根目录下执行以下命令:

    python3 webui.py --ssl --port 7860

    启动参数说明:

    • --ssl:启用 HTTPS(需要 asset/test.crtasset/test.key 证书文件)

    • --port:指定服务端口

  2. 启动成功后,在浏览器中访问 https://localhost:7860/(若在本地运行)或 https://[您的服务器公网IP]:7860/(若部署在服务器上)。

    说明

    使用自签名证书,浏览器会提示安全警告,选择继续访问即可。

  3. 点击录制开始录音,说出您想对话的内容,然后点击停止。系统将自动完成后续流程:

    • 语音输入文本会显示在 ASR Result 文本框中。

    • 大模型的回复会以流式方式显示在 LLM Result 文本框中。

    • 回复的语音将自动播放。

    image

通过 API 集成语音能力

  1. 启动API服务。

    uvicorn api_server:app --host 0.0.0.0 --port 10000
  2. 调用示例:

    curl

    curl -XPOST http://127.0.0.1:10000/process_alt \
    --form 'file=@"asset/test.wav"' \
    --form "metadata={\"format\": \"mp3\", \"sample_rate\": 32000};type=application/json"

    Python

    项目中提供了 http_stream.py 示例脚本:

    python3 http_stream.py

    脚本执行后会:

    1. asset/test.wav 发送到 API 服务

    2. 接收流式音频响应

    3. 保存为 http_stream.mp3 文件

资源清理

为避免产生不必要的费用,实验结束后请务必清理所有云端服务。

  1. 登录 PAI-EAS 控制台

  2. 找到您为本项目创建的三个服务(ASR, LLM, TTS)。

  3. 对每个服务分别执行停止删除操作。

    • 停止:服务将暂停,计算资源会释放,不再计费,但服务配置会保留,可以快速重启。

    • 删除:服务将被彻底移除,无法恢复。

联系我们

如果您在使用过程中有任何问题,请通过搜索钉钉群号(161765003163)进群咨询。