Twilio Media Streams + ElevenLabs + Openai (Python): Call Connects, транскрипты работают, но вызывающий звонок слышит моPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Twilio Media Streams + ElevenLabs + Openai (Python): Call Connects, транскрипты работают, но вызывающий звонок слышит мо

Сообщение Anonymous »

Я построил голосового помощника в реальном времени, используя Twilio Media Streams, Openai GPT и ElevenLabs, с аудио, обрабатываемым на Python с использованием Quart + Hypercorn. Приложение подключает, транскрибирует голоса из LL, генерирует ответ и передает его обратно через WebSocket - но мы ничего не слышим, когда мы призываем себя проверить его. Zero audio.
What I'm Trying to Do:
Enable two-way voice calls where:
  • The caller speaks → Whisper transcribes
  • GPT-4 replies → ElevenLabs generates audio
  • The response is streamed back to the caller using Media Stream Twilio
Я хочу естественный разговор, живой разговор между клиентом и регистратором AI. /> [*] Whisper Точная транскрибирует речь вызывающего абонента < /li>
GPT генерирует правильный ответ < /li>
ElevenLabs возвращает действительный файл mp3 < /li>
ffmpeg преобразует это в mp3-law @8000hz. Кадры над WebSocket (20 мс µ-законовыми кусочками) < /li>
Журналы подтверждают, что аудио-поток отправляется в рамках за кадром < /li>
Call Stay Snape (с паузой), журналы статуса Fire < /li>
Whisper Proves Proves Proves Searuio не слышит Audio < /li>
но. Нет приветствия. Нет ответа. Просто Единая молчание. < /Li>
< /ul>
Что я попробовал (обширная история отладки) < /p>

подтвержденное преобразование µ -raw с помощью: < /p>
ffmpeg -y -i file.mp3 -f mulaw -Acodec -AC -AC -AC 1000 -AC -AC -IAC. file.raw < /p>
< /li>
использовал 160-байтовые куски в течение 20 мс @ 8 кГц < /p>
< /li>
Инъективное 1 полное секунду из тишины µ-lak, чтобы запустить буфер < /p>
< /li>

< /li>
Используется правильный трек: «inbound» для аудиокадров < /p>
< /li>
Установите тип контента в качестве аудио /mulaw внутри:
twiml, используемый для исходящего потока медиа: < /p>

<Start>
<Stream url="wss://chat.example.net/media" track="both_tracks">
<Parameter name="Content-Type" value="audio/mulaw" />
</Stream>
</Start>

< /code>
< /li>
проверил, что .mp3 и .raw Audio Sound Perfect, когда воспроизводится локально < /p>
< /li>
Пробовал запись TWIML, чтобы прослушать, что вызывающий может услышать (все еще молчит) < /p>
< /li> Соответствующий Python (потоковой аудио до Twilio): < /p>
async def stream_audio(ws, stream_sid: str, audio_path: str):
raw_path = audio_path.rsplit('.', 1)[0] + ".raw"
subprocess.run([
"ffmpeg", "-y", "-i", audio_path,
"-f", "mulaw", "-acodec", "pcm_mulaw",
"-ar", "8000", "-ac", "1", raw_path
])
with open(raw_path, "rb") as f:
while chunk := f.read(160):
msg = {
"event": "media",
"streamSid": stream_sid,
"media": {
"track": "inbound",
"payload": base64.b64encode(chunk).decode("utf-8")
}
}
await ws.send(json.dumps(msg))
await asyncio.sleep(0.02)
< /code>
У нас также есть полная @app.websocket (' /media') логика, обработчик Twiml и Async Startup через Hypercorn. < /p>
Подозрения: < /p>

Twilio получает Audio, но мы с дилформированием. Тем не менее, это не услышано
Может быть, Twilio ожидает дополнительных заголовков или данных рукопожатия? Для: < /p>

Если вы когда-либо получали приложение Python (не node.js), работая с: < /li>
Twilio Media Streams (двусторонний) < /li>
Whisper /GPT для разговора < /li>
elevenl для ttts. Аудио, пожалуйста, поделитесь тем, что вы узнали! 22).>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ranscripts
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»