SDK do Servidor de Conectores de Áudio

Visão geral

Este guia explica como instalar e configurar o SDK do Vonage Audio Connector Server para criar um endpoint WebSocket do lado do servidor que envie e receba áudio PCM em tempo real de uma sessão do Vonage Video.

Use este SDK para conectar o áudio de sessões ao vivo a serviços de IA de terceiros — por exemplo, para criar um assistente de IA conversacional, executar transcrição ao vivo ou realizar análises de áudio em tempo real.

Antes de começar

Antes de instalar o SDK, certifique-se de que você tenha:

  • Python instalado no seu servidor
  • Um account da Vonage com Acesso à Video API
  • Um ID de sessão do Vonage Video e um token de sessão válido
  • (Opcional) Um certificado SSL para implantações de WebSocket em ambiente de produção

Instale o SDK

Instale o pacote a partir do PyPI:

pip install vonage-audio-connector-server

Configurar e iniciar o servidor

  1. Criar um AudioConnectorServerConfig com seu host, porta, contexto SSL e callbacks de ciclo de vida:

    video = Video()
    
    config = AudioConnectorServerConfig(
        host="localhost",
        port=8765,
        ssl=ssl_context,
        on_start=on_start,
        on_stop=on_stop,
        on_connect=on_connect
    )
    
  2. Inicie o servidor:

    server_handle = await video.start_audio_connector_server(config)
    

Tratar eventos de conexão

Dentro do seu on_connect manipuladores de retorno de chamada, de registro de mensagem, de desconexão e de erro para cada conexão de cliente:

async def on_connect(client):
    client.set_handler(
        on_message=on_message,
        on_disconnect=on_disconnect,
        on_error=on_error
    )

async def on_message(message):
    print(f"Received Message")

async def on_disconnect():
    print("Client Disconnected.")

async def on_error(error):
    print(f"Error Occurred: {error}")

Enviar o áudio de volta para a sessão

Use o objeto cliente dentro de seus manipuladores para retornar dados à sessão de vídeo.

Para enviar uma mensagem de controle em JSON:

await client.send_json_packet(string_json)

Para enviar o áudio PCM de volta para a sessão:

O SDK gerencia a sincronização dos quadros e o armazenamento em buffer com base em bytes_per_sample e frames_ms. Conjunto flush_buffer=True para descartar qualquer áudio armazenado no buffer antes de acrescentar novos dados.

await client.send_audio_buffer(
    audio_data,
    bytes_per_sample=640,
    frames_ms=20,
    pad_last_frame=True,
    flush_buffer=False
)

Outros métodos disponíveis no cliente:

client.info()         # Retrieve connection metadata from request headers
client.flush_buffer() # Flush buffered packets to the WebSocket client
client.disconnect()   # Close the WebSocket connection

Veja também