Přidání vylepšení kvality zvuku do prostředí pro hlasové hovory

Možnosti potlačení zvuku ve službě Azure Communication Services můžou zlepšit hlasové hovory filtrováním nežádoucích šumů na pozadí. Potlačení šumu je technologie, která odstraňuje šumy na pozadí ze zvukových hovorů. Díky tomu je hlasové hovory přehlednější a lepší díky odstranění šumu na pozadí, což usnadňuje komunikaci a poslech. Potlačení šumu může také snížit rušivé a únavy způsobené hlučnými místy. Pokud například používáte volání WebJS služby Azure Communication Services v kavárně se značným šumem, může zapnutí potlačení šumu zlepšit prostředí volání.

Důležité

Funkce popsané v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Použití zvukových efektů – potlačení šumu

Instalace balíčku npm

npm install Pomocí příkazu nainstalujte sadu AZURE Communication Services Audio Effects SDK pro JavaScript.

Důležité

V tomto kurzu se používá verze 1.24.2-beta.1 sady SDK pro volání služeb Azure Communication Services (nebo vyšší) a verze sady SDK azure Communication Services volající zvukové efekty větší nebo rovna 1.1.1-beta.1 (nebo vyšší).

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

Poznámka:

Knihovnu volajících efektů nelze použít samostatně a může fungovat pouze v případě, že se používá s klientskou knihovnou Azure Communication Calling pro WebJS (https://www.npmjs.com/package/@azure/communication-calling).

Další podrobnosti najdete na stránce balíčku npm volajících efektů.

Poznámka:

Aktuální podpora prohlížeče pro přidání efektů potlačení šumu zvuku je dostupná jenom v prohlížečích Chrome a Edge Desktop Browser.

Dozvíte se o specifikách volajícího rozhraní API.

Pokud chcete použít noise suppression zvukové efekty v sadě SDK pro volání komunikace Azure, potřebujete LocalAudioStream , aby se právě volala. Ke spuštění a zastavení zvukových LocalAudioStream efektů potřebujete přístup k AudioEffects rozhraní API.

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

Kdykoli, pokud chcete zkontrolovat, jaké efekty potlačení šumu jsou aktuálně aktivní, můžete tuto vlastnost použít activeEffects . Vlastnost activeEffects vrátí objekt s názvy aktuálních aktivních efektů.

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

Zahájení hovoru s povoleným potlačením šumu

Chcete-li zahájit volání se zapnutým potlačením šumu, můžete vytvořit nový LocalAudioStream s (AudioDeviceInfozdroj LocalAudioStream by neměl být nezpracovaný MediaStream pro použití zvukových efektů) a předat ho CallStartOptions.audioOptionsdo :

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

Jak zapnout potlačení šumu během probíhajícího hovoru

Existují situace, kdy uživatel může zahájit volání a nemá zapnuté potlačení šumu, ale jeho aktuální prostředí může mít hlučné, což jim může vyžadovat zapnutí potlačení šumu. Pokud chcete zapnout potlačení šumu audioEffectsFeatureApi.startEffects , můžete použít rozhraní 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
});

Zjistěte, jak nakonfigurovat zvukové filtry pomocí nativních sad SDK pro volání.

Zvukové efekty Azure Communication Services nabízejí filtry, které můžou zlepšit hlasový hovor. Pro nativní platformy (Android, iOS a Windows) můžete nakonfigurovat následující filtry:

Zrušení ozvěny

Eliminuje akustickou ozvěnu způsobenou hlasem volajícího ozvěnou zpět do mikrofonu po vysílání z reproduktoru a zajišťuje jasnou komunikaci.

Filtr můžete nakonfigurovat před voláním a během hovoru. Zrušení ozvěny můžete přepínat pouze v případě, že je povolený režim hudby. Ve výchozím nastavení je tento filtr povolený.

Potlačení šumu

Zlepšení kvality zvuku filtrování nežádoucích zvuků na pozadí, jako je psaní, klimatizace nebo pouliční zvuky. Tato technologie zajišťuje, aby hlas byl zřetelný a jasný, což usnadňuje efektivnější komunikaci.

Filtr můžete nakonfigurovat před voláním a během hovoru. Aktuálně dostupné režimy jsou Off, Auto, Lowa High. Ve výchozím nastavení je tato funkce nastavená na High režim.

Řízení automatického získání (AGC)

Automaticky upraví hlasitost mikrofonu, aby se zajistily konzistentní úrovně zvuku během hovoru.

  • Analogové automatické získání řízení je filtr dostupný pouze před voláním. Ve výchozím nastavení je tento filtr povolený.
  • Řízení digitálního automatického získání je filtr dostupný pouze před voláním. Ve výchozím nastavení je tento filtr povolený.

Hudební režim

Hudební režim je filtr dostupný před voláním a během hovoru. Další informace o hudebním režimu najdete tady. Režim hudby funguje jenom na nativních platformách s více než 1n1 nebo skupinovými voláními a nefunguje ve voláních 1:1 mezi nativními a webovými hovory. Ve výchozím nastavení je režim hudby zakázaný.

Požadavky

Nainstalujte sadu SDK .

Vyhledejte soubor build.gradle na úrovni projektu a přidejte mavenCentral() ho do seznamu úložišť v části buildscript aallprojects:

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

Potom do souboru build.gradle na úrovni modulu přidejte do oddílu dependencies následující řádky:

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

Inicializace požadovaných objektů

Pokud chcete vytvořit CallAgent instanci, musíte metodu createCallAgentCallClient volat v instanci. Toto volání asynchronně vrátí CallAgent objekt instance.

Metoda createCallAgent přebírá CommunicationUserCredential jako argument, který zapouzdřuje přístupový token.

Pokud chcete získat přístup DeviceManager, musíte nejprve vytvořit callAgent instanci. Pak můžete použít metodu CallClient.getDeviceManager získat 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();

Pokud chcete nastavit zobrazovaný název volajícího, použijte tuto alternativní metodu:

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

Funkce filtru zvuku umožňuje použít pro odchozí zvuk různé možnosti předběžného zpracování zvuku. Existují dva typy zvukových filtrů: OutgoingAudioFilters a LiveOutgoingAudioFilters. Slouží OutgoingAudioFilters ke změně nastavení před zahájením hovoru a LiveOutgoingAudioFilters ke změně nastavení během probíhajícího hovoru.

Nejprve je potřeba naimportovat volající sadu SDK a přidružené třídy:

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

Před zahájením hovoru

OutgoingAudioFilters lze použít při spuštění volání.

Začněte tím, že vytvoříte OutgoingAudioFilters a předáte ho do OutgoingAudioOptions, jak je znázorněno v následujícím kódu:

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

Během hovoru

Můžete použít LiveOutgoingAudioFilters po zahájení hovoru. Tento objekt můžete načíst z objektu volání během volání. Pokud chcete změnit nastavení, LiveOutgoingAudioFiltersnastavte členy uvnitř třídy na platnou hodnotu a použijí se.

Během aktivního volání jsou k dispozici pouze podmnožina dostupných filtrů OutgoingAudioFilters : režim hudby, zrušení ozvěny a režim potlačení šumu.

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

Zjistěte, jak nakonfigurovat zvukové filtry pomocí nativních sad SDK pro volání.

Zvukové efekty Azure Communication Services nabízejí filtry, které můžou zlepšit hlasový hovor. Pro nativní platformy (Android, iOS a Windows) můžete nakonfigurovat následující filtry:

Zrušení ozvěny

Eliminuje akustickou ozvěnu způsobenou hlasem volajícího ozvěnou zpět do mikrofonu po vysílání z reproduktoru a zajišťuje jasnou komunikaci.

Filtr můžete nakonfigurovat před voláním a během hovoru. Zrušení ozvěny můžete přepínat pouze v případě, že je povolený režim hudby. Ve výchozím nastavení je tento filtr povolený.

Potlačení šumu

Zlepšení kvality zvuku filtrování nežádoucích zvuků na pozadí, jako je psaní, klimatizace nebo pouliční zvuky. Tato technologie zajišťuje, aby hlas byl zřetelný a jasný, což usnadňuje efektivnější komunikaci.

Filtr můžete nakonfigurovat před voláním a během hovoru. Aktuálně dostupné režimy jsou Off, Auto, Lowa High. Ve výchozím nastavení je tato funkce nastavená na High režim.

Řízení automatického získání (AGC)

Automaticky upraví hlasitost mikrofonu, aby se zajistily konzistentní úrovně zvuku během hovoru.

  • Analogové automatické získání řízení je filtr dostupný pouze před voláním. Ve výchozím nastavení je tento filtr povolený.
  • Řízení digitálního automatického získání je filtr dostupný pouze před voláním. Ve výchozím nastavení je tento filtr povolený.

Hudební režim

Hudební režim je filtr dostupný před voláním a během hovoru. Další informace o hudebním režimu najdete tady. Režim hudby funguje jenom na nativních platformách s více než 1n1 nebo skupinovými voláními a nefunguje ve voláních 1:1 mezi nativními a webovými hovory. Ve výchozím nastavení je režim hudby zakázaný.

Požadavky

Nastavení systému

Vytvoření projektu Xcode

V Xcode vytvořte nový projekt pro iOS a vyberte šablonu aplikace s jedním zobrazením . Tento rychlý start používá architekturu SwiftUI, takže byste měli nastavit jazyk na Swift a nastavit rozhraní na SwiftUI.

Během tohoto rychlého startu nebudete vytvářet testy. Zrušte zaškrtnutí políčka Zahrnout testy .

Snímek obrazovky znázorňující okno pro vytvoření projektu v Xcode

Instalace balíčku a závislostí pomocí CocoaPods

  1. Vytvořte pro aplikaci soubor Podfile, například v tomto příkladu:

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

  3. Otevřete .xcworkspace pomocí Xcode.

Vyžádání přístupu k mikrofonu

Pokud chcete získat přístup k mikrofonu zařízení, musíte aktualizovat seznam vlastností informací aplikace pomocí NSMicrophoneUsageDescription. Přidruženou hodnotu nastavíte na řetězec, který bude zahrnutý v dialogovém okně, které systém používá k vyžádání přístupu od uživatele.

Klikněte pravým tlačítkem myši na položku Info.plist stromu projektu a pak vyberte Open As>Source Code. Do oddílu nejvyšší úrovně <dict> přidejte následující řádky a pak soubor uložte.

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

Nastavení architektury aplikace

Otevřete soubor ContentView.swift projektu. import Přidejte deklaraci do horní části souboru pro import AzureCommunicationCalling knihovny. Kromě toho import AVFoundation. Budete ho potřebovat pro žádosti o zvuková oprávnění v kódu.

import AzureCommunicationCalling
import AVFoundation

Inicializace callagentu

Chcete-li vytvořit CallAgent instanci z CallClient, musíte použít metodu callClient.createCallAgent , která asynchronně vrátí CallAgent objekt po inicializaci.

Pokud chcete vytvořit klienta volání, předejte CommunicationTokenCredential objekt:

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

CommunicationTokenCredential Předejte objekt, který jste vytvořiliCallClient, a nastavte zobrazovaný název:

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

Funkce filtru zvuku umožňuje použít pro odchozí zvuk různé možnosti předběžného zpracování zvuku. Existují dva typy zvukových filtrů: OutgoingAudioFilters a LiveOutgoingAudioFilters. Slouží OutgoingAudioFilters ke změně nastavení před zahájením hovoru a LiveOutgoingAudioFilters ke změně nastavení během probíhajícího hovoru.

Nejdřív je potřeba naimportovat volající sadu SDK:

import AzureCommunicationCalling

Před zahájením hovoru

OutgoingAudioFilters lze použít při spuštění volání.

Začněte tím, že vytvoříte OutgoingAudioFilters a předáte ho do OutgoingAudioOptions, jak je znázorněno v následujícím kódu:

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

Během hovoru

Můžete použít LiveOutgoingAudioFilters po zahájení hovoru. Tento objekt můžete načíst z objektu volání během volání. Pokud chcete změnit nastavení, LiveOutgoingAudioFiltersnastavte členy uvnitř třídy na platnou hodnotu a použijí se.

Během aktivního volání jsou k dispozici pouze podmnožina dostupných filtrů OutgoingAudioFilters : režim hudby, zrušení ozvěny a režim potlačení šumu.

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

Zjistěte, jak nakonfigurovat zvukové filtry pomocí nativních sad SDK pro volání.

Zvukové efekty Azure Communication Services nabízejí filtry, které můžou zlepšit hlasový hovor. Pro nativní platformy (Android, iOS a Windows) můžete nakonfigurovat následující filtry:

Zrušení ozvěny

Eliminuje akustickou ozvěnu způsobenou hlasem volajícího ozvěnou zpět do mikrofonu po vysílání z reproduktoru a zajišťuje jasnou komunikaci.

Filtr můžete nakonfigurovat před voláním a během hovoru. Zrušení ozvěny můžete přepínat pouze v případě, že je povolený režim hudby. Ve výchozím nastavení je tento filtr povolený.

Potlačení šumu

Zlepšení kvality zvuku filtrování nežádoucích zvuků na pozadí, jako je psaní, klimatizace nebo pouliční zvuky. Tato technologie zajišťuje, aby hlas byl zřetelný a jasný, což usnadňuje efektivnější komunikaci.

Filtr můžete nakonfigurovat před voláním a během hovoru. Aktuálně dostupné režimy jsou Off, Auto, Lowa High. Ve výchozím nastavení je tato funkce nastavená na High režim.

Řízení automatického získání (AGC)

Automaticky upraví hlasitost mikrofonu, aby se zajistily konzistentní úrovně zvuku během hovoru.

  • Analogové automatické získání řízení je filtr dostupný pouze před voláním. Ve výchozím nastavení je tento filtr povolený.
  • Řízení digitálního automatického získání je filtr dostupný pouze před voláním. Ve výchozím nastavení je tento filtr povolený.

Hudební režim

Hudební režim je filtr dostupný před voláním a během hovoru. Další informace o hudebním režimu najdete tady. Režim hudby funguje jenom na nativních platformách s více než 1n1 nebo skupinovými voláními a nefunguje ve voláních 1:1 mezi nativními a webovými hovory. Ve výchozím nastavení je režim hudby zakázaný.

Požadavky

Nastavení systému

Vytvoření projektu sady Visual Studio

V případě aplikace pro UPW v sadě Visual Studio 2022 vytvořte nový projekt Prázdná aplikace (Univerzální windows). Po zadání názvu projektu si můžete vybrat libovolnou sadu Windows SDK později než 10.0.17763.0.

V případě aplikace WinUI 3 vytvořte nový projekt pomocí šablony Prázdná aplikace zabalená (WinUI 3 v desktopové verzi) pro nastavení jednostráňové aplikace WinUI 3. Vyžaduje se sada Windows App SDK verze 1.3 nebo novější.

Instalace balíčku a závislostí pomocí Správce balíčků NuGet

Rozhraní API a knihovny volající sady SDK jsou veřejně dostupné prostřednictvím balíčku NuGet.

Následující postup ukazuje, jak najít, stáhnout a nainstalovat balíček NuGet volající sady SDK:

  1. Otevřete Správce balíčků NuGet výběrem nástrojů>NuGet Správce balíčků> Nabídky NuGet pro řešení.
  2. Vyberte Procházet a zadejte Azure.Communication.Calling.WindowsClient do vyhledávacího pole.
  3. Ujistěte se, že je zaškrtnuté políčko Zahrnout předběžné verze .
  4. Azure.Communication.Calling.WindowsClient Vyberte balíček a pak vyberte Azure.Communication.Calling.WindowsClientverzi 1.4.0-beta.1 nebo novější.
  5. Zaškrtněte políčko odpovídající projektu Komunikační služby na pravé straně.
  6. Vyberte tlačítko Instalovat.

Funkce filtru zvuku umožňuje použít pro odchozí zvuk různé předběžné zpracování zvuku. Existují dva typy zvukových filtrů: OutgoingAudioFilters a LiveOutgoingAudioFilters. Slouží OutgoingAudioFilters ke změně nastavení před zahájením hovoru a LiveOutgoingAudioFilters ke změně nastavení během probíhajícího hovoru.

Nejdřív je potřeba naimportovat volající sadu SDK:

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

Před zahájením hovoru

OutgoingAudioFilters lze použít při spuštění volání.

Začněte tím, že vytvoříte OutgoingAudioFilters a předáte ho do OutgoingAudioOptions, jak je znázorněno v následujícím kódu:

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

Během hovoru

Po zahájení volání můžete LiveOutgoingAudioFilters tento objekt načíst z objektu volání po zahájení volání. Pokud chcete změnit nastavení, LiveOutgoingAudioFiltersnastavte členy uvnitř třídy na platnou hodnotu a použijí se.

Během aktivního volání jsou k dispozici pouze podmnožina dostupných filtrů OutgoingAudioFilters : režim hudby, zrušení ozvěny a režim potlačení šumu.

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