Lägg till förbättringar av ljudkvaliteten i ljudsamtalsupplevelsen

Funktionerna för ljudeffekter i Azure Communication Services kan förbättra ljudsamtalen genom att filtrera bort oönskade bakgrundsljud. Brusreducering är en teknik som tar bort bakgrundsljud från ljudsamtal. Det gör ljudsamtal tydligare och bättre genom att eliminera bakgrundsbrus, vilket gör det lättare att prata och lyssna. Brusdämpning kan också minska distraktioner och trötthet som orsakas av bullriga platser. Om du till exempel tar ett Azure Communication Services WebJS-samtal på ett kafé med betydande brus kan du göra samtalsupplevelsen bättre om du aktiverar brusreducering.

Viktigt!

Funktioner som beskrivs i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Använda ljudeffekter – brusdämpning

Installera npm-paketet

npm install Använd kommandot för att installera Azure Communication Services Audio Effects SDK för JavaScript.

Viktigt!

I den här självstudien används Azure Communication Services Calling SDK-versionen av 1.24.2-beta.1 (eller senare) och Azure Communication Services Calling Audio Effects SDK-versionen som är större än eller lika med 1.1.1-beta.1 (eller större).

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

Kommentar

Biblioteket för anropande effekt kan inte användas fristående och kan bara fungera när det används med Azure Communication Calling-klientbiblioteket för WebJS (https://www.npmjs.com/package/@azure/communication-calling).

Mer information finns på sidan med NPM-paket för samtalseffekter.

Kommentar

Aktuellt webbläsarstöd för att lägga till ljudbrusundertryckningseffekter är endast tillgängligt i Chrome- och Edge Desktop-webbläsare.

Du kan lära dig mer om detaljerna i det anropande API:et.

Om du vill använda noise suppression ljudeffekter i Azure Communication Calling SDK behöver du det LocalAudioStream som för närvarande finns i anropet. Du behöver åtkomst till API:et AudioEffectsLocalAudioStream för att starta och stoppa ljudeffekter.

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

När som helst om du vill kontrollera vilka brusundertryckningseffekter som för närvarande är aktiva kan du använda egenskapen activeEffects . Egenskapen activeEffects returnerar ett objekt med namnen på de aktuella aktiva effekterna.

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

Starta ett anrop med brusundertryckning aktiverat

Om du vill starta ett anrop med brusdämpning aktiverat kan du skapa en ny LocalAudioStream med en AudioDeviceInfo (LocalAudioStream-källan bör inte vara rå MediaStream för att använda ljudeffekter) och skicka den i 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]
    }
});

Så här aktiverar du brusundertryckning under ett pågående samtal

Det finns situationer där en användare kan starta ett samtal och inte har brusundertryckning aktiverat, men deras aktuella miljö kan bli bullrig, vilket resulterar i att de behöver aktivera brusreducering. Om du vill aktivera brusundertryckning kan du använda API:et 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
});

Lär dig hur du konfigurerar ljudfilter med anropande interna SDK:er.

Azure Communication Services-ljudeffekterna erbjuder filter som kan förbättra ditt ljudsamtal. För interna plattformar (Android, iOS och Windows) kan du konfigurera följande filter:

Ekoreducering

Det eliminerar akustiskt eko som orsakas av att uppringarens röst ekar tillbaka in i mikrofonen efter att ha släppts ut från högtalaren, vilket säkerställer tydlig kommunikation.

Du kan konfigurera filtret före och under ett anrop. Du kan bara växla ekoreducering om musikläget är aktiverat. Som standard är det här filtret aktiverat.

Brusreducering

Förbättra ljudkvaliteten genom att filtrera bort oönskade bakgrundsljud som att skriva, luftkonditionering eller gatuljud. Den här tekniken säkerställer att rösten är skarp och tydlig, vilket underlättar effektivare kommunikation.

Du kan konfigurera filtret före och under ett anrop. De lägen som är tillgängliga för närvarande är Off, Auto, Lowoch High. Som standard är den här funktionen inställd på High läge.

Automatisk gain-kontroll (AGC)

Justerar mikrofonens volym automatiskt för att säkerställa konsekventa ljudnivåer under hela samtalet.

  • Analog automatisk gain-kontroll är ett filter som endast är tillgängligt före ett anrop. Som standard är det här filtret aktiverat.
  • Digital automatisk gain-kontroll är ett filter som endast är tillgängligt före ett anrop. Som standard är det här filtret aktiverat.

Musikläge

Musikläge är ett filter som är tillgängligt före och under ett anrop. Läs mer om musikläge här. Musikläget fungerar bara på interna plattformar över 1n1- eller gruppsamtal och fungerar inte i 1:1-anrop mellan inbyggt och webb. Som standard är musikläget inaktiverat.

Förutsättningar

Installera SDK:n

Leta upp filen build.gradle på projektnivå och lägg till mavenCentral() i listan med lagringsplatser under buildscript och allprojects:

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

I filen build.gradle på modulnivå lägger du sedan till följande rader i dependencies avsnittet:

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

Initiera nödvändiga objekt

Om du vill skapa en CallAgent instans måste du anropa createCallAgent metoden på en CallClient instans. Det här anropet returnerar asynkront ett CallAgent instansobjekt.

Metoden createCallAgent tar CommunicationUserCredential som ett argument som kapslar in en åtkomsttoken.

Om du vill komma åt DeviceManagermåste du skapa en callAgent instans först. Sedan kan du använda CallClient.getDeviceManager metoden för att hämta 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();

Om du vill ange ett visningsnamn för anroparen använder du den här alternativa metoden:

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();

Med ljudfilterfunktionen kan du använda olika alternativ för förbearbetning av ljud på utgående ljud. Det finns två typer av ljudfilter: OutgoingAudioFilters och LiveOutgoingAudioFilters. Använd OutgoingAudioFilters för att ändra inställningarna innan anropet startar och LiveOutgoingAudioFilters för att ändra inställningarna medan ett anrop pågår.

Du måste först importera den anropande SDK:n och de associerade klasserna:

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

Innan samtalet startar

OutgoingAudioFilters kan tillämpas när ett anrop startas.

Börja med att skapa en OutgoingAudioFilters och skicka den till OutgoingAudioOptions enligt följande kod:

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

Under samtalet

Du kan ansöka LiveOutgoingAudioFilters när ett samtal har startats. Du kan hämta det här objektet från anropsobjektet under anropet. Om du vill ändra inställningen i LiveOutgoingAudioFiltersanger du medlemmarna i klassen till ett giltigt värde och de tillämpas.

Endast en delmängd av filtren som är tillgängliga från OutgoingAudioFilters är tillgängliga under ett aktivt anrop: musikläge, ekoreducering och brusreduceringsläge.

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

Lär dig hur du konfigurerar ljudfilter med anropande interna SDK:er.

Azure Communication Services-ljudeffekterna erbjuder filter som kan förbättra ditt ljudsamtal. För interna plattformar (Android, iOS och Windows) kan du konfigurera följande filter:

Ekoreducering

Det eliminerar akustiskt eko som orsakas av att uppringarens röst ekar tillbaka in i mikrofonen efter att ha släppts ut från högtalaren, vilket säkerställer tydlig kommunikation.

Du kan konfigurera filtret före och under ett anrop. Du kan bara växla ekoreducering om musikläget är aktiverat. Som standard är det här filtret aktiverat.

Brusreducering

Förbättra ljudkvaliteten genom att filtrera bort oönskade bakgrundsljud som att skriva, luftkonditionering eller gatuljud. Den här tekniken säkerställer att rösten är skarp och tydlig, vilket underlättar effektivare kommunikation.

Du kan konfigurera filtret före och under ett anrop. De lägen som är tillgängliga för närvarande är Off, Auto, Lowoch High. Som standard är den här funktionen inställd på High läge.

Automatisk gain-kontroll (AGC)

Justerar mikrofonens volym automatiskt för att säkerställa konsekventa ljudnivåer under hela samtalet.

  • Analog automatisk gain-kontroll är ett filter som endast är tillgängligt före ett anrop. Som standard är det här filtret aktiverat.
  • Digital automatisk gain-kontroll är ett filter som endast är tillgängligt före ett anrop. Som standard är det här filtret aktiverat.

Musikläge

Musikläge är ett filter som är tillgängligt före och under ett anrop. Läs mer om musikläge här. Musikläget fungerar bara på interna plattformar över 1n1- eller gruppsamtal och fungerar inte i 1:1-anrop mellan inbyggt och webb. Som standard är musikläget inaktiverat.

Förutsättningar

Konfigurera systemet

Skapa Xcode-projektet

I Xcode skapar du ett nytt iOS-projekt och väljer mallen Enkel vyapp . Den här snabbstarten använder SwiftUI-ramverket, så du bör ange Language till Swift och ange Gränssnitt till SwiftUI.

Du kommer inte att skapa tester under den här snabbstarten. Avmarkera kryssrutan Inkludera tester .

Skärmbild som visar fönstret för att skapa ett projekt i Xcode.

Installera paketet och beroenden med hjälp av CocoaPods

  1. Skapa en Podfile för ditt program, som i det här exemplet:

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

  3. Öppna .xcworkspace med Xcode.

Begär åtkomst till mikrofonen

För att få åtkomst till enhetens mikrofon måste du uppdatera appens egenskapslista för information med hjälp NSMicrophoneUsageDescriptionav . Du anger det associerade värdet till en sträng som ska ingå i dialogrutan som systemet använder för att begära åtkomst från användaren.

Högerklicka på posten Info.plist i projektträdet och välj sedan Öppna som>källkod. Lägg till följande rader i avsnittet på den översta nivån <dict> och spara sedan filen.

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

Konfigurera appramverket

Öppna projektets ContentView.swift-fil . Lägg till en import deklaration överst i filen för att importera AzureCommunicationCalling biblioteket. Importera dessutom AVFoundation. Du behöver den för begäranden om ljudbehörighet i koden.

import AzureCommunicationCalling
import AVFoundation

Initiera CallAgent

Om du vill skapa en CallAgent instans från CallClientmåste du använda en callClient.createCallAgent metod som asynkront returnerar ett CallAgent objekt när det har initierats.

Skicka ett CommunicationTokenCredential objekt för att skapa en anropsklient:

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

Skicka objektet CommunicationTokenCredential som du skapade till CallClientoch ange visningsnamnet:

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

Med ljudfilterfunktionen kan du använda olika alternativ för förbearbetning av ljud på utgående ljud. Det finns två typer av ljudfilter: OutgoingAudioFilters och LiveOutgoingAudioFilters. Använd OutgoingAudioFilters för att ändra inställningarna innan anropet startar och LiveOutgoingAudioFilters för att ändra inställningarna medan ett anrop pågår.

Du måste först importera den anropande SDK:n:

import AzureCommunicationCalling

Innan samtalet startar

OutgoingAudioFilters kan tillämpas när ett anrop startas.

Börja med att skapa en OutgoingAudioFilters och skicka den till OutgoingAudioOptions enligt följande kod:

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

Under samtalet

Du kan ansöka LiveOutgoingAudioFilters när ett samtal har startats. Du kan hämta det här objektet från anropsobjektet under anropet. Om du vill ändra inställningen i LiveOutgoingAudioFiltersanger du medlemmarna i klassen till ett giltigt värde och de tillämpas.

Endast en delmängd av filtren som är tillgängliga från OutgoingAudioFilters är tillgängliga under ett aktivt anrop: musikläge, ekoreducering och brusreduceringsläge.

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

Lär dig hur du konfigurerar ljudfilter med anropande interna SDK:er.

Azure Communication Services-ljudeffekterna erbjuder filter som kan förbättra ditt ljudsamtal. För interna plattformar (Android, iOS och Windows) kan du konfigurera följande filter:

Ekoreducering

Det eliminerar akustiskt eko som orsakas av att uppringarens röst ekar tillbaka in i mikrofonen efter att ha släppts ut från högtalaren, vilket säkerställer tydlig kommunikation.

Du kan konfigurera filtret före och under ett anrop. Du kan bara växla ekoreducering om musikläget är aktiverat. Som standard är det här filtret aktiverat.

Brusreducering

Förbättra ljudkvaliteten genom att filtrera bort oönskade bakgrundsljud som att skriva, luftkonditionering eller gatuljud. Den här tekniken säkerställer att rösten är skarp och tydlig, vilket underlättar effektivare kommunikation.

Du kan konfigurera filtret före och under ett anrop. De lägen som är tillgängliga för närvarande är Off, Auto, Lowoch High. Som standard är den här funktionen inställd på High läge.

Automatisk gain-kontroll (AGC)

Justerar mikrofonens volym automatiskt för att säkerställa konsekventa ljudnivåer under hela samtalet.

  • Analog automatisk gain-kontroll är ett filter som endast är tillgängligt före ett anrop. Som standard är det här filtret aktiverat.
  • Digital automatisk gain-kontroll är ett filter som endast är tillgängligt före ett anrop. Som standard är det här filtret aktiverat.

Musikläge

Musikläge är ett filter som är tillgängligt före och under ett anrop. Läs mer om musikläge här. Musikläget fungerar bara på interna plattformar över 1n1- eller gruppsamtal och fungerar inte i 1:1-anrop mellan inbyggt och webb. Som standard är musikläget inaktiverat.

Förutsättningar

Konfigurera systemet

Skapa Visual Studio-projektet

För en UWP-app i Visual Studio 2022 skapar du ett nytt projekt för Tom app (Universell Windows). När du har angett projektnamnet kan du välja valfri Windows SDK senare än 10.0.17763.0.

För en WinUI 3-app skapar du ett nytt projekt med mallen Tom app, Paketerad (WinUI 3 i Desktop) för att konfigurera en WinUI 3-app med en enda sida. SDK för Windows-appar version 1.3 eller senare krävs.

Installera paketet och beroendena med hjälp av NuGet Package Manager

Anropande SDK-API:er och bibliotek är offentligt tillgängliga via ett NuGet-paket.

Följande steg illustrerar hur du hittar, laddar ned och installerar NuGet-paketet Calling SDK:

  1. Öppna NuGet Package Manager genom att välja Verktyg>NuGet Package Manager>Hantera NuGet-paket för lösning.
  2. Välj Bläddra och ange Azure.Communication.Calling.WindowsClient sedan i sökrutan.
  3. Kontrollera att kryssrutan Inkludera förhandsversion är markerad.
  4. Välj paketet Azure.Communication.Calling.WindowsClient och välj Azure.Communication.Calling.WindowsClientsedan 1.4.0-beta.1 eller en nyare version.
  5. Markera kryssrutan som motsvarar Communication Services-projektet på den högra fliken.
  6. Välj knappen Installera.

Med funktionen för ljudfilter kan du använda olika ljudförbearbetningar på utgående ljud. Det finns två typer av ljudfilter: OutgoingAudioFilters och LiveOutgoingAudioFilters. Använd OutgoingAudioFilters för att ändra inställningarna innan anropet startar och LiveOutgoingAudioFilters för att ändra inställningarna medan ett anrop pågår.

Du måste först importera den anropande SDK:n:

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

Innan samtalet startar

OutgoingAudioFilters kan tillämpas när ett anrop startas.

Börja med att skapa en OutgoingAudioFilters och skicka den till OutgoingAudioOptions enligt följande kod:

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

Under samtalet

Du kan använda LiveOutgoingAudioFilters när ett anrop har startats Du kan hämta det här objektet från anropsobjektet när anropet börjar. Om du vill ändra inställningen i LiveOutgoingAudioFiltersanger du medlemmarna i klassen till ett giltigt värde och de tillämpas.

Endast en delmängd av filtren som är tillgängliga från OutgoingAudioFilters är tillgängliga under ett aktivt anrop: musikläge, ekoreducering och brusreduceringsläge.

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