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 页面上折叠显示,方便排查模型为什么这么答

语音合成

  • 字节跳动(默认):服务端双向流式,逐字喂进去就出声,延迟最低;tts_engine="bytedancev1"(默认,简写 v1)或 "bytedancev2"(简写 v2)
  • 微软 Edge:免 key,按标点切成小段并发请求,段短所以首包也快
  • 小米 MiMo:tts_engine="mimo",使用 mimo-v2.5-tts 预置音色,按标点分段请求、逐段流式输出 24kHz PCM,支持插话打断

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

从 0.1.0 升级到 0.1.1 时,原 bytedance、v2、bytedancev2 配置改用 bytedancev1(简写 v1);原 v3、bytedancev3 改用 bytedancev2(简写 v2)。直接导入 TTS 模块时也需同步调整路径,旧 tts/bytedance/ 实现已删除。默认引擎仍使用原来的实现。

可通过 from aichat_sdk import get_tts_engines 查询 SDK 支持的引擎,返回每个引擎的 name、label、aliases 和 default。查询目录无需配置密钥,也不会加载各引擎依赖或发起连接;web 配置台的下拉选项和配置校验均使用该目录。

使用 MiMo TTS

按 MiMo 官方文档 获取 API Key,在环境变量或 .env 中配置:

MIMO_API_KEY=你的小米MiMo密钥
MIMO_TTS_VOICE=mimo_default
# 可选:语气、语速等自然语言指令,不会被朗读
MIMO_TTS_INSTRUCTIONS=用自然、温柔的语气说话
# 可选,默认地址如下
MIMO_BASE_URL=https://api.xiaomimimo.com/v1

使用 .env 时,在导入 SDK 前加载配置(web 配置台已自动加载):

from dotenv import load_dotenv

load_dotenv()
from aichat_sdk import ChatBot

chat_bot = ChatBot(tts_engine="mimo")

其余初始化、拾音和队列播放流程与现有示例相同;web 配置台也可直接选择 mimo。MIMO_API_KEY 独立于聊天模型的 OPENAI_API_KEY。音色默认 mimo_default,可改为 冰糖、茉莉、苏打、白桦 等预置音色。

MiMo 每次请求接收一段完整文本;SDK 在逗号、句号等停顿处发起请求,段内边收音频边推送,结束时补发未带标点的尾句。当前接入预置音色合成,音色设计和音色克隆模型尚未接入。

怎么试

  • 配好 .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.1

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.1
File Size Uploaded
aichat_sdk-0.1.1.tar.gz 4.8 MB Details

Built distribution (wheel)

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

Total release size: 9.6 MB

Release files / aichat_sdk-0.1.1.tar.gz

Download URL aichat_sdk-0.1.1.tar.gz
Size 4.8 MB
Tags Source
SHA-256 checksum
How to use checksums
038509e3027cdebad8903f6255c9eb5606e15b6a16a5518d1d3e13275354aaad
BLAKE2b-256 checksum
How to use checksums
ecbf874f56bdd48e6dd94f31d6b5925e41c6acf30721629da0ce969d930c13ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.7

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

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

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

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