Compartilhar via


Adicione melhorias de qualidade de áudio à sua experiência de chamada de áudio

As habilidades de efeitos de áudio supressão de ruído dos Serviços de Comunicação do Azure podem melhorar 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 de ruído também pode reduzir as distrações e o cansaço causados por locais barulhentos. Por exemplo, se estiver a atender uma chamada WebJS dos Serviços de Comunicação do Azure num café 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 versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

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

instalar o pacote npm

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

Importante

Esse tutorial utiliza a versão Serviços de Comunicação do Azure Calling SDK de 1.24.2-beta.1 (ou superior) e a versão Azure Communication Services Calling Audio Effects SDK superior ou igual a 1.1.1-beta.1 (ou superior).

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

Observação

Não é possível usar a biblioteca de efeitos de chamada de maneira autônoma e poderá funcionar apenas quando utilizada com a biblioteca de clientes de Chamada de Comunicação do Azure 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.

Observação

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

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

Para usar noise suppression efeitos de áudio no Azure Communication Calling SDK, você precisa do LocalAudioStream que está atualmente na chamada. Você precisa de acesso à AudioEffects API do LocalAudioStream para iniciar e parar efeitos de á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 propriedade activeEffects. A propriedade activeEffects 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 habilitada

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

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 &Windows), é possível configurar os seguintes filtros:

Cancelamento de eco

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

É possível configurar o filtro antes e durante uma chamada. Você só poderá alternar o cancelamento de eco somente se o modo de música estiver habilitado. Por padrão, esse filtro está habilitado.

Supressão de ruído

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

É possível configurar o filtro antes e durante uma chamada. Os modos disponíveis no momento são Off, Auto, Low e High. Por padrão, esse recurso é definido como o High modo .

AGC (controle de ganho automático)

Ajusta automaticamente o volume do microfone para garantir níveis de áudio consistentes ao longo da chamada.

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

Modo de 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 com mais de 1n1 ou chamadas em grupo e não funciona em chamadas 1:1 entre o nativo e a Web. Por padrão, o modo de música está desabilitado.

Pré-requisitos

Instalar o SDK

Localize o 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 de módulo, adicione as seguintes linhas à seção dependencies:

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

Inicializar objetos necessários

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

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

Para acessar DeviceManager, você deverá criar uma instância callAgent primeiro. Em seguida, você poderá usar o método CallClient.getDeviceManager 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 aplicar diferentes opções de pré-processamentos de áudio ao áudio de saída. Há 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 transmitindo-o para OutgoingAudioOptions, conforme mostrado no seguinte código:

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

Você pode aplicar 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 em LiveOutgoingAudioFilters, defina os membros dentro da classe com um valor válido e eles serão aplicados.

Somente um subconjunto dos filtros disponíveis em OutgoingAudioFilters fica disponível durante uma chamada ativa: modo de música, cancelamento de eco e modo de supressão de 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 &Windows), é possível configurar os seguintes filtros:

Cancelamento de eco

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

É possível configurar o filtro antes e durante uma chamada. Você só poderá alternar o cancelamento de eco somente se o modo de música estiver habilitado. Por padrão, esse filtro está habilitado.

Supressão de ruído

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

É possível configurar o filtro antes e durante uma chamada. Os modos disponíveis no momento são Off, Auto, Low e High. Por padrão, esse recurso é definido como o High modo .

AGC (controle de ganho automático)

Ajusta automaticamente o volume do microfone para garantir níveis de áudio consistentes ao longo da chamada.

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

Modo de 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 com mais de 1n1 ou chamadas em grupo e não funciona em chamadas 1:1 entre o nativo e a Web. Por padrão, o modo de música está desabilitado.

Pré-requisitos

Configurar o backup do sistema

Criar o projeto do Xcode

No Xcode, crie um projeto do iOS e selecione o modelo Aplicativo de Modo de Exibição Único. Este início rápido usa a estrutura SwiftUI, portanto, você deve definir a Linguagem como Swift e a Interface como SwiftUI.

Você não criará testes durante este início rápido. Fique à vontade para limpar a caixa de seleção Incluir Testes.

Captura de tela que mostra a janela para a criação de um projeto no Xcode.

Instalar 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 pod install.

  3. Abra o .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 aplicativo usando NSMicrophoneUsageDescription. Defina o valor associado a 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 de projeto e selecione Abrir Como>Código-Fonte. Adicione as linhas a seguir na seção do nível superior<dict>e, em seguida, salve o arquivo.

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

Configurar o framework de aplicativos

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

import AzureCommunicationCalling
import AVFoundation

Inicialização do CallAgent

Para criar umaCallAgentinstânciaCallClient,você precisa usar um método callClient.createCallAgentque retorne de modo assíncrono um objetoCallAgentdepois que ele for inicializado.

Para criar um cliente de chamada, passe um 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)
}

Passe o objeto CommunicationTokenCredential que você criou para CallClient e defina o nome de 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 aplicar diferentes opções de pré-processamentos de áudio ao áudio de saída. Há 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 transmitindo-o para OutgoingAudioOptions, conforme mostrado no seguinte código:

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

Você pode aplicar 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 em LiveOutgoingAudioFilters, defina os membros dentro da classe com um valor válido e eles serão aplicados.

Somente um subconjunto dos filtros disponíveis em OutgoingAudioFilters fica disponível durante uma chamada ativa: modo de música, cancelamento de eco e modo de supressão de 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 &Windows), é possível configurar os seguintes filtros:

Cancelamento de eco

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

É possível configurar o filtro antes e durante uma chamada. Você só poderá alternar o cancelamento de eco somente se o modo de música estiver habilitado. Por padrão, esse filtro está habilitado.

Supressão de ruído

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

É possível configurar o filtro antes e durante uma chamada. Os modos disponíveis no momento são Off, Auto, Low e High. Por padrão, esse recurso é definido como o High modo .

AGC (controle de ganho automático)

Ajusta automaticamente o volume do microfone para garantir níveis de áudio consistentes ao longo da chamada.

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

Modo de 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 com mais de 1n1 ou chamadas em grupo e não funciona em chamadas 1:1 entre o nativo e a Web. Por padrão, o modo de música está desabilitado.

Pré-requisitos

Configurar o backup do sistema

Criar o projeto do Visual Studio

Para um aplicativo UWP, no Visual Studio 2022, crie um novo projeto Aplicativo em Branco (Universal do Windows). Depois de inserir o nome do projeto, fique à 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. O SDK do Aplicativo do Windows versão 1.3 ou posterior é necessário.

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

As bibliotecas e as APIs 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 do NuGet do SDK de chamada:

  1. Abra o Gerenciador de Pacotes do NuGet selecionando Ferramentas>Gerenciador de Pacotes do NuGet>Gerenciar de Pacotes do NuGet para Solução.
  2. Selecione Procurar e, em seguida, insira 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 pacote Azure.Communication.Calling.WindowsClient e 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 à direita.
  6. Selecione o botão Instalar.

O recurso de filtro de áudio permite aplicar diferentes pré-processamentos de áudio ao áudio de saída. Há 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 transmitindo-o para OutgoingAudioOptions, conforme mostrado no seguinte código:

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

Aplique LiveOutgoingAudioFilters após o início de uma chamada. Você poderá recuperar esse objeto do objeto de chamada assim que ela for iniciada. Para alterar a configuração em LiveOutgoingAudioFilters, defina os membros dentro da classe com um valor válido e eles serão aplicados.

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

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