Adicione melhorias na qualidade de áudio à sua experiência de chamadas de áudio

As capacidades de supressão de ruído de efeitos de áudio dos Serviços de Comunicação do Azure podem melhorar as suas chamadas de áudio filtrando ruídos de fundo indesejados. A supressão de ruído é uma tecnologia que remove ruídos de fundo de chamadas de áudio. Torna as chamadas de áudio mais claras e melhores, eliminando o ruído de fundo, tornando mais fácil falar e ouvir. A supressão do ruído também pode reduzir as distrações e o cansaço causados por locais ruidosos. Por exemplo, se você estiver atendendo uma chamada WebJS dos Serviços de Comunicação do Azure em uma cafeteria com ruído considerável, ativar a supressão de ruído pode melhorar a experiência da chamada.

Importante

A funcionalidade descrita neste artigo está atualmente em visualização pública. Esta versão de pré-visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Usando efeitos de áudio - supressão de ruído

Instalar o pacote npm

Use o npm install comando para instalar o SDK de Efeitos de Áudio dos Serviços de Comunicação do Azure para JavaScript.

Importante

Este tutorial usa a versão do SDK de Chamada dos Serviços de Comunicação do Azure de (ou superior) e a versão do SDK de Efeitos de Áudio dos Serviços de 1.24.2-beta.1 Comunicação do Azure maior ou igual a 1.1.1-beta.1 (ou superior).

@azure/communication-calling-effects@1.1.1-beta

Nota

A biblioteca de efeitos de chamada não pode ser usada de forma autônoma e só pode funcionar quando usada com a biblioteca de cliente do Azure Communication Calling para WebJS (https://www.npmjs.com/package/@azure/communication-calling).

Você pode encontrar mais detalhes na página do pacote npm de efeitos de chamada.

Nota

O suporte atual do navegador para adicionar efeitos de supressão de ruído de áudio só está disponível nos navegadores Chrome e Edge Desktop.

Você pode aprender sobre as especificidades da API de chamada.

Para usar noise suppression efeitos de áudio no SDK de Chamada de Comunicação do Azure, você precisa do LocalAudioStream que está atualmente na chamada. Você precisa acessar a AudioEffects API do para iniciar e parar efeitos de LocalAudioStream áudio.

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}`);
});

A qualquer momento, se você quiser verificar quais efeitos de supressão de ruído estão ativos no momento, você pode usar a activeEffects propriedade. A activeEffects propriedade retorna um objeto com os nomes dos efeitos ativos atuais.

// Using the audio effects feature api
const currentActiveEffects = audioEffectsFeatureApi.activeEffects;

Iniciar uma chamada com a Supressão de Ruído ativada

Para iniciar uma chamada com a supressão de ruído ativada, você pode criar uma nova LocalAudioStream com um AudioDeviceInfo (a fonte LocalAudioStream não deve ser bruta MediaStream para usar efeitos de áudio) e passá-la no 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]
    }
});

Como ativar a supressão de ruído durante uma chamada em curso

Há situações em que um usuário pode iniciar uma chamada e não ter a supressão de ruído ativada, mas seu ambiente atual pode ficar barulhento, resultando na necessidade de ativar a supressão de ruído. Para ativar a supressão de ruído, você pode usar a audioEffectsFeatureApi.startEffects API.

// 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
});

Saiba como configurar os filtros de áudio com os SDKs nativos de chamada.

Os efeitos de áudio dos Serviços de Comunicação do Azure oferecem filtros que podem melhorar sua chamada de áudio. Para plataformas nativas (Android, iOS ou Windows) você pode configurar os seguintes filtros:

Cancelamento de eco

Ele elimina o eco acústico causado pela voz do chamador ecoando de volta para o microfone depois de ser emitida pelo alto-falante, garantindo uma comunicação clara.

Você pode configurar o filtro antes e durante uma chamada. Só pode alternar o cancelamento de eco se o modo de música estiver ativado. Por padrão, esse filtro está habilitado.

Supressão de ruído

Melhore a qualidade do áudio filtrando ruídos de fundo indesejados, como digitação, ar condicionado ou sons de rua. Esta tecnologia garante que a voz é nítida e clara, facilitando uma comunicação mais eficaz.

Você pode configurar o filtro antes e durante uma chamada. Os modos atualmente disponíveis são Off, Auto, Low, e High. Por padrão, esse recurso é definido como High modo.

Controle automático de ganho (AGC)

Ajusta automaticamente o volume do microfone para garantir níveis de áudio consistentes durante toda a chamada.

  • O controle de ganho automático analógico é um filtro disponível apenas antes de uma chamada. Por padrão, esse filtro está habilitado.
  • O controle de ganho automático digital é um filtro disponível apenas antes de uma chamada. Por padrão, esse filtro está habilitado.

Modo Música

O modo de música é um filtro disponível antes e durante uma chamada. Saiba mais sobre o modo de música aqui. O modo de música só funciona em plataformas nativas sobre 1n1 ou chamadas em grupo e não funciona em chamadas 1:1 entre nativos e web. Por padrão, o modo de música está desativado.

Pré-requisitos

Instale o SDK

Localize seu arquivo build.gradle no nível do projeto e adicione mavenCentral() à lista de repositórios em buildscript e allprojects:

buildscript {
    repositories {
    ...
        mavenCentral()
    ...
    }
}
allprojects {
    repositories {
    ...
        mavenCentral()
    ...
    }
}

Em seguida, no arquivo build.gradle no nível do módulo, adicione as seguintes linhas à dependencies seção :

dependencies {
    ...
    implementation 'com.azure.android:azure-communication-calling:1.0.0'
    ...
}

Inicializar os objetos necessários

Para criar uma CallAgent instância, você precisa chamar o createCallAgent método em uma CallClient instância. Essa chamada retorna de forma assíncrona um objeto de CallAgent instância.

O createCallAgent método toma CommunicationUserCredential como um argumento, que encapsula um token de acesso.

Para acessar DeviceManagero , você deve criar uma callAgent instância primeiro. Então você pode usar o CallClient.getDeviceManager método para obter 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 definir um nome de exibição para o chamador, 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();

O recurso de filtro de áudio permite que você aplique diferentes opções de pré-processamento de áudio ao áudio de saída. Existem dois tipos de filtros de áudio: OutgoingAudioFilters e LiveOutgoingAudioFilters. Use OutgoingAudioFilters para alterar as configurações antes do início da chamada e LiveOutgoingAudioFilters para alterar as configurações enquanto uma chamada está em andamento.

Primeiro, você precisa importar o SDK de chamada e as classes associadas:

import com.azure.android.communication.calling.OutgoingAudioOptions;
import com.azure.android.communication.calling.OutgoingAudioFilters;
import com.azure.android.communication.calling.LiveOutgoingAudioFilters;

Antes do início da chamada

OutgoingAudioFilters pode ser aplicado quando uma chamada é iniciada.

Comece criando um OutgoingAudioFilters e passando-o para OutgoingAudioOptions conforme mostrado no código a seguir:

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 a chamada

Pode candidatar-se LiveOutgoingAudioFilters após o início de uma chamada. Você pode recuperar esse objeto do objeto de chamada durante a chamada. Para alterar a configuração no LiveOutgoingAudioFilters, defina os membros dentro da classe para um valor válido e eles serão aplicados.

Apenas um subconjunto dos filtros disponíveis estão disponíveis durante uma chamada ativa: modo de música, cancelamento de eco e modo de supressão de OutgoingAudioFilters ruído.

LiveOutgoingAudioFilters filters = call.getLiveOutgoingAudioFilters();
filters.setMusicModeEnabled(false);
filters.setAcousticEchoCancellationEnabled(false);
filters.setNoiseSuppressionMode(NoiseSuppressionMode.HIGH);

Saiba como configurar os filtros de áudio com os SDKs nativos de chamada.

Os efeitos de áudio dos Serviços de Comunicação do Azure oferecem filtros que podem melhorar sua chamada de áudio. Para plataformas nativas (Android, iOS ou Windows) você pode configurar os seguintes filtros:

Cancelamento de eco

Ele elimina o eco acústico causado pela voz do chamador ecoando de volta para o microfone depois de ser emitida pelo alto-falante, garantindo uma comunicação clara.

Você pode configurar o filtro antes e durante uma chamada. Só pode alternar o cancelamento de eco se o modo de música estiver ativado. Por padrão, esse filtro está habilitado.

Supressão de ruído

Melhore a qualidade do áudio filtrando ruídos de fundo indesejados, como digitação, ar condicionado ou sons de rua. Esta tecnologia garante que a voz é nítida e clara, facilitando uma comunicação mais eficaz.

Você pode configurar o filtro antes e durante uma chamada. Os modos atualmente disponíveis são Off, Auto, Low, e High. Por padrão, esse recurso é definido como High modo.

Controle automático de ganho (AGC)

Ajusta automaticamente o volume do microfone para garantir níveis de áudio consistentes durante toda a chamada.

  • O controle de ganho automático analógico é um filtro disponível apenas antes de uma chamada. Por padrão, esse filtro está habilitado.
  • O controle de ganho automático digital é um filtro disponível apenas antes de uma chamada. Por padrão, esse filtro está habilitado.

Modo Música

O modo de música é um filtro disponível antes e durante uma chamada. Saiba mais sobre o modo de música aqui. O modo de música só funciona em plataformas nativas sobre 1n1 ou chamadas em grupo e não funciona em chamadas 1:1 entre nativos e web. Por padrão, o modo de música está desativado.

Pré-requisitos

Configure o seu sistema

Criar o projeto Xcode

No Xcode, crie um novo projeto iOS e selecione o modelo Single View App . Este início rápido usa a estrutura SwiftUI, portanto, você deve definir Language como Swift e Interfacecomo SwiftUI.

Você não vai criar testes durante este início rápido. Sinta-se à vontade para desmarcar a caixa de seleção Incluir testes .

Captura de tela que mostra a janela para criar um projeto no Xcode.

Instale o pacote e as dependências usando o CocoaPods

  1. Crie um Podfile para seu aplicativo, como este exemplo:

    platform :ios, '13.0'
    use_frameworks!
    target 'AzureCommunicationCallingSample' do
        pod 'AzureCommunicationCalling', '~> 1.0.0'
    end
    
  2. Execute o pod install.

  3. Abra .xcworkspace usando o Xcode.

Solicitar acesso ao microfone

Para acessar o microfone do dispositivo, você precisa atualizar a lista de propriedades de informações do seu aplicativo usando NSMicrophoneUsageDescription. Você define o valor associado para uma cadeia de caracteres que será incluída na caixa de diálogo que o sistema usa para solicitar acesso do usuário.

Clique com o botão direito do mouse na entrada Info.plist da árvore do projeto e selecione Abrir como>código-fonte. Adicione as seguintes linhas na secção de nível <dict> superior e, em seguida, guarde o ficheiro.

<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for VOIP calling.</string>

Configurar a estrutura do aplicativo

Abra o arquivo ContentView.swift do seu projeto. Adicione uma import declaração à parte superior do arquivo para importar a AzureCommunicationCalling biblioteca. Além disso, importe AVFoundation. Você precisará dele para solicitações de permissão de áudio no código.

import AzureCommunicationCalling
import AVFoundation

Inicializar o CallAgent

Para criar uma CallAgent instância a partir do CallClient, você precisa usar um callClient.createCallAgent método que retorna de forma assíncrona um CallAgent objeto depois que ele é inicializado.

Para criar um cliente de chamada, passe um CommunicationTokenCredential objeto:

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)
}

Passe o CommunicationTokenCredential objeto que você criou para CallCliente defina o nome para exibição:

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")
        }
})

O recurso de filtro de áudio permite que você aplique diferentes opções de pré-processamento de áudio ao áudio de saída. Existem dois tipos de filtros de áudio: OutgoingAudioFilters e LiveOutgoingAudioFilters. Use OutgoingAudioFilters para alterar as configurações antes do início da chamada e LiveOutgoingAudioFilters para alterar as configurações enquanto uma chamada está em andamento.

Primeiro, você precisa importar o SDK de chamada:

import AzureCommunicationCalling

Antes do início da chamada

OutgoingAudioFilters pode ser aplicado quando uma chamada é iniciada.

Comece criando um OutgoingAudioFilters e passando-o para OutgoingAudioOptions conforme mostrado no código a seguir:

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 a chamada

Pode candidatar-se LiveOutgoingAudioFilters após o início de uma chamada. Você pode recuperar esse objeto do objeto de chamada durante a chamada. Para alterar a configuração no LiveOutgoingAudioFilters, defina os membros dentro da classe para um valor válido e eles serão aplicados.

Apenas um subconjunto dos filtros disponíveis estão disponíveis durante uma chamada ativa: modo de música, cancelamento de eco e modo de supressão de OutgoingAudioFilters ruído.

LiveOutgoingAudioFilters filters = call.liveOutgoingAudioFilters
filters.musicModeEnabled = true
filters.acousticEchoCancellationEnabled = true
filters.NoiseSuppressionMode = NoiseSuppressionMode.high

Saiba como configurar os filtros de áudio com os SDKs nativos de chamada.

Os efeitos de áudio dos Serviços de Comunicação do Azure oferecem filtros que podem melhorar sua chamada de áudio. Para plataformas nativas (Android, iOS ou Windows) você pode configurar os seguintes filtros:

Cancelamento de eco

Ele elimina o eco acústico causado pela voz do chamador ecoando de volta para o microfone depois de ser emitida pelo alto-falante, garantindo uma comunicação clara.

Você pode configurar o filtro antes e durante uma chamada. Só pode alternar o cancelamento de eco se o modo de música estiver ativado. Por padrão, esse filtro está habilitado.

Supressão de ruído

Melhore a qualidade do áudio filtrando ruídos de fundo indesejados, como digitação, ar condicionado ou sons de rua. Esta tecnologia garante que a voz é nítida e clara, facilitando uma comunicação mais eficaz.

Você pode configurar o filtro antes e durante uma chamada. Os modos atualmente disponíveis são Off, Auto, Low, e High. Por padrão, esse recurso é definido como High modo.

Controle automático de ganho (AGC)

Ajusta automaticamente o volume do microfone para garantir níveis de áudio consistentes durante toda a chamada.

  • O controle de ganho automático analógico é um filtro disponível apenas antes de uma chamada. Por padrão, esse filtro está habilitado.
  • O controle de ganho automático digital é um filtro disponível apenas antes de uma chamada. Por padrão, esse filtro está habilitado.

Modo Música

O modo de música é um filtro disponível antes e durante uma chamada. Saiba mais sobre o modo de música aqui. O modo de música só funciona em plataformas nativas sobre 1n1 ou chamadas em grupo e não funciona em chamadas 1:1 entre nativos e web. Por padrão, o modo de música está desativado.

Pré-requisitos

Configure o seu sistema

Criar o projeto do Visual Studio

Para um aplicativo UWP, no Visual Studio 2022, crie um novo projeto Aplicativo em Branco (Universal Windows ). Depois de inserir o nome do projeto, sinta-se à vontade para escolher qualquer SDK do Windows posterior a 10.0.17763.0.

Para um aplicativo WinUI 3, crie um novo projeto com o modelo Aplicativo em branco, empacotado (WinUI 3 na área de trabalho) para configurar um aplicativo WinUI 3 de página única. É necessário o SDK de Aplicativos Windows versão 1.3 ou posterior.

Instalar o pacote e as dependências usando o Gerenciador de Pacotes NuGet

As APIs e bibliotecas do SDK de chamada estão disponíveis publicamente por meio de um pacote NuGet.

As etapas a seguir exemplificam como localizar, baixar e instalar o pacote NuGet do SDK de chamada:

  1. Abra o Gerenciador de Pacotes NuGet selecionando Ferramentas>Gerenciador>de Pacotes NuGet Gerenciar Pacotes NuGet para Solução.
  2. Selecione Procurar e, em seguida, introduza Azure.Communication.Calling.WindowsClient na caixa de pesquisa.
  3. Verifique se a caixa de seleção Incluir pré-lançamento está marcada.
  4. Selecione o Azure.Communication.Calling.WindowsClient pacote e, em seguida, selecione Azure.Communication.Calling.WindowsClient1.4.0-beta.1 ou uma versão mais recente.
  5. Marque a caixa de seleção que corresponde ao projeto dos Serviços de Comunicação na guia do lado direito.
  6. Selecione o botão Instalar .

O recurso de filtro de áudio permite que você aplique pré-processamento de áudio diferente ao áudio de saída. Existem dois tipos de filtros de áudio: OutgoingAudioFilters e LiveOutgoingAudioFilters. Use OutgoingAudioFilters para alterar as configurações antes do início da chamada e LiveOutgoingAudioFilters para alterar as configurações enquanto uma chamada está em andamento.

Primeiro, você precisa importar o SDK de chamada:

using Azure.Communication;
using Azure.Communication.Calling.WindowsClient;

Antes do início da chamada

OutgoingAudioFilters pode ser aplicado quando uma chamada é iniciada.

Comece criando um OutgoingAudioFilters e passando-o para OutgoingAudioOptions conforme mostrado no código a seguir:

var outgoingAudioOptions = new OutgoingAudioOptions();
var filters = new OutgoingAudioFilters()
{
    AnalogAutomaticGainControlEnabled = true,
    DigitalAutomaticGainControlEnabled = true,
    MusicModeEnabled = true,
    AcousticEchoCancellationEnabled = true,
    NoiseSuppressionMode = NoiseSuppressionMode.High
};
outgoingAudioOptions.Filters = filters;

Durante a chamada

Você pode aplicar LiveOutgoingAudioFilters depois que uma chamada começa Você pode recuperar esse objeto do objeto de chamada assim que a chamada começar. Para alterar a configuração no LiveOutgoingAudioFilters, defina os membros dentro da classe para um valor válido e eles serão aplicados.

Apenas um subconjunto dos filtros disponíveis estão disponíveis durante uma chamada ativa: modo de música, cancelamento de eco e modo de supressão de OutgoingAudioFilters ruído.

LiveOutgoingAudioFilters filter = call.LiveOutgoingAudioFilters;
filter.MusicModeEnabled = true;
filter.AcousticEchoCancellationEnabled = true;
filter.NoiseSuppressionMode = NoiseSuppressionMode.Auto;