Skip to content

STAR0903/chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

语音对话系统

基于 Go 语言和腾讯云 API 实现的语音交互原型,支持通过 TCP 协议进行音频收发,完成“语音识别→AI 对话→语音合成”的闭环流程,适用于单客户端场景下的语音交互演示(如面向老年人的暖心语音服务)。

这个项目是为了演示与硬件连接效果而生的简单产物,并不成熟。还存在多客户端隔离、密钥安全管理、错误处理和资源释放等问题。

核心功能

  1. TCP 通信:监听指定端口(默认 8005),接收客户端音频数据并返回合成的语音回复。
  2. 语音识别:调用腾讯云 ASR API,将客户端发送的音频(WAV 格式)转换为文本。
  3. AI 对话:基于腾讯云混元大模型(hunyuan-role),结合角色设定和对话历史生成回复。
  4. 语音合成:调用腾讯云 TTS API,将 AI 回复文本转换为音频并返回给客户端。

快速开始

环境要求

  • Go 1.24+
  • 腾讯云账号(需开通 ASR、TTS、混元大模型服务)
  • 腾讯云 API 密钥(SecretId、SecretKey,需具备对应服务权限)

安装步骤

  1. 克隆仓库

    git clone https://github.com/STAR0903/chat
    cd chat
  2. 配置腾讯云密钥编辑 pkg/tencent.go,替换占位符为实际密钥:

    const (
        SecretId  = "你的腾讯云SecretId"
        SecretKey = "你的腾讯云SecretKey"
    )
  3. 安装依赖

    go mod tidy
  4. 启动服务

    go run main.go

    服务将在 0.0.0.0:8005 端口监听 TCP 连接。

代码结构

chat/
├── main.go           # 程序入口,TCP 连接管理与流程调度
├── data/
│   ├── set.txt       # AI 助手角色设定(身份、对话准则等)
│   ├── input.wav     # 临时存储客户端发送的音频
│   ├── output.wav    # 临时存储合成的回复音频
│   └── history.txt   # 对话历史记录(JSON 格式)
├── pkg/
│   ├── asr.go        # 腾讯云 ASR 语音识别实现
│   ├── llm.go        # 混元大模型对话逻辑(含历史记录管理)
│   ├── tencent.go    # 腾讯云 API 密钥配置
│   └── tts.go        # 腾讯云 TTS 语音合成实现
└── go.mod            # 项目依赖配置

使用说明

  1. 客户端连接:通过 TCP 工具(如 nc 或自定义客户端)连接服务端:

    nc 127.0.0.1 8005
  2. 发送音频:向连接发送 WAV 格式音频(16k 采样率、单声道,需与 ASR 引擎匹配)。

  3. 接收回复:服务端处理完成后,会返回合成的 WAV 音频回复。

限制

  • 单客户端支持:所有连接共享 data/ 目录下的临时文件(input.wavhistory.txt 等),多客户端同时连接会导致数据冲突。
  • 密钥管理:当前密钥硬编码在代码中,生产环境需改为环境变量或配置文件读取。
  • 错误处理:部分场景下错误处理不完善(如 API 调用失败可能导致程序崩溃)。
  • 音频格式限制:仅支持 16k 采样率中文音频,需客户端严格匹配格式。

About

一个基于go语言的简单语音交互的智能陪伴系统。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages