我正在使用 Twilio 可编程语音来处理电话。
我想使用双向流功能发送一些原始音频数据以通过 twilio 播放,初始化代码如下所示,
from twilio.twiml.voice_response import Connect, VoiceResponse, Stream
response = VoiceResponse()
connect = Connect()
connect.stream(url='wss://mystream.ngrok.io/audiostream')
response.append(connect)
然后当从 twilio 获得 wss 连接时,我开始向 twilio 发送原始音频数据,就像这样
async def send_raw_audio(self, ws, stream_sid):
print('send raw audio')
import base64
import json
with open('test.wav', 'rb') as wav:
while True:
frame_data = wav.read(1024)
if len(frame_data) == 0:
print('no more data')
break
base64_data = base64.b64encode(frame_data).decode('utf-8')
print('send base64 data')
media_data = {
"event": "media",
"streamSid": stream_sid,
"media": {
"playload": base64_data
}
}
media = json.dumps(media_data)
print(f"media: {media}")
await ws.send(media)
print('finished sending')
test.wav
audio/x-mulaw
是一个以 8000 的采样率编码的 wav 文件。
但是运行时,我什么也听不见,在 twilio 控制台上,它说
31951 - Stream - Protocol - Invalid Message
Possible Causes
- Message does not have JSON format
- Unknown message type
- Missing or extra field in message
- Wrong Stream SID used in message
我不知道哪一部分是错的。有谁知道我的问题是什么?我找不到有关此场景的示例,只需按照此处的说明进行操作,如果有人知道有关此示例的示例,我将不胜感激,谢谢。