Adición de mejoras de calidad de audio a la experiencia de llamadas de audio
Las capacidades de supresión de ruido de los efectos de audio de Azure Communication Services pueden mejorar las llamadas de audio filtrando ruidos de fondo no deseados. La supresión de ruido es una tecnología que elimina los ruidos de fondo de las llamadas de audio. Hace que las llamadas de audio sean más claras y mejores al eliminar el ruido de fondo, facilitando el habla y la escucha. La supresión de ruido también reduce las distracciones y el cansancio causados por lugares ruidosos. Por ejemplo, al tomar llamadas de WebJS de Azure Communication Services en una cafetería con ruido considerable, activar la supresión de ruido mejorará la experiencia de las mismas.
Importante
La funcionalidad descrita en este artículo se encuentra actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin un Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.
Uso de efectos de audio: supresión de ruido
Instalación del paquete npm
Use el comando npm install
para instalar el SDK de Efectos de audio de Azure Communication Services para JavaScript.
Importante
En este tutorial se usa la versión 1.24.2-beta.1
(o superior) del SDK de llamadas de Azure Communication Services, así como la versión del SDK de Efectos de audio de llamadas de Azure Communication Services mayor o igual que 1.1.1-beta.1
(o superior).
@azure/communication-calling-effects@1.1.1-beta
Nota:
La biblioteca de efectos para llamadas no se puede usar de forma independiente y solo puede funcionar cuando se usa con la biblioteca cliente de llamadas de Azure Communication para WebJS (https://www.npmjs.com/package/@azure/communication-calling).
Encontrará más detalles en la página del paquete npm de efectos de llamadas.
Nota:
La compatibilidad del explorador actual para agregar efectos de supresión de ruido de audio solo está disponible en los exploradores de escritorio Chrome y Edge.
Obtenga información sobre los detalles de la API de llamadas.
Para usar efectos de audio de noise suppression
en el SDK de llamadas de Azure Communication, se necesita el LocalAudioStream
que se encuentre actualmente en la llamada. Se necesita acceso a la API de AudioEffects
del LocalAudioStream
para iniciar y detener efectos de audio.
import * as AzureCommunicationCallingSDK from '@azure/communication-calling';
import { DeepNoiseSuppressionEffect } from '@azure/communication-calling-effects';
// Get the LocalAudioStream from the localAudioStream collection on the call object
// 'call' here represents the call object.
const localAudioStreamInCall = call.localAudioStreams[0];
// Get the audio effects feature API from LocalAudioStream
const audioEffectsFeatureApi = localAudioStreamInCall.feature(SDK.Features.AudioEffects);
// Subscribe to useful events that show audio effects status
audioEffectsFeatureApi.on('effectsStarted', (activeEffects: ActiveAudioEffects) => {
console.log(`Current status audio effects: ${activeEffects}`);
});
audioEffectsFeatureApi.on('effectsStopped', (activeEffects: ActiveAudioEffects) => {
console.log(`Current status audio effects: ${activeEffects}`);
});
audioEffectsFeatureApi.on('effectsError', (error: AudioEffectErrorPayload) => {
console.log(`Error with audio effects: ${error.message}`);
});
En cualquier momento, si quisiera comprobar qué efectos de supresión de ruido están activos en ese momento, use la propiedad activeEffects
.
La propiedad activeEffects
devuelve un objeto con los nombres de los efectos activos actuales.
// Using the audio effects feature api
const currentActiveEffects = audioEffectsFeatureApi.activeEffects;
Iniciar una llamada con la supresión de ruido habilitada
Para iniciar llamadas con la supresión de ruido activada, cree un nuevo LocalAudioStream
con un AudioDeviceInfo
(el origen de LocalAudioStream no debe ser un MediaStream
sin procesar para usar efectos de audio) y páselo en el CallStartOptions.audioOptions
:
// As an example, here we are simply creating a LocalAudioStream using the current selected mic on the DeviceManager
const audioDevice = deviceManager.selectedMicrophone;
const localAudioStreamWithEffects = new SDK.LocalAudioStream(audioDevice);
const audioEffectsFeatureApi = localAudioStreamWithEffects.feature(SDK.Features.AudioEffects);
// Start effect
await audioEffectsFeatureApi.startEffects({
noiseSuppression: deepNoiseSuppression
});
// Pass the LocalAudioStream in audioOptions in call start/accept options.
await call.startCall({
audioOptions: {
muted: false,
localAudioStreams: [localAudioStreamWithEffects]
}
});
Cómo activar la supresión de ruido durante llamadas en curso
Hay situaciones en las que un usuario podría iniciar una llamada sin tener la supresión de ruido activada, pero el entorno actual podría volverse ruidoso, lo que provocaría la necesidad de activar la supresión de ruido. Para activar la supresión de ruido, use la API de audioEffectsFeatureApi.startEffects
.
// Create the noise supression instance
const deepNoiseSuppression = new DeepNoiseSuppressionEffect();
// Its recommened to check support for the effect in the current environment using the isSupported method on the feature API. Remember that Noise Supression is only supported on Desktop Browsers for Chrome and Edge
const isDeepNoiseSuppressionSupported = await audioEffectsFeatureApi.isSupported(deepNoiseSuppression);
if (isDeepNoiseSuppressionSupported) {
console.log('Noise supression is supported in browser environment');
}
// To start ACS Deep Noise Suppression,
await audioEffectsFeatureApi.startEffects({
noiseSuppression: deepNoiseSuppression
});
// To stop ACS Deep Noise Suppression
await audioEffectsFeatureApi.stopEffects({
noiseSuppression: true
});
Obtenga información sobre cómo configurar los filtros de audio con los SDK nativos de llamada.
Los efectos de audio de Azure Communication Services ofrecen filtros que pueden mejorar las llamadas de audio. Para plataformas nativas (Android, iOS y Windows), puede configurar los siguientes filtros:
Cancelación del eco
Elimina el eco acústico causado por el eco de la voz del autor de la llamada de vuelta al micrófono después de emitirse desde el altavoz, lo que garantiza una comunicación clara.
Puede configurar el filtro antes y durante una llamada. Solo se puede alternar la cancelación del eco si el modo de música está habilitado. De manera predeterminada, este filtro está habilitado.
Supresión de ruido
Mejore la calidad del audio filtrando ruidos de fondo no deseados, como sonido de teclas, el aire acondicionado o sonidos de la calle. Esta tecnología garantiza que la voz sea nítida y clara, lo que facilita una comunicación más eficaz.
Puede configurar el filtro antes y durante una llamada. Los modos disponibles actualmente son Off
, Auto
, Low
y High
. De manera predeterminada, esta característica está establecida en modo High
.
Control automático de ganancia (AGC)
Ajusta automáticamente el volumen del micrófono para garantizar niveles de audio coherentes a lo largo de la llamada.
- El control analógico de ganancia automática es un filtro disponible únicamente antes de una llamada. De manera predeterminada, este filtro está habilitado.
- El control digital de ganancia automática es un filtro disponible únicamente antes de una llamada. De manera predeterminada, este filtro está habilitado.
Modo de música
El modo de música es un filtro disponible antes de una llamada y durante la misma. Obtenga más información sobre el modo de música aquí. El modo de música solo funciona en plataformas nativas en 1n1 o llamadas grupales y no funciona en llamadas 1:1 entre plataformas nativas y web. De manera predeterminada, el modo de música está deshabilitado.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree su cuenta de forma gratuita.
- Un recurso de Communication Services implementado. Creación de un recurso de Communication Services
- Un token de acceso de usuario para habilitar el cliente de llamada. Para más información, consulte Inicio rápido: Creación y administración de tokens de acceso.
- Opcional: Realice el inicio rápido para agregar llamadas de voz a la aplicación
Instalación del SDK
Busque el archivo build.gradle de nivel de proyecto y agregue mavenCentral()
a la lista de repositorios en buildscript
y allprojects
:
buildscript {
repositories {
...
mavenCentral()
...
}
}
allprojects {
repositories {
...
mavenCentral()
...
}
}
A continuación, en el archivo build.gradle de nivel de módulo, agregue las siguientes líneas a la sección dependencies
:
dependencies {
...
implementation 'com.azure.android:azure-communication-calling:1.0.0'
...
}
Inicialización de los objetos necesarios
Para crear una instancia de CallAgent
, debe llamar al método createCallAgent
en una instancia de CallClient
. Esta llamada devuelve un objeto de instancia de CallAgent
de manera asincrónica.
El método createCallAgent
toma CommunicationUserCredential
como argumento, que encapsula un token de acceso.
Para acceder a DeviceManager
, primero debe crear una instancia de callAgent
. A continuación, puede usar el método CallClient.getDeviceManager
para obtener DeviceManager
.
String userToken = '<user token>';
CallClient callClient = new CallClient();
CommunicationTokenCredential tokenCredential = new CommunicationTokenCredential(userToken);
android.content.Context appContext = this.getApplicationContext(); // From within an activity, for instance
CallAgent callAgent = callClient.createCallAgent(appContext, tokenCredential).get();
DeviceManager deviceManager = callClient.getDeviceManager(appContext).get();
Para establecer un nombre para mostrar para el autor de la llamada, use este método alternativo:
String userToken = '<user token>';
CallClient callClient = new CallClient();
CommunicationTokenCredential tokenCredential = new CommunicationTokenCredential(userToken);
android.content.Context appContext = this.getApplicationContext(); // From within an activity, for instance
CallAgentOptions callAgentOptions = new CallAgentOptions();
callAgentOptions.setDisplayName("Alice Bob");
DeviceManager deviceManager = callClient.getDeviceManager(appContext).get();
CallAgent callAgent = callClient.createCallAgent(appContext, tokenCredential, callAgentOptions).get();
La característica de filtro de audio permite aplicar diferentes opciones de preprocesamiento de audio al audio saliente. Hay dos tipos de filtros de audio: OutgoingAudioFilters
y LiveOutgoingAudioFilters
. Use OutgoingAudioFilters
para cambiar la configuración antes de que se inicie la llamada y LiveOutgoingAudioFilters
para cambiar la configuración mientras una llamada está en curso.
En primer lugar, debe importar el SDK de llamada y las clases asociadas:
import com.azure.android.communication.calling.OutgoingAudioOptions;
import com.azure.android.communication.calling.OutgoingAudioFilters;
import com.azure.android.communication.calling.LiveOutgoingAudioFilters;
Antes de que se inicie la llamada
OutgoingAudioFilters
se puede aplicar cuando se inicia una llamada.
Para empezar, cree un OutgoingAudioFilters
y páselo a OutgoingAudioOptions como se muestra en el código siguiente:
OutgoingAudioOptions outgoingAudioOptions = new OutgoingAudioOptions();
OutgoingAudioFilters filters = new OutgoingAudioFilters();
filters.setNoiseSuppressionMode(NoiseSuppressionMode.HIGH);
filters.setAnalogAutomaticGainControlEnabled(true);
filters.setDigitalAutomaticGainControlEnabled(true);
filters.setMusicModeEnabled(true);
filters.setAcousticEchoCancellationEnabled(true);
outgoingAudioOptions.setAudioFilters(filters);
Durante la llamada
Puede aplicar LiveOutgoingAudioFilters
después de que se inicie una llamada. Puede recuperar este objeto del objeto de llamada durante la llamada. Para cambiar la configuración de LiveOutgoingAudioFilters
, establezca los miembros dentro de la clase en un valor válido y se aplicarán.
Solo hay disponible un subconjunto de los filtros disponibles en OutgoingAudioFilters
durante una llamada activa: modo de música, cancelación del eco y modo de supresión del ruido.
LiveOutgoingAudioFilters filters = call.getLiveOutgoingAudioFilters();
filters.setMusicModeEnabled(false);
filters.setAcousticEchoCancellationEnabled(false);
filters.setNoiseSuppressionMode(NoiseSuppressionMode.HIGH);
Obtenga información sobre cómo configurar los filtros de audio con los SDK nativos de llamada.
Los efectos de audio de Azure Communication Services ofrecen filtros que pueden mejorar las llamadas de audio. Para plataformas nativas (Android, iOS y Windows), puede configurar los siguientes filtros:
Cancelación del eco
Elimina el eco acústico causado por el eco de la voz del autor de la llamada de vuelta al micrófono después de emitirse desde el altavoz, lo que garantiza una comunicación clara.
Puede configurar el filtro antes y durante una llamada. Solo se puede alternar la cancelación del eco si el modo de música está habilitado. De manera predeterminada, este filtro está habilitado.
Supresión de ruido
Mejore la calidad del audio filtrando ruidos de fondo no deseados, como sonido de teclas, el aire acondicionado o sonidos de la calle. Esta tecnología garantiza que la voz sea nítida y clara, lo que facilita una comunicación más eficaz.
Puede configurar el filtro antes y durante una llamada. Los modos disponibles actualmente son Off
, Auto
, Low
y High
. De manera predeterminada, esta característica está establecida en modo High
.
Control automático de ganancia (AGC)
Ajusta automáticamente el volumen del micrófono para garantizar niveles de audio coherentes a lo largo de la llamada.
- El control analógico de ganancia automática es un filtro disponible únicamente antes de una llamada. De manera predeterminada, este filtro está habilitado.
- El control digital de ganancia automática es un filtro disponible únicamente antes de una llamada. De manera predeterminada, este filtro está habilitado.
Modo de música
El modo de música es un filtro disponible antes de una llamada y durante la misma. Obtenga más información sobre el modo de música aquí. El modo de música solo funciona en plataformas nativas en 1n1 o llamadas grupales y no funciona en llamadas 1:1 entre plataformas nativas y web. De manera predeterminada, el modo de música está deshabilitado.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree su cuenta de forma gratuita.
- Un recurso de Communication Services implementado. Creación de un recurso de Communication Services
- Un token de acceso de usuario para habilitar el cliente de llamada. Para más información, consulte Inicio rápido: Creación y administración de tokens de acceso.
- Opcional: Realice el inicio rápido para agregar llamadas de voz a la aplicación
Configuración del sistema
Creación del proyecto de Xcode
En Xcode, cree un nuevo proyecto de iOS y seleccione la plantilla Aplicación de una vista. En este inicio rápido se usa el marco SwiftUI, por lo que debe establecer el Lenguaje en Swift y establecer la interfaz en SwiftUI.
Durante este inicio rápido, no se van a crear pruebas. Puede desactivar la casilla Incluir pruebas.
Instalación del paquete y las dependencias mediante CocoaPods
Cree un Podfile para la aplicación, como en este ejemplo:
platform :ios, '13.0' use_frameworks! target 'AzureCommunicationCallingSample' do pod 'AzureCommunicationCalling', '~> 1.0.0' end
Ejecute
pod install
.Abra
.xcworkspace
mediante Xcode.
Solicitud de acceso al micrófono
Para acceder al micrófono del dispositivo, debe actualizar la lista de propiedades de información de la aplicación mediante NSMicrophoneUsageDescription
. Establecerá el valor asociado a una cadena que se va a incluir en el cuadro de diálogo que el sistema usa para solicitar acceso al usuario.
Haga clic con el botón derecho en la entrada Info.plist del árbol del proyecto y seleccione Abrir como>Código fuente. Agregue las líneas siguientes a la sección <dict>
de nivel superior y guarde el archivo.
<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for VOIP calling.</string>
Instalación del marco de la aplicación
Abra el archivo ContentView.swift del proyecto. Agregue una declaración import
a la parte superior del archivo para importar la biblioteca AzureCommunicationCalling
. Además, importe AVFoundation
. Lo necesitará para las solicitudes de permiso de audio en el código.
import AzureCommunicationCalling
import AVFoundation
Inicialización de CallAgent
Para crear una instancia de CallAgent
a partir de CallClient
, debe usar el método callClient.createCallAgent
, que devuelve de manera asincrónica un objeto CallAgent
después de que se inicializa.
Para crear un cliente de llamada, pase un objeto CommunicationTokenCredential
:
import AzureCommunication
let tokenString = "token_string"
var userCredential: CommunicationTokenCredential?
do {
let options = CommunicationTokenRefreshOptions(initialToken: token, refreshProactively: true, tokenRefresher: self.fetchTokenSync)
userCredential = try CommunicationTokenCredential(withOptions: options)
} catch {
updates("Couldn't created Credential object", false)
initializationDispatchGroup!.leave()
return
}
// tokenProvider needs to be implemented by Contoso, which fetches a new token
public func fetchTokenSync(then onCompletion: TokenRefreshOnCompletion) {
let newToken = self.tokenProvider!.fetchNewToken()
onCompletion(newToken, nil)
}
Pase el objeto CommunicationTokenCredential
que ha creado a CallClient
y establezca el nombre para mostrar:
self.callClient = CallClient()
let callAgentOptions = CallAgentOptions()
options.displayName = " iOS Azure Communication Services User"
self.callClient!.createCallAgent(userCredential: userCredential!,
options: callAgentOptions) { (callAgent, error) in
if error == nil {
print("Create agent succeeded")
self.callAgent = callAgent
} else {
print("Create agent failed")
}
})
La característica de filtro de audio permite aplicar diferentes opciones de preprocesamiento de audio al audio saliente. Hay dos tipos de filtros de audio: OutgoingAudioFilters
y LiveOutgoingAudioFilters
. Use OutgoingAudioFilters
para cambiar la configuración antes de que se inicie la llamada y LiveOutgoingAudioFilters
para cambiar la configuración mientras una llamada está en curso.
En primer lugar, necesita importar el SDK de llamada:
import AzureCommunicationCalling
Antes de que se inicie la llamada
OutgoingAudioFilters
se puede aplicar cuando se inicia una llamada.
Para empezar, cree un OutgoingAudioFilters
y páselo a OutgoingAudioOptions como se muestra en el código siguiente:
let outgoingAudioOptions = OutgoingAudioOptions()
let filters = OutgoingAudioFilters()
filters.NoiseSuppressionMode = NoiseSuppressionMode.high
filters.analogAutomaticGainControlEnabled = true
filters.digitalAutomaticGainControlEnabled = true
filters.musicModeEnabled = true
filters.acousticEchoCancellationEnabled = true
outgoingAudioOptions.audioFilters = filters
Durante la llamada
Puede aplicar LiveOutgoingAudioFilters
después de que se inicie una llamada. Puede recuperar este objeto del objeto de llamada durante la llamada. Para cambiar la configuración de LiveOutgoingAudioFilters
, establezca los miembros dentro de la clase en un valor válido y se aplicarán.
Solo hay disponible un subconjunto de los filtros disponibles en OutgoingAudioFilters
durante una llamada activa: modo de música, cancelación del eco y modo de supresión del ruido.
LiveOutgoingAudioFilters filters = call.liveOutgoingAudioFilters
filters.musicModeEnabled = true
filters.acousticEchoCancellationEnabled = true
filters.NoiseSuppressionMode = NoiseSuppressionMode.high
Obtenga información sobre cómo configurar los filtros de audio con los SDK nativos de llamada.
Los efectos de audio de Azure Communication Services ofrecen filtros que pueden mejorar las llamadas de audio. Para plataformas nativas (Android, iOS y Windows), puede configurar los siguientes filtros:
Cancelación del eco
Elimina el eco acústico causado por el eco de la voz del autor de la llamada de vuelta al micrófono después de emitirse desde el altavoz, lo que garantiza una comunicación clara.
Puede configurar el filtro antes y durante una llamada. Solo se puede alternar la cancelación del eco si el modo de música está habilitado. De manera predeterminada, este filtro está habilitado.
Supresión de ruido
Mejore la calidad del audio filtrando ruidos de fondo no deseados, como sonido de teclas, el aire acondicionado o sonidos de la calle. Esta tecnología garantiza que la voz sea nítida y clara, lo que facilita una comunicación más eficaz.
Puede configurar el filtro antes y durante una llamada. Los modos disponibles actualmente son Off
, Auto
, Low
y High
. De manera predeterminada, esta característica está establecida en modo High
.
Control automático de ganancia (AGC)
Ajusta automáticamente el volumen del micrófono para garantizar niveles de audio coherentes a lo largo de la llamada.
- El control analógico de ganancia automática es un filtro disponible únicamente antes de una llamada. De manera predeterminada, este filtro está habilitado.
- El control digital de ganancia automática es un filtro disponible únicamente antes de una llamada. De manera predeterminada, este filtro está habilitado.
Modo de música
El modo de música es un filtro disponible antes de una llamada y durante la misma. Obtenga más información sobre el modo de música aquí. El modo de música solo funciona en plataformas nativas en 1n1 o llamadas grupales y no funciona en llamadas 1:1 entre plataformas nativas y web. De manera predeterminada, el modo de música está deshabilitado.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree su cuenta de forma gratuita.
- Un recurso de Communication Services implementado. Creación de un recurso de Communication Services
- Un token de acceso de usuario para habilitar el cliente de llamada. Para más información, consulte Inicio rápido: Creación y administración de tokens de acceso.
- Opcional: Realice el inicio rápido para agregar llamadas de voz a la aplicación
Configuración del sistema
Creación del proyecto de Visual Studio
En el caso de una aplicación para UWP, en Visual Studio 2022, cree un nuevo proyecto de Aplicación vacía (Universal Windows). Después de escribir el nombre del proyecto, puede elegir cualquier Windows SDK posterior a 10.0.17763.0.
En el caso de una aplicación WinUI 3, cree un nuevo proyecto con la plantilla Aplicación vacía, empaquetada (WinUI 3 en escritorio) para configurar una aplicación WinUI 3 de una sola página. Se requiere la versión 1.3 o posterior del SDK de aplicaciones de Windows.
Instalación del paquete y las dependencias mediante el Administrador de paquetes NuGet
Las API y bibliotecas de SDK de llamadas están disponibles públicamente a través de un paquete NuGet.
Los pasos siguientes demuestran cómo encontrar, descargar e instalar el paquete NuGet del SDK de llamada:
- Abra el Administrador de paquetes NuGet desde Herramientas>Administrador de paquetes NuGet>Administrar paquetes NuGet para la solución.
- Seleccione Examinar y, luego, escriba
Azure.Communication.Calling.WindowsClient
en el cuadro de búsqueda. - Asegúrese de que la casilla Incluir versión preliminar esté activada.
- Seleccione el paquete
Azure.Communication.Calling.WindowsClient
y, luego, elijaAzure.Communication.Calling.WindowsClient
1.4.0-beta.1 o una versión más reciente. - Active la casilla correspondiente al proyecto de Communication Services en la pestaña derecha.
- Seleccione el botón Instalar.
La característica de filtro de audio le permite aplicar diferentes preprocesamientos de audio al audio saliente. Hay dos tipos de filtros de audio: OutgoingAudioFilters
y LiveOutgoingAudioFilters
. Use OutgoingAudioFilters
para cambiar la configuración antes de que se inicie la llamada y LiveOutgoingAudioFilters
para cambiar la configuración mientras una llamada está en curso.
En primer lugar, necesita importar el SDK de llamada:
using Azure.Communication;
using Azure.Communication.Calling.WindowsClient;
Antes de que se inicie la llamada
OutgoingAudioFilters
se puede aplicar cuando se inicia una llamada.
Para empezar, cree un OutgoingAudioFilters
y páselo a OutgoingAudioOptions como se muestra en el código siguiente:
var outgoingAudioOptions = new OutgoingAudioOptions();
var filters = new OutgoingAudioFilters()
{
AnalogAutomaticGainControlEnabled = true,
DigitalAutomaticGainControlEnabled = true,
MusicModeEnabled = true,
AcousticEchoCancellationEnabled = true,
NoiseSuppressionMode = NoiseSuppressionMode.High
};
outgoingAudioOptions.Filters = filters;
Durante la llamada
Puede aplicar LiveOutgoingAudioFilters
después de que comience una llamada. Puede recuperar este objeto del objeto de llamada una vez que comience la llamada. Para cambiar la configuración de LiveOutgoingAudioFilters
, establezca los miembros dentro de la clase en un valor válido y se aplicarán.
Solo hay disponible un subconjunto de los filtros disponibles en OutgoingAudioFilters
durante una llamada activa: modo de música, cancelación del eco y modo de supresión del ruido.
LiveOutgoingAudioFilters filter = call.LiveOutgoingAudioFilters;
filter.MusicModeEnabled = true;
filter.AcousticEchoCancellationEnabled = true;
filter.NoiseSuppressionMode = NoiseSuppressionMode.Auto;