【发布时间】:2021-01-11 13:14:27
【问题描述】:
我正在使用 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编码的wav文件,采样率为8000。
但是运行时,我什么也听不见,在 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
我不知道哪一部分是错的。有谁知道我的问题是什么?我找不到关于这种情况的示例,请按照说明进行操作 here,如果有人知道有关于此的示例,我将不胜感激,谢谢。
【问题讨论】:
标签: stream twilio audio-streaming twilio-programmable-voice mu-law