You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python调用Twilio发起通话并实现笔记本设备语音交互

解决方案

你当前代码的问题在于调用client.calls.create()时传入的是Twilio官方演示的TwiML地址,这个地址返回的TwiML仅会播放预设的演示语音,不会将通话音频和你本地的麦克风、扬声器做桥接,因此无法实现双向对话。

你需要按照以下步骤修改代码和补充配套逻辑即可实现预期需求:

步骤1:明确新增配套服务要求

你需要额外开发一个本地服务,实现两个核心功能:

  • 用pyaudio库读取本地麦克风的音频输入,编码为Twilio支持的16kHz 16bit单声道PCM格式后发送到Twilio侧
  • 接收Twilio推过来的对方通话音频流,解码后通过本地扬声器播放
  • 启动一个可被公网访问的WebSocket端点,用于和Twilio建立音频流传输通道

步骤2:修改现有呼叫创建逻辑

替换原来的官方演示TwiML地址,改为自定义的TwiML配置,通过<Stream>标签把通话音频双向转发到你本地的WebSocket服务,修改后的代码如下:

import os
from twilio.rest import Client


# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ['TWILIO_ACCOUNT_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)

# 自定义TwiML配置,指定音频流转发地址
custom_twiml = '''
<Response>
  <Start>
    <Stream url="wss://替换为你自己的公网WebSocket服务地址" />
  </Start>
  <Say voice="alice">通话已接通,可以开始对话</Say>
  <Pause length="3600"/>
</Response>
'''

call = client.calls.create(
                        twiml=custom_twiml,
                        to='+15558675310',
                        from_='+15017122661'
                    )

print(call.sid)

步骤3:安装所需依赖

你需要额外安装音频处理和WebSocket相关的库,执行命令:
pip install pyaudio websockets

注意事项

  • 你的WebSocket服务必须使用wss协议,且可以被公网访问,Twilio才能正常建立连接传输音频
  • 本地防火墙需要开放对应WebSocket端口,允许Twilio的入站请求
  • 音频编码格式必须和Twilio要求对齐,否则会出现声音失真、无声音的问题

内容的提问来源于stack exchange,提问作者Nauman Shakir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:48:03