Skip to main content
本文用两个最小例子跑通 Python SDK:先收听(加入频道,把每个人的声音录成 wav),再播报(把一段 PCM 推进频道,让其他人听到)。 前置条件:
Token 与一次会话绑定,每次 Channel.join 都要用新签发的 Token。复用同一个 Token 会被服务端以 1032 该会话不在线 拒绝。

收听:把每个人的声音录成 wav

要点:
  • auto_subscribe_audio=True 会自动订阅频道里所有人(包括之后才加入的人)的音频
  • frame.uid 区分说话人,frame.pcm 是 S16LE 交错排列的 PCM,frame.to_numpy() 可以直接拿到 int16 数组
  • 对端静音时不发包,SDK 会补上等长的静音帧(frame.is_silence 为 True),所以录出来的时长和真实时长一致
  • async with 退出时自动离开频道;频道被销毁、被踢等情况下 async for 会自然结束

播报:把 PCM 推进频道

要点:
  • 不用自己控速:TTS 生成速度远快于实时,一次性 write 几秒的音频是正常用法,SDK 会按实时节奏发出去
  • 缓冲超过 max_buffer_seconds(默认 30 秒)时 write 会等待,天然形成背压
  • 用户插话时调用 tts.clear(),未播完的部分立即丢弃,见 语音 AI Agent 实践

监听频道事件

需要知道谁进来了、谁发布了什么时,继承 ChannelHandler,覆写需要的方法即可:
方法可以是普通函数,也可以是 async 函数。完整列表见 事件回调。

下一步