Skip to main content

aichat_sdk

一个语音对话 SDK。用户对着麦克风说话,SDK 负责听懂(语音识别)、想清楚(大模型 + 工具)、说出来(语音合成),宿主程序只需要把声音收进来、把声音放出去。

它能做什么

  • 像人一样聊天:回复是口语、短句,不念标题、不念符号,适合直接朗读;用户随时插话就能打断
  • 会查东西:天气、笑话、联网搜索(微博、搜狗,不用配 key),还能按需接入外部 MCP 工具
  • 会用技能:读取本机 ~/.agents/skills 下的技能说明,按里面的指引一步步执行命令,比如查飞书群聊、发消息、看日程
  • 会放音乐:本地曲库点歌,边放边推歌词
  • 知道时间和地点:公历、农历、临近节日、用户所在城市,都会告诉模型
  • 自己结束对话:聊完了或者空闲太久,会说句再见然后关会话

它是怎么工作的

整条链路是一根事件驱动的流水线:

  1. 听:麦克风的声音通过 WebSocket 送到独立的 ASR 服务(单独的 asr_server 仓库,识别、断句、声纹都在那边),识别结果回到 SDK
  2. 想:识别出的文字交给大模型。模型可以直接回答,也可以先调工具、读技能、执行命令,拿到结果再回答;整个过程流式进行,第一个字出来就开始往下传
  3. 说:模型每吐出一点文字就喂给语音合成,合成出的音频编成 Opus 包排进队列
  4. 播:宿主从队列里按顺序取消息——识别结果、工具调用、每句话的开始和结束、音频包、歌词、结束信号——自己解码播放

有一条必须遵守的约定:收到音频就把麦克风静音,收到「音频播完」再恢复拾音,否则机器会听见自己说话。

大模型这一层

  • 支持任何 OpenAI 兼容的接口,实际用过 DeepSeek 和通义千问
  • 系统提示词是模板生成的,把角色人设、当前日期、用户位置、可用技能清单一起注入;提示词专门为语音场景写,要求模型说人话、说短话
  • 思考模式按需开关:用户刚说完话的第一次调用不开思考,保证回得快;一旦调过工具,后面的调用就打开思考,让推理过程走单独的通道、不会被念出来(AgentInfo.tool_thinking 可关掉,网页控制台上也有对应勾选框)。这么做是因为某些模型关掉思考后会把「让我先看看」这类内心独白直接写进回复,提示词管不住
  • 推理内容会保存在对话记录里,web 页面上折叠显示,方便排查模型为什么这么答

语音合成

  • 字节跳动(默认):服务端双向流式,逐字喂进去就出声,延迟最低
  • 微软 Edge:免 key,按标点切成小段并发请求,段短所以首包也快

两种引擎输出格式一致,切换只需要改一个参数。

怎么试

  • 配好 .env:大模型的地址、模型名和 key;用字节 TTS 的话再加它的 App ID 和 Key;ASR 服务地址不改就用默认的本机端口
  • 先把 asr_server 跑起来
  • 有麦克风和扬声器就运行 tests/test_run_v2.py 直接对话;没有麦克风就运行 tests/test_run.py,它在代码里塞了两句话进去
  • 想边聊边改配置,运行 examples/web/main.py,浏览器打开本机 8080 端口:可以换模型、换音色、改人设、开关工具、配外部 MCP,保存后立即生效;页面上还能实时看到每一轮对话、工具调用和模型的思考内容,每轮聊完会自动存一份完整记录

给开发者

要改代码,先看 AGENTS.md:队列和事件的实现细节、MCP 工具怎么注册注销、TTS 会话的生命周期限制、各种踩过的坑都记在那里。

Release files for aichat-sdk 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aichat-sdk 0.1.0
File Size Uploaded
aichat_sdk-0.1.0.tar.gz 4.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for aichat-sdk 0.1.0
File Interpreter ABI Platform
aichat_sdk-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 9.6 MB

Release files / aichat_sdk-0.1.0.tar.gz

Download URL aichat_sdk-0.1.0.tar.gz
Size 4.8 MB
Tags Source
SHA-256 checksum
How to use checksums
4065ced13d55ee7d76a0ba249f971a1684779b9dfb07d264ae47f5eb1462b7e3
BLAKE2b-256 checksum
How to use checksums
fc1312f25b8d7972660d419c32106d5204a9c4211e855976c752acf20061f664
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.7

Release files / aichat_sdk-0.1.0-py3-none-any.whl

Download URL aichat_sdk-0.1.0-py3-none-any.whl
Size 4.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
4619b23c544bfc804f22a9e50c52baf20cd4b2044f48258555404312dfea88c3
BLAKE2b-256 checksum
How to use checksums
3b5b240917dafc4190d7f934135ddca159d96972e68f4fe715718288dd6ee23a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.7

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page