Share via


Aggiungere miglioramenti della qualità audio all'esperienza di chiamata audio

Le Servizi di comunicazione di Azure funzionalità di eliminazione del rumore degli effetti audio possono migliorare le chiamate audio filtrando i rumori di fondo indesiderati. L'eliminazione del rumore è una tecnologia che rimuove i rumori di fondo dalle chiamate audio. Rende le chiamate audio più chiare e migliori eliminando il rumore di fondo, rendendo più facile parlare e ascoltare. L'eliminazione del rumore può anche ridurre le distrazioni e la stanchezza causate da luoghi rumorosi. Ad esempio, se si sta prendendo una chiamata webJS Servizi di comunicazione di Azure in un bar con un notevole rumore, l'attivazione dell'eliminazione del rumore può migliorare l'esperienza di chiamata.

Importante

La funzionalità descritta in questo articolo è attualmente disponibile in anteprima pubblica. Questa versione di anteprima viene fornita senza contratto di servizio, pertanto se ne sconsiglia l’uso per i carichi di lavoro in ambienti di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Uso degli effetti audio - Eliminazione del rumore

Installare il pacchetto npm

Usare il npm install comando per installare Servizi di comunicazione di Azure Audio Effects SDK per JavaScript.

Importante

Questa esercitazione usa la versione Servizi di comunicazione di Azure Calling SDK di 1.24.2-beta.1 (o versione successiva) e la versione Servizi di comunicazione di Azure Calling Audio Effects SDK maggiore o uguale a 1.1.1-beta.1 (o successiva).

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

Nota

La libreria di effetti chiamanti non può essere usata in modalità autonoma e può funzionare solo quando viene usata con la libreria client di Chiamata di comunicazione di Azure per WebJS (https://www.npmjs.com/package/@azure/communication-calling).

Per altri dettagli , vedere la pagina del pacchetto npm degli effetti chiamante.

Nota

Il supporto del browser corrente per l'aggiunta di effetti di eliminazione del rumore audio è disponibile solo nei browser Desktop Chrome e Edge.

È possibile ottenere informazioni sulle specifiche dell'API chiamante.

Per usare noise suppression gli effetti audio all'interno di Azure Communication Calling SDK, è necessario che LocalAudioStream sia attualmente presente nella chiamata. È necessario accedere all'API AudioEffects di LocalAudioStream per avviare e arrestare gli effetti 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}`);
});

In qualsiasi momento se si desidera controllare quali effetti di eliminazione del rumore sono attualmente attivi, è possibile usare la activeEffects proprietà . La activeEffects proprietà restituisce un oggetto con i nomi degli effetti attivi correnti.

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

Avviare una chiamata con l'eliminazione del rumore abilitata

Per avviare una chiamata con l'eliminazione del rumore attivata, è possibile creare un nuovo LocalAudioStream oggetto con un AudioDeviceInfo oggetto (l'origine LocalAudioStream non deve essere un MediaStream raw per usare gli effetti audio) e passarlo in 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]
    }
});

Come attivare l'eliminazione del rumore durante una chiamata in corso

Ci sono situazioni in cui un utente potrebbe avviare una chiamata e non avere l'eliminazione del rumore attivata, ma l'ambiente corrente potrebbe diventare rumoroso, causando la necessità di attivare l'eliminazione del rumore. Per attivare l'eliminazione del rumore, è possibile usare l'APIaudioEffectsFeatureApi.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
});

Informazioni su come configurare i filtri audio con gli SDK nativi per chiamate.

Gli effetti audio Servizi di comunicazione di Azure offrono filtri che possono migliorare la chiamata audio. Per le piattaforme native (Android, iOS e Windows) è possibile configurare i filtri seguenti:

Annullamento echo

Elimina l'eco acustica causata dal richiamo vocale del chiamante nel microfono dopo essere stato emesso dall'altoparlante, assicurando una comunicazione chiara.

È possibile configurare il filtro prima e durante una chiamata. Puoi attivare o disattivare l'annullamento dell'eco solo se la modalità musica è abilitata. Per impostazione predefinita, questo filtro è abilitato.

Eliminazione del rumore

Migliorare la qualità audio filtrando i rumori di fondo indesiderati, ad esempio digitazione, aria condizionata o suoni stradali. Questa tecnologia garantisce che la voce sia nitida e chiara, semplificando la comunicazione più efficace.

È possibile configurare il filtro prima e durante una chiamata. Le modalità attualmente disponibili sono Off, Auto, Lowe High. Per impostazione predefinita, questa funzionalità è impostata sulla High modalità .

Controllo automatico dei guadagni (AGC)

Regola automaticamente il volume del microfono per garantire livelli audio coerenti durante la chiamata.

  • Il controllo del guadagno automatico analogico è un filtro disponibile solo prima di una chiamata. Per impostazione predefinita, questo filtro è abilitato.
  • Il controllo del guadagno automatico digitale è un filtro disponibile solo prima di una chiamata. Per impostazione predefinita, questo filtro è abilitato.

modalità Musica

Musica modalità è un filtro disponibile prima e durante una chiamata. Altre informazioni sulla modalità musica sono disponibili qui. Musica modalità funziona solo su piattaforme native su 1n1 o chiamate di gruppo e non funziona nelle chiamate 1:1 tra native e Web. Per impostazione predefinita, la modalità musica è disabilitata.

Prerequisiti

Installazione dell'SDK

Individuare il file build.gradle a livello di progetto e aggiungere mavenCentral() all'elenco dei repository in buildscript e allprojects:

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

Quindi, nel file build.gradle a livello di modulo aggiungere le righe seguenti alla dependencies sezione :

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

Inizializzare gli oggetti necessari

Per creare un'istanza CallAgent di , è necessario chiamare il metodo in un'istanza createCallAgentCallClient di . Questa chiamata restituisce in modo asincrono un CallAgent oggetto istanza.

Il createCallAgent metodo accetta CommunicationUserCredential come argomento, che incapsula un token di accesso.

Per accedere a DeviceManager, è prima necessario creare un'istanza callAgent di . È quindi possibile usare il CallClient.getDeviceManager metodo per ottenere 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();

Per impostare un nome visualizzato per il chiamante, usare questo metodo 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 funzionalità di filtro audio consente di applicare diverse opzioni di pre-elaborazione audio all'audio in uscita. Esistono due tipi di filtri audio: OutgoingAudioFilters e LiveOutgoingAudioFilters. Usare OutgoingAudioFilters per modificare le impostazioni prima dell'avvio della chiamata e LiveOutgoingAudioFilters per modificare le impostazioni mentre è in corso una chiamata.

È prima necessario importare l'SDK chiamante e le classi associate:

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

Prima dell'avvio della chiamata

OutgoingAudioFilters può essere applicato all'avvio di una chiamata.

Iniziare creando un OutgoingAudioFilters oggetto e passandolo in OutgoingAudioOptions, come illustrato nel codice seguente:

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 chiamata

È possibile applicare LiveOutgoingAudioFilters dopo l'inizio di una chiamata. È possibile recuperare questo oggetto dall'oggetto chiamata durante la chiamata. Per modificare l'impostazione in LiveOutgoingAudioFilters, impostare i membri all'interno della classe su un valore valido e applicati.

Durante una chiamata attiva sono disponibili solo un subset dei filtri OutgoingAudioFilters disponibili: modalità musica, annullamento dell'eco e modalità di eliminazione del rumore.

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

Informazioni su come configurare i filtri audio con gli SDK nativi per chiamate.

Gli effetti audio Servizi di comunicazione di Azure offrono filtri che possono migliorare la chiamata audio. Per le piattaforme native (Android, iOS e Windows) è possibile configurare i filtri seguenti:

Annullamento echo

Elimina l'eco acustica causata dal richiamo vocale del chiamante nel microfono dopo essere stato emesso dall'altoparlante, assicurando una comunicazione chiara.

È possibile configurare il filtro prima e durante una chiamata. Puoi attivare o disattivare l'annullamento dell'eco solo se la modalità musica è abilitata. Per impostazione predefinita, questo filtro è abilitato.

Eliminazione del rumore

Migliorare la qualità audio filtrando i rumori di fondo indesiderati, ad esempio digitazione, aria condizionata o suoni stradali. Questa tecnologia garantisce che la voce sia nitida e chiara, semplificando la comunicazione più efficace.

È possibile configurare il filtro prima e durante una chiamata. Le modalità attualmente disponibili sono Off, Auto, Lowe High. Per impostazione predefinita, questa funzionalità è impostata sulla High modalità .

Controllo automatico dei guadagni (AGC)

Regola automaticamente il volume del microfono per garantire livelli audio coerenti durante la chiamata.

  • Il controllo del guadagno automatico analogico è un filtro disponibile solo prima di una chiamata. Per impostazione predefinita, questo filtro è abilitato.
  • Il controllo del guadagno automatico digitale è un filtro disponibile solo prima di una chiamata. Per impostazione predefinita, questo filtro è abilitato.

modalità Musica

Musica modalità è un filtro disponibile prima e durante una chiamata. Altre informazioni sulla modalità musica sono disponibili qui. Musica modalità funziona solo su piattaforme native su 1n1 o chiamate di gruppo e non funziona nelle chiamate 1:1 tra native e Web. Per impostazione predefinita, la modalità musica è disabilitata.

Prerequisiti

Configurare il sistema

Creare il progetto Xcode

In Xcode creare un nuovo progetto iOS e selezionare il modello Single View Application. Questa guida introduttiva usa il framework SwiftUI, quindi è consigliabile impostare Language su Swift e impostare Interface su SwiftUI.

Durante questa guida introduttiva non verranno creati test. Deselezionare la casella di controllo Includi test .

Screenshot che mostra la finestra per la creazione di un progetto in Xcode.

Installare il pacchetto e le dipendenze usando CocoaPods

  1. Creare un podfile per l'applicazione, come nell'esempio seguente:

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

  3. Aprire .xcworkspace con Xcode.

Richiedere l'accesso al microfono

Per accedere al microfono del dispositivo, è necessario aggiornare l'elenco delle proprietà delle informazioni dell'app usando NSMicrophoneUsageDescription. Impostare il valore associato su una stringa che verrà inclusa nella finestra di dialogo usata dal sistema per richiedere l'accesso dall'utente.

Fare clic con il pulsante destro del mouse sulla voce Info.plist dell'albero del progetto e quindi scegliere Apri come>codice sorgente. Aggiungere le righe seguenti nella sezione di primo livello <dict> e quindi salvare il file.

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

Configurare il framework dell'app

Aprire il file ContentView.swift del progetto. Aggiungere una import dichiarazione all'inizio del file per importare la AzureCommunicationCalling libreria. Inoltre, importare AVFoundation. Sarà necessario per le richieste di autorizzazione audio nel codice.

import AzureCommunicationCalling
import AVFoundation

Inizializzare CallAgent

Per creare un'istanza CallAgent da CallClient, è necessario usare un callClient.createCallAgent metodo che restituisce in modo asincrono un CallAgent oggetto dopo l'inizializzazione.

Per creare un client di chiamata, passare un CommunicationTokenCredential oggetto :

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

Passare l'oggetto CommunicationTokenCredential creato a CallCliente impostare il nome visualizzato:

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 funzionalità di filtro audio consente di applicare diverse opzioni di pre-elaborazione audio all'audio in uscita. Esistono due tipi di filtri audio: OutgoingAudioFilters e LiveOutgoingAudioFilters. Usare OutgoingAudioFilters per modificare le impostazioni prima dell'avvio della chiamata e LiveOutgoingAudioFilters per modificare le impostazioni mentre è in corso una chiamata.

È prima necessario importare l'SDK chiamante:

import AzureCommunicationCalling

Prima dell'avvio della chiamata

OutgoingAudioFilters può essere applicato all'avvio di una chiamata.

Iniziare creando un OutgoingAudioFilters oggetto e passandolo in OutgoingAudioOptions, come illustrato nel codice seguente:

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 chiamata

È possibile applicare LiveOutgoingAudioFilters dopo l'inizio di una chiamata. È possibile recuperare questo oggetto dall'oggetto chiamata durante la chiamata. Per modificare l'impostazione in LiveOutgoingAudioFilters, impostare i membri all'interno della classe su un valore valido e applicati.

Durante una chiamata attiva sono disponibili solo un subset dei filtri OutgoingAudioFilters disponibili: modalità musica, annullamento dell'eco e modalità di eliminazione del rumore.

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

Informazioni su come configurare i filtri audio con gli SDK nativi per chiamate.

Gli effetti audio Servizi di comunicazione di Azure offrono filtri che possono migliorare la chiamata audio. Per le piattaforme native (Android, iOS e Windows) è possibile configurare i filtri seguenti:

Annullamento echo

Elimina l'eco acustica causata dal richiamo vocale del chiamante nel microfono dopo essere stato emesso dall'altoparlante, assicurando una comunicazione chiara.

È possibile configurare il filtro prima e durante una chiamata. Puoi attivare o disattivare l'annullamento dell'eco solo se la modalità musica è abilitata. Per impostazione predefinita, questo filtro è abilitato.

Eliminazione del rumore

Migliorare la qualità audio filtrando i rumori di fondo indesiderati, ad esempio digitazione, aria condizionata o suoni stradali. Questa tecnologia garantisce che la voce sia nitida e chiara, semplificando la comunicazione più efficace.

È possibile configurare il filtro prima e durante una chiamata. Le modalità attualmente disponibili sono Off, Auto, Lowe High. Per impostazione predefinita, questa funzionalità è impostata sulla High modalità .

Controllo automatico dei guadagni (AGC)

Regola automaticamente il volume del microfono per garantire livelli audio coerenti durante la chiamata.

  • Il controllo del guadagno automatico analogico è un filtro disponibile solo prima di una chiamata. Per impostazione predefinita, questo filtro è abilitato.
  • Il controllo del guadagno automatico digitale è un filtro disponibile solo prima di una chiamata. Per impostazione predefinita, questo filtro è abilitato.

modalità Musica

Musica modalità è un filtro disponibile prima e durante una chiamata. Altre informazioni sulla modalità musica sono disponibili qui. Musica modalità funziona solo su piattaforme native su 1n1 o chiamate di gruppo e non funziona nelle chiamate 1:1 tra native e Web. Per impostazione predefinita, la modalità musica è disabilitata.

Prerequisiti

Configurare il sistema

Creare il progetto di Visual Studio

Per un'app UWP, in Visual Studio 2022 creare un nuovo progetto App vuota (Windows universale). Dopo aver immesso il nome del progetto, è possibile scegliere qualsiasi Windows SDK successivo alla versione 10.0.17763.0.

Per un'app WinUI 3, creare un nuovo progetto con il modello App vuota, In pacchetto (WinUI 3 in Desktop) per configurare un'app WinUI 3 a pagina singola. SDK per app di Windows versione 1.3 o successiva è necessario.

Installare il pacchetto e le dipendenze usando NuGet Gestione pacchetti

Le API e le librerie di Calling SDK sono disponibili pubblicamente tramite un pacchetto NuGet.

I passaggi seguenti illustrano come trovare, scaricare e installare il pacchetto NuGet di Calling SDK:

  1. Aprire Gestione pacchetti NuGet selezionando Strumenti>NuGet Gestione pacchetti> Gestisci pacchetti NuGet per la soluzione.
  2. Selezionare Sfoglia e quindi immettere Azure.Communication.Calling.WindowsClient nella casella di ricerca.
  3. Assicurarsi che la casella di controllo Includi versione preliminare sia selezionata.
  4. Selezionare il Azure.Communication.Calling.WindowsClient pacchetto e quindi selezionare Azure.Communication.Calling.WindowsClient1.4.0-beta.1 o una versione più recente.
  5. Selezionare la casella di controllo corrispondente al progetto Servizi di comunicazione nella scheda a destra.
  6. Selezionare il pulsante Installa.

La funzionalità di filtro audio consente di applicare la pre-elaborazione audio diversa all'audio in uscita. Esistono due tipi di filtri audio: OutgoingAudioFilters e LiveOutgoingAudioFilters. Usare OutgoingAudioFilters per modificare le impostazioni prima dell'avvio della chiamata e LiveOutgoingAudioFilters per modificare le impostazioni mentre è in corso una chiamata.

È prima necessario importare l'SDK chiamante:

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

Prima dell'avvio della chiamata

OutgoingAudioFilters può essere applicato all'avvio di una chiamata.

Iniziare creando un OutgoingAudioFilters oggetto e passandolo in OutgoingAudioOptions, come illustrato nel codice seguente:

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

Durante la chiamata

È possibile applicare LiveOutgoingAudioFilters dopo l'avvio di una chiamata È possibile recuperare questo oggetto dall'oggetto chiamata all'inizio della chiamata. Per modificare l'impostazione in LiveOutgoingAudioFilters, impostare i membri all'interno della classe su un valore valido e applicati.

Durante una chiamata attiva sono disponibili solo un subset dei filtri OutgoingAudioFilters disponibili: modalità musica, annullamento dell'eco e modalità di eliminazione del rumore.

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