Gerenciar filtros de áudio

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.

Saiba como gerenciar recursos de processamento de áudio com os SDKs dos Serviços de Comunicação do Azure. Você aprende a aplicar diferentes recursos de áudio antes e durante as chamadas usando filtros de áudio.

Atualmente, existem cinco filtros diferentes disponíveis para controle.

Controle de ganho automático analógico

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

Controlo de ganho automático digital

O controle de ganho automático digital é um filtro disponível 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. Observe que o modo de música só funciona em chamadas 1:1 em plataformas nativas e chamadas em grupo. Atualmente, o modo de música não funciona em chamadas 1:1 entre nativo e web. Por padrão, o modo de música está desativado.

Cancelamento de eco

O cancelamento de eco é um filtro disponível 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

A supressão de ruído é um filtro disponível 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.

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

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 filters = call.getLiveOutgoingAudioFilters();
filters.setMusicModeEnabled(false);
filters.setAcousticEchoCancellationEnabled(false);
filters.setNoiseSuppressionMode(NoiseSuppressionMode.HIGH);

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 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:

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

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 filters = call.liveOutgoingAudioFilters
filters.musicModeEnabled = true
filters.acousticEchoCancellationEnabled = true
filters.NoiseSuppressionMode = NoiseSuppressionMode.high

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;

Próximos passos