Skip to main content
PlayFab Party es una solución de redes y chat de voz en tiempo real. Cuando se configura para el chat de voz, PlayFab Party transmite el audio del micrófono y lo reproduce sin modificar. Algunos juegos necesitan acceso a los búferes de audio del chat de voz para implementar efectos de audio personalizados, como audio espacial o filtros de voz. Este documento proporciona un tutorial de cómo usar la característica de manipulación de audio en tiempo real para interceptar y modificar el audio del chat de voz en PlayFab Party.

Requisitos previos

Este tutorial supone que está básicamente familiarizado con el chat de voz en PlayFab Party.

Compatibilidad con plataformas

La manipulación de audio en tiempo real no está disponible en todas las plataformas. Aunque los métodos asociados con la manipulación de audio en tiempo real están presentes en el encabezado unificado multiplataforma, actualmente solo están implementados para Windows, XBOX y PlayStation® 5. Los métodos devolverán errores en otras plataformas.

Secuencias de audio

La manipulación de audio en tiempo real introduce el concepto de secuencias de audio para recuperar audio de la biblioteca o enviarle audio. Hay dos tipos de secuencias de audio. El primero es la secuencia de origen. Una secuencia de origen se usa para recuperar audio de un control de chat. Cada control de chat solo puede tener una única secuencia de origen, denominada secuencia de voz. Para un control de chat local, se usa para recuperar la entrada del micrófono; para un control de chat remoto, se usa para recuperar el audio de voz entrante. Si la secuencia de voz existe para un control de chat, la biblioteca redirigirá el audio de origen de ese control de chat a su secuencia de voz en lugar de gestionar el audio automáticamente. Para un control de chat local, esto significa redirigir el audio del micrófono a la secuencia de voz en lugar de codificarlo y transmitirlo automáticamente; para un control de chat remoto, esto significa redirigir el audio de voz entrante a la secuencia de voz en lugar de enviarlo automáticamente a cada control de chat local para su reproducción. Las secuencias de origen se representan mediante PartyAudioManipulationSourceStream. El segundo tipo de secuencia es la secuencia de receptor. Una secuencia de receptor se usa para enviar audio a un control de chat. Solo los controles de chat locales pueden tener secuencias de receptor, y cada uno puede tener dos. Se denominan secuencia de captura y secuencia de representación. Si la secuencia de captura existe para un control de chat, la biblioteca extraerá el audio de la secuencia de captura para codificarlo y transmitirlo a otros controles de chat en lugar del micrófono. Si la secuencia de representación existe para un control de chat, la biblioteca extraerá el audio de la secuencia de representación y lo reproducirá además del audio del chat de voz que se reproduce automáticamente desde los controles de chat remotos. El audio enviado a la secuencia de captura se usa como entrada de micrófono del control de chat local; el audio enviado a la secuencia de representación se reproduce o “representa” en el dispositivo de salida de audio del control de chat local. Las secuencias de receptor se representan mediante PartyAudioManipulationSinkStream.

Configuración de secuencias de audio

De forma predeterminada, la biblioteca se encarga de la recuperación, el transporte y la reproducción del audio. Por lo tanto, los controles de chat se crean sin ninguna secuencia de audio. Puede crear una o varias secuencias para un control de chat mediante los métodos de configuración de secuencias: PartyLocalChatControl::ConfigureAudioManipulationCaptureStream(), PartyLocalChatControl::ConfigureAudioManipulationRenderStream() y PartyChatControl::ConfigureAudioManipulationVoiceStream(). Una vez configurada, una secuencia puede recuperarse posteriormente mediante PartyLocalChatControl::GetAudioManipulationCaptureStream(), PartyLocalChatControl::GetAudioManipulationRenderStream() y PartyChatControl::GetAudioManipulationVoiceStream() Cada método de configuración de secuencias le permite especificar el formato del audio que recuperará de la secuencia o que le enviará. Para obtener más información sobre los formatos admitidos, consulte la documentación de referencia de cada método de configuración de secuencias.

Recuperación de audio de una secuencia de origen

Puede recuperar audio de una secuencia de origen mediante PartyAudioManipulationSourceStream::GetNextBuffer(). Cuando se detecta actividad de voz, habrá un nuevo búfer disponible aproximadamente cada 40 ms. Si no hay búferes disponibles, la llamada se realizará correctamente y proporcionará un búfer de longitud cero. El número total de búferes disponibles en un instante dado se puede recuperar mediante PartyAudioManipulationSourceStream::GetAvailableBufferCount(). Por eficiencia, GetNextBuffer() proporciona un búfer que apunta a la memoria de la biblioteca en lugar de copiar todo el búfer. Opcionalmente, se puede modificar en su lugar. Cuando haya terminado de procesar un búfer, debe liberarlo mediante PartyAudioManipulationSourceStream::ReturnBuffer() para que la biblioteca pueda reclamar su memoria. Se pueden recuperar varios búferes antes de devolver alguno, y los búferes no tienen que devolverse en el orden en que se recuperaron.

Envío de audio a una secuencia de receptor

Puede enviar audio a una secuencia de receptor mediante PartyAudioManipulationSinkStream::SubmitBuffer(). La biblioteca copia el búfer, que se puede liberar inmediatamente después de completarse la llamada. Cada 40 ms, la biblioteca consume 40 ms del audio que se ha enviado a la secuencia de receptor. Para evitar interrupciones de audio, el audio debe enviarse a un ritmo constante.

Escenarios

Manipulación del audio del micrófono, también conocida como manipulación del búfer antes de la codificación

La manipulación del audio del micrófono es el acto de interceptar y cambiar el audio del micrófono antes de que se transmita a otros controles de chat. A veces se denomina “manipulación del búfer antes de la codificación” porque el audio del micrófono se modifica antes de codificarse y transmitirse a otros controles de chat. Si desea implementar este escenario para un control de chat local, configure primero una secuencia de voz y una secuencia de captura para el control de chat local. Una vez configuradas, una función llamada en cada ciclo de un subproceso de audio dedicado para procesar el audio del micrófono de ese único control de chat podría tener el aspecto siguiente.

Manipulación del audio remoto, también conocida como manipulación del búfer después de la descodificación

La manipulación del audio remoto es el acto de interceptar y cambiar el audio entrante antes de que se represente en cada control de chat local. A veces se denomina “manipulación del búfer después de la descodificación” porque el audio entrante se modifica después de descodificarse pero antes de representarse. Si desea implementar este escenario, configure primero la secuencia de voz para cada control de chat remoto y la secuencia de representación para cada control de chat local. Después, en cada ciclo de su subproceso de audio se debe extraer el audio de cada secuencia de voz, mezclar el audio en una sola secuencia aplicando opcionalmente efectos, y enviar el búfer mezclado a cada secuencia de representación. Según el escenario de su juego, es posible que deba mezclar los búferes en secuencias distintas para cada control de chat local. Una función llamada en cada ciclo de un subproceso de audio dedicado para procesar el audio de voz entrante podría tener el aspecto siguiente.

Consideraciones sobre privacidad y mezcla

La biblioteca proporcionará audio a través de la secuencia de voz de un control de chat remoto siempre que el control de chat remoto genere audio y las configuraciones de permisos de chat y silencio permitan que el audio lo reproduzca al menos un control de chat local. Si el audio debe reproducirse para un control de chat local pero no para otro, debe omitirlo de la mezcla de audio del segundo control de chat.

Consideraciones sobre los indicadores de chat

Configurar una secuencia de voz para un control de chat remoto no afectará a su indicador de chat. Es posible que deba implementar lógica para conciliar las diferencias entre el indicador de chat y su lógica de mezcla, a fin de elegir el indicador de interfaz de usuario correcto. Por ejemplo, el indicador de chat podría indicar que el control de chat está hablando, pero la lógica de mezcla personalizada podría optar por descartar el audio.

Escenarios mixtos

En algunos escenarios, podría querer habilitar la manipulación de audio para algunos controles de chat pero no para otros. Por ejemplo, quizá quiera aplicar efectos a los jugadores rivales encontrados durante una partida, pero no a los jugadores del mismo equipo. En tal escenario, puede seguir los pasos descritos anteriormente para la manipulación del audio remoto configurando una secuencia de voz solo para los controles de chat a los que quiera aplicar efectos de audio. El audio de los demás controles de chat remotos se representará automáticamente en los controles de chat locales, siempre que las configuraciones de silencio y permisos lo permitan.
Última modificación el 28 de agosto de 2026