SDK del servidor de conectores de audio

Visión general

Esta guía explica cómo instalar y configurar el SDK de Vonage Audio Connector Server para construir un punto final WebSocket del lado del servidor que envíe y reciba audio PCM en tiempo real desde una sesión de sesión de Vonage Video.

Utilice este SDK para conectar el audio de sesiones en directo a servicios de IA de terceros, por ejemplo, para crear un asistente conversacional de IA. conversacional, ejecutar transcripciones en directo o realizar análisis de audio en tiempo real.

Antes de empezar

Antes de instalar el SDK, asegúrese de tener:

  • Python instalado en su servidor
  • Una Account de Vonage con Acceso a la Video API
  • Un ID de sesión de Vonage Video y un token de sesión válido
  • (Opcional) Un certificado SSL para implementaciones WebSocket de producción

Instalar el SDK

Instale el paquete desde PyPI:

pip install vonage-audio-connector-server

Configurar e iniciar el servidor

  1. Crear un AudioConnectorServerConfig con su host, puerto, contexto SSL y ciclo de vida del 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 el servidor:

    server_handle = await video.start_audio_connector_server(config)
    

Gestión de eventos de conexión

Dentro de tu on_connect callback, registro de mensajes, desconexión y controladores de errores para cada conexión 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 audio de vuelta a la sesión

Utilice el objeto cliente dentro de sus manejadores para devolver datos a la sesión de Video.

Para enviar un mensaje de control JSON:

await client.send_json_packet(string_json)

Para enviar audio PCM de vuelta a la sesión:

El SDK gestiona la temporización y el almacenamiento en búfer de los fotogramas basándose en bytes_per_sample y frames_ms. Establecer flush_buffer=True para descartar cualquier audio almacenado antes de añadir nuevos datos.

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

Otros métodos de cliente disponibles:

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

Ver también