Udostępnij za pośrednictwem


Włącz ulepszenia tłumienia hałasu audio

W tym artykule opisano sposób dodawania efektów dźwiękowych w wywołaniach przy użyciu usług Azure Communication Services.

Funkcje efektów dźwiękowych usług Azure Communication Services mogą znacznie poprawić połączenia audio, filtrując niepożądany szum w tle i usuwając echo. Tłumienie szumu działa, identyfikując i eliminując rozpraszające dźwięki, takie jak ruch, wpisywanie lub czatter, co sprawia, że rozmowy są jaśniejsze i łatwiejsze do naśladowania. W tym samym czasie usuwanie echa zapewnia, że Twój głos nie odbija się podczas rozmowy, zmniejszając sprzężenie zwrotne i zapobiegając zakłóceniom. Te technologie nie tylko zwiększają jasność mowy, ale także zmniejszają zmęczenie odbiornika — zwłaszcza w hałaśliwych środowiskach. Jeśli na przykład korzystasz z połączenia WebJS usług Azure Communication Services w zatłoczonej kawiarni, włączenie tych efektów dźwiękowych może zapewnić płynniejsze i bardziej skoncentrowane doświadczenie komunikacyjne.

🎧 Co to są efekty dźwiękowe?

Efekty dźwiękowe w usłudze ACS to udoskonalenia w czasie rzeczywistym stosowane do wejścia mikrofonu podczas połączenia. Pakiet efektów audio w usługach Azure Communications Services ma wiele możliwości usuwania niepożądanych dźwięków z rozmowy (z perspektywy klienta).

Tłumienie szumu (nazywane czasem redukcją szumu) koncentruje się na eliminowaniu niechcianych dźwięków tła. Pomyśl o dźwiękach pisania na klawiaturze, szumie wentylatora, odległych rozmowach lub hałasie ulicznym. Jego zadaniem jest odizolowanie głosu tak, aby osoba słuchająca słyszała cię wyraźniej, i zredukować lub usunąć rozpraszające dźwięki tła. Używa algorytmów wytrenowanych do rozpoznawania różnic między mową a szumem otoczenia, a następnie zmniejsza lub usuwa ten szum w czasie rzeczywistym. Te szumy można uznać za dźwięk, który nie jest ludzkim głosem. Kluczowe cechy, które umożliwia tłumienie szumów:

  • Usuwa ciągłe lub przewidywalne szumy tła.
  • Zwiększ przejrzystość mowy.
  • Zazwyczaj działa na końcu głośnika przed wysłaniem dźwięku.

Anulowanie echa powoduje usunięcie echa spowodowanego odebraniem dźwięku z głośników przez mikrofon. Na przykład, gdy ktoś jest na trybie głośnomówiącym, a ich mikrofon odbiera Twój głos z głośnika, może on jako echo wracać do Ciebie. Anulowanie echa przewiduje i odejmuje ten zwracany dźwięk, abyś nie słyszał swojego własnego głosu ułamek sekundy później. Kluczowe cechy anulowania echa:

  • Redukuje sprzężenie zwrotne akustyczne.
  • Niezbędne w otwartych konfiguracjach mikrofonu i pulpitu, w których mikrofon odbiera wyjście audio z głośnika lokalnego.
  • Redukuje zmęczenie słuchacza i zamieszanie spowodowane powrotem własnego głosu.

Używanie efektów dźwiękowych: instalowanie pakietu npm efektów wywołujących

Ważne

Funkcje tłumienia szumów są dostępne w wersji GA zestawu SDK WebJS 1.28.4 lub późniejszej oraz w wersji GA zestawu SDK Calling Effects usług Azure Communication Services 1.1.2 lub późniejszej. Alternatywnie, jeśli zdecydujesz się korzystać z publicznej wersji zapoznawczej, wywoływanie wersji 1.24.2-beta.1 zestawu SDK i nowszych również obsługuje tłumienie szumu.

Ważne

Funkcje anulowania echa są dostępne w publicznej wersji zapoznawczej zestawu SDK w wersji 1.37.1. Należy również pamiętać, że aby korzystać z redukcji echa, trzeba użyć publicznej wersji zapoznawczej zestawu SDK audio w wersji 1.21.1-beta lub nowszej.

Uwaga / Notatka

  • Wykorzystanie efektów dźwiękowych jest dostępne tylko w przeglądarkach klasycznych Chrome i Edge.
  • Biblioteka efektów dźwiękowych nie jest autonomicznym modułem i nie może działać niezależnie. Aby móc korzystać z jego możliwości, pakiet efektów musi być zintegrowany z biblioteką klienta do obsługi połączeń usług Azure Communication Services dla WebJS.
  • Jeśli używasz wersji GA Calling SDK, musisz użyć GA wersji pakietu efektów dźwiękowych Calling.

Instalowanie pakietu Audio Effects

Użyj polecenia , npm install aby zainstalować zestaw SDK efektów dźwiękowych usług Azure Communication Services dla języka JavaScript.

@azure/communication-calling-effects/v/latest

Jeśli używasz publicznej wersji zapoznawczej zestawu Calling SDK, musisz użyć wersji beta zestawu SDK wywołującego efekty. Użyj polecenia , npm install aby zainstalować zestaw SDK efektów dźwiękowych usług Azure Communication Services dla języka JavaScript.

@azure/communication-calling-effects/v/next

Włącz efekty dźwiękowe, których chcesz użyć

Poniżej przedstawiono ustrukturyzowaną reprezentację interfejsu AudioEffects:

AudioEffectsFeature
├── Properties
│   ├── activeEffects: ActiveAudioEffects (read-only)
│   └── name: string (inherited from AudioStreamFeature)
│
├── Methods
│   ├── isSupported(effect: "BrowserNoiseSuppression" | DeepNoiseSuppressionEffect): Promise<boolean>
│   ├── startEffects(config: AudioEffectsStartConfig): Promise<void>
│   ├── stopEffects(config: AudioEffectsStopConfig): Promise<void>
│   ├── on(event: "effectsStarted" | "effectsStopped" | "effectsError", listener: AudioEffectsFeatureListener): void
│   └── off(event: "effectsStarted" | "effectsStopped" | "effectsError", listener: AudioEffectsFeatureListener): void
│
└── Inherited Methods (from AudioStreamFeature)
    └── dispose(): void

Gdzie

  • activeEffects daje aktualnie uruchomione efekty dźwiękowe.
  • isSupported sprawdza, czy określony efekt jest dostępny w bieżącym środowisku.
  • startEffects i stopEffects kontrolować aktywację efektów (tłumienie szumu, anulowanie echa)
  • on / off umożliwia subskrybowanie/anulowanie subskrypcji zdarzeń

Aby uzyskać więcej informacji na temat interfejsu, który zawiera szczegółowe informacje o właściwościach i metodach efektów dźwiękowych, zobacz stronę dokumentacji interfejsu API funkcji efektów dźwiękowych.

Inicjowanie funkcji efektów dźwiękowych

Aby używać efektów dźwiękowych w SDK usługi Azure Communication Services do realizacji połączeń, należy użyć właściwości LocalAudioStream, która jest aktualnie w połączeniu. Aby uruchomić i zatrzymać efekty dźwiękowe, musisz mieć dostęp do interfejsu AudioEffectsLocalAudioStream API właściwości .

Włącz redukcję szumów

Poniższy fragment kodu przedstawia przykład włączania pomijania szumu z poziomu środowiska WebJS.

import * as AzureCommunicationCallingSDK from '@azure/communication-calling'; 
import { DeepNoiseSuppressionEffect } from '@azure/communication-calling-effects'; 

// Get 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(AzureCommunicationCallingSDK.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}`);
});

// Start Communication Services Noise Suppression
await audioEffectsFeatureApi.startEffects({
    noiseSuppression: deepNoiseSuppression
});

Włączanie anulowania echa

Poniższy fragment kodu przedstawia przykład włączania anulowania echa z poziomu środowiska WebJS.

import * as AzureCommunicationCallingSDK from '@azure/communication-calling'; 
import { EchoCancellationEffect } from '@azure/communication-calling-effects';

// Create the noise suppression instance 
const echoCancellationEffect = new EchoCancellationEffect();

// Get 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(AzureCommunicationCallingSDK.Features.AudioEffects);

// Start Communication Services echo cancellation
await audioEffectsFeatureApi.startEffects({
    echoCancellation: echoCancellationEffect
}); 

Sprawdź, czy bieżące środowisko przeglądarki obsługuje efekty dźwiękowe

Zalecamy sprawdzenie obsługi efektu w bieżącym środowisku przeglądarki w interfejsie API danej funkcji przy użyciu metody isSupported. Pamiętaj, że efekty dźwiękowe są obsługiwane tylko w przeglądarkach komputerowych Chrome i Edge.


const deepNoiseSuppression = new DeepNoiseSuppressionEffect();
const echoCancellationEffect = new EchoCancellationEffect();

const isEchoCancellationSupported = await audioEffectsFeatureApi.isSupported(echoCancellationEffect);
if (isEchoCancellationSupported) {
    console.log('Echo Cancellation is supported in the current browser environment');
}

const isNoiseSuppressionSupported = await audioEffectsFeatureApi.isSupported(deepNoiseSuppression);
if (isNoiseSuppressionSupported) {
    console.log('Noise Suppression is supported in the current browser environment');
}

Połącz wszystko: załaduj i rozpocznij tłumienie szumu i usuwanie echa

Aby zainicjować wywołanie z włączonym tłumieniem szumów i usuwaniem echa, utwórz nową LocalAudioStream właściwość przy użyciu AudioDeviceInfo. Upewnij się, że LocalAudioStream źródło nie jest ustawione jako surowa MediaStream właściwość, aby umożliwić efekty dźwiękowe. Następnie uwzględnij tę właściwość w CallStartOptions.audioOptions podczas rozpoczynania połączenia.

import { EchoCancellationEffect, DeepNoiseSuppressionEffect } from '@azure/communication-calling-effects';

// Create the noise suppression instance 
const deepNoiseSuppression = new DeepNoiseSuppressionEffect();
// Create the noise suppression instance 
const echoCancellationEffect = new EchoCancellationEffect();

// Get 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(AzureCommunicationCallingSDK.Features.AudioEffects);

// To start Communication Services Deep Noise Suppression
await audioEffectsFeatureApi.startEffects({
    echoCancellation: echoCancellationEffect,
    noiseSuppression: deepNoiseSuppression
}); 

Włączanie tłumienia szumu podczas trwającego wywołania

Możesz uruchomić wywołanie i nie włączyć pomijania szumu. Pokój użytkowników końcowych może stać się hałaśliwy, więc mogą potrzebować włączyć tłumienie szumu. Aby włączyć tłumienie szumu, możesz użyć interfejsu audioEffectsFeatureApi.startEffects .

// Create the noise suppression instance 
const deepNoiseSuppression = new DeepNoiseSuppressionEffect();

// Get 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(AzureCommunicationCallingSDK.Features.AudioEffects);

// We recommend that you check support for the effect in the current environment by using the isSupported method on the feature API. Remember that noise suppression is only supported on desktop browsers for Chrome and Edge.
const isDeepNoiseSuppressionSupported = await audioEffectsFeatureApi.isSupported(deepNoiseSuppression);
if (isDeepNoiseSuppressionSupported) {
    console.log('Noise suppression is supported in the current browser environment');
}

// To start Communication Services Deep Noise Suppression
await audioEffectsFeatureApi.startEffects({
    noiseSuppression: deepNoiseSuppression
});

// To stop Communication Services Deep Noise Suppression
await audioEffectsFeatureApi.stopEffects({
    noiseSuppression: true
});

Aby uruchomić lub zatrzymać pakiety efektów dźwiękowych podczas aktywnego połączenia

Możesz uruchomić wywołanie i nie włączyć pomijania szumu. Pokój użytkowników końcowych może stać się hałaśliwy, więc mogą potrzebować włączyć tłumienie szumu. Aby włączyć pomijanie szumu, możesz użyć interfejsu audioEffectsFeatureApi.startEffects API.

Aby uruchomić tłumienie szumu w usłudze Azure Communication Services

await audioEffectsFeatureApi.startEffects({
    noiseSuppression: deepNoiseSuppression
});

Aby zatrzymać tłumienie szumu w Usługach komunikacyjnych Azure

await audioEffectsFeatureApi.stopEffects({
    noiseSuppression: true
});

Aby uruchomić usuwanie echa w usługach Azure Communication Services

await audioEffectsFeatureApi.startEffects({
    noiseSuppression: echoCancellation
});

Aby wyłączyć redukcję echa w usługach Azure Communication Services

await audioEffectsFeatureApi.stopEffects({
    echoCancellation: true
});

Sprawdzanie, jakie efekty dźwiękowe są aktywne

Aby sprawdzić, jakie efekty tłumienia szumu są obecnie aktywne, możesz użyć activeEffects właściwości . Właściwość activeEffects zwraca obiekt z nazwami bieżących aktywnych efektów. Zobacz tutaj , aby uzyskać więcej informacji na temat interfejsu activeEffects .

import { EchoCancellationEffect, DeepNoiseSuppressionEffect } from '@azure/communication-calling-effects';
// Get 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(AzureCommunicationCallingSDK.Features.AudioEffects);

// Get the current active effects
const activeAudioEffects = audioEffectsFeatureApi.activeEffects;

if (activeAudioEffects.noiseSuppression === 'DeepNoiseSuppression') {
    // Deep Noise Suppression is currently active
}
if (activeAudioEffects.echoCancellation === 'EchoCancellation') {
    // Echo Cancellation is currently active
}
;

Najlepsze praktyki

Pakiet efektów dźwiękowych webJS usług Azure Communication Services udostępnia narzędzia do zmniejszania niepożądanych dźwięków. W celu poprawy jakości dźwięku można podjąć inne środki, takie jak:

  • Zachęcanie użytkowników końcowych do rozważenia używania słuchawek w celu zminimalizowania konieczności anulowania echa.
  • Włączanie tłumienia szumów w udostępnionych lub otwartych środowiskach pracy.
  • Ustawienie pomijania szumu jako opcji domyślnej (tj. aktywowanie efektów dźwiękowych, gdy użytkownik inicjuje wywołanie). Jeśli ta funkcja jest włączona automatycznie na początku wywołań, użytkownicy nie muszą aktywować jej ręcznie. Włączenie pomijania szumu i anulowania echa domyślnie może pomóc rozwiązać problemy z dźwiękiem podczas wywołań.
  • Przetestuj efekty dźwiękowe w różnych środowiskach, aby zoptymalizować środowisko użytkownika końcowego.

Zobacz stronę dokumentacji interfejsu funkcji Audio Effects, aby uzyskać szczegółowe informacje o rozszerzonych funkcjach interfejsu API.

Konfigurowanie filtrów audio za pomocą natywnych zestawów SDK dla wywołań

Efekty dźwiękowe usług Azure Communication Services oferują filtry, które mogą poprawić połączenie audio. W przypadku platform natywnych (Android, iOS i Windows) można skonfigurować następujące filtry.

Anulowanie echa

Możesz wyeliminować echo akustyczne spowodowane przez głos dzwoniącego, który odbija się z powrotem do mikrofonu po emisji z głośnika. Anulowanie echa zapewnia wyraźną komunikację.

Filtr można skonfigurować przed wywołaniem i podczas jego wywołania. Anulowanie echa można przełączać tylko wtedy, gdy jest włączony tryb muzyki. Domyślnie ten filtr jest włączony.

Tłumienie szumów

Jakość dźwięku można poprawić, filtrując niechciane szumy tła, takie jak wpisywanie, klimatyzacja lub dźwięki uliczne. Technologia ta zapewnia, że głos jest ostry i jasny, aby ułatwić skuteczniejszą komunikację.

Filtr można skonfigurować przed wywołaniem i podczas jego wywołania. Obecnie dostępne tryby to Wyłączone, Automatyczne, Niskie i Wysokie. Domyślnie ta funkcja jest ustawiona na Wartość Wysoka.

Automatyczna kontrola nad przyrostem

Możesz automatycznie dostosować głośność mikrofonu, aby zapewnić spójne poziomy dźwięku w całym wywołaniu.

  • Analog automatyczna kontrola przyrostka jest filtrem dostępnym tylko przed wywołaniem. Domyślnie ten filtr jest włączony.
  • Cyfrowe automatyczne sterowanie przyrostkiem jest filtrem dostępnym tylko przed wywołaniem. Domyślnie ten filtr jest włączony.

Tryb muzyki

Tryb muzyki to filtr dostępny przed i podczas połączenia. Aby dowiedzieć się więcej na temat trybu muzycznego, zobacz Tryb muzyki w zestawie SDK natywnych wywołań. Tryb muzyki działa tylko na platformach natywnych za pośrednictwem wywołań jeden na jeden lub grup. Nie działa w wywołaniach "jeden do jednego" między platformami natywnymi i siecią Web. Domyślnie tryb muzyki jest wyłączony.

Wymagania wstępne

Instalacja zestawu SDK

Znajdź plik na poziomie build.gradle projektu i dodaj mavenCentral() go do listy repozytoriów w obszarze buildscript i allprojects:

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

Następnie w pliku na poziomie build.gradle modułu dependencies dodaj następujące wiersze do sekcji:

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

Inicjowanie wymaganych obiektów

Aby utworzyć CallAgent wystąpienie, należy wywołać createCallAgent metodę w wystąpieniu CallClient . To wywołanie asynchroniczne zwraca CallAgent obiekt wystąpienia.

Metoda createCallAgent przyjmuje CommunicationUserCredential jako argument, który hermetyzuje token dostępu.

Aby uzyskać dostęp, DeviceManagernależy najpierw utworzyć callAgent wystąpienie. Następnie możesz użyć metody , aby pobrać metodę CallClient.getDeviceManagerDeviceManager.

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

Aby ustawić nazwę wyświetlaną elementu wywołującego, użyj tej alternatywnej metody:

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

Możesz użyć funkcji filtru audio, aby zastosować różne opcje przetwarzania wstępnego audio do wychodzącego dźwięku. Istnieją dwa typy filtrów OutgoingAudioFilters audio i LiveOutgoingAudioFilters. Użyj polecenia OutgoingAudioFilters , aby zmienić ustawienia przed rozpoczęciem wywołania. Użyj LiveOutgoingAudioFilters polecenia , aby zmienić ustawienia, gdy wywołanie jest w toku.

Najpierw należy zaimportować zestaw SDK wywoływania i skojarzone klasy:

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

Przed rozpoczęciem połączenia

Można zastosować OutgoingAudioFilters podczas uruchamiania wywołania.

Zacznij od utworzenia OutgoingAudioFilters właściwości i przekazania jej do OutgoingAudioOptionselementu , jak pokazano w poniższym kodzie:

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

W trakcie rozmowy telefonicznej

Można zastosować po LiveOutgoingAudioFilters rozpoczęciu połączenia. Ten obiekt można pobrać z obiektu wywołania podczas wywołania. Aby zmienić ustawienie w LiveOutgoingAudioFilterspliku , ustaw elementy członkowskie wewnątrz klasy na prawidłową wartość i są one stosowane.

Podczas aktywnego wywołania jest dostępny tylko podzbiór dostępnych filtrów OutgoingAudioFilters . Są one trybem muzycznym, anulowaniem echa i trybem pomijania szumu.

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

Konfigurowanie filtrów audio za pomocą natywnych zestawów SDK dla wywołań

Efekty dźwiękowe usług Azure Communication Services oferują filtry, które mogą poprawić połączenie audio. W przypadku platform natywnych (Android, iOS i Windows) można skonfigurować następujące filtry.

Anulowanie echa

Możesz wyeliminować echo akustyczne spowodowane przez głos dzwoniącego, który odbija się z powrotem do mikrofonu po emisji z głośnika. Anulowanie echa zapewnia wyraźną komunikację.

Filtr można skonfigurować przed wywołaniem i podczas jego wywołania. Anulowanie echa można przełączać tylko wtedy, gdy jest włączony tryb muzyki. Domyślnie ten filtr jest włączony.

Tłumienie szumów

Jakość dźwięku można poprawić, filtrując niechciane szumy tła, takie jak wpisywanie, klimatyzacja lub dźwięki uliczne. Technologia ta zapewnia, że głos jest ostry i jasny, aby ułatwić skuteczniejszą komunikację.

Filtr można skonfigurować przed wywołaniem i podczas jego wywołania. Obecnie dostępne tryby to Wyłączone, Automatyczne, Niskie i Wysokie. Domyślnie ta funkcja jest ustawiona na Wartość Wysoka.

Automatyczna kontrola nad przyrostem

Możesz automatycznie dostosować głośność mikrofonu, aby zapewnić spójne poziomy dźwięku w całym wywołaniu.

  • Analog automatyczna kontrola przyrostka jest filtrem dostępnym tylko przed wywołaniem. Domyślnie ten filtr jest włączony.
  • Cyfrowe automatyczne sterowanie przyrostkiem jest filtrem dostępnym tylko przed wywołaniem. Domyślnie ten filtr jest włączony.

Tryb muzyki

Tryb muzyki to filtr dostępny przed i podczas połączenia. Aby dowiedzieć się więcej na temat trybu muzycznego, zobacz Tryb muzyki w zestawie SDK natywnych wywołań. Tryb muzyki działa tylko na platformach natywnych za pośrednictwem wywołań jeden na jeden lub grup. Nie działa w wywołaniach "jeden do jednego" między platformami natywnymi i siecią Web. Domyślnie tryb muzyki jest wyłączony.

Wymagania wstępne

Konfigurowanie systemu

Wykonaj następujące kroki, aby skonfigurować system.

Tworzenie projektu Xcode

W programie Xcode utwórz nowy projekt systemu iOS i wybierz szablon Aplikacja z jednym widokiem. W tym artykule jest używana struktura SwiftUI, dlatego należy ustawić wartość Language na Swift i ustawić wartość Interface na SwiftUI.

Nie zamierzasz tworzyć testów w tym artykule. Możesz wyczyścić pole wyboru Uwzględnij testy .

Zrzut ekranu przedstawiający okno tworzenia projektu w programie Xcode.

Instalowanie pakietu i zależności przy użyciu narzędzia CocoaPods

  1. Utwórz plik Podfile dla aplikacji, podobnie jak w tym przykładzie:

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

  3. Otwórz .xcworkspace za pomocą programu Xcode.

Żądanie dostępu do mikrofonu

Aby uzyskać dostęp do mikrofonu urządzenia, należy zaktualizować listę właściwości informacji aplikacji przy użyciu polecenia NSMicrophoneUsageDescription. Ustaw skojarzona wartość na ciąg zawarty w oknie dialogowym używanym przez system do żądania dostępu od użytkownika.

Kliknij prawym przyciskiem myszy wpis Info.plist drzewa projektu, a następnie wybierz pozycję Otwórz jako>kod źródłowy. Dodaj następujące wiersze w sekcji najwyższego poziomu <dict> , a następnie zapisz plik.

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

Konfigurowanie struktury aplikacji

Otwórz plik projektu ContentView.swift . Dodaj deklarację import na początku pliku, aby zaimportować bibliotekę AzureCommunicationCalling . Ponadto zaimportuj plik AVFoundation. Potrzebne są żądania uprawnień dźwięku w kodzie.

import AzureCommunicationCalling
import AVFoundation

Inicjowanie klasy CallAgent

Aby utworzyć CallAgent wystąpienie z CallClientklasy , należy użyć callClient.createCallAgent metody, która asynchronicznie zwraca CallAgent obiekt po zainicjowaniu.

Aby utworzyć klienta wywołania, przekaż CommunicationTokenCredential obiekt:

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 Przekaż utworzony obiekt do CallClient, a następnie ustaw nazwę wyświetlaną:

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

Możesz użyć funkcji filtru audio, aby zastosować różne opcje przetwarzania wstępnego audio do wychodzącego dźwięku. Istnieją dwa typy filtrów OutgoingAudioFilters audio i LiveOutgoingAudioFilters. Użyj polecenia OutgoingAudioFilters , aby zmienić ustawienia przed rozpoczęciem wywołania. Użyj LiveOutgoingAudioFilters polecenia , aby zmienić ustawienia, gdy wywołanie jest w toku.

Najpierw należy zaimportować zestaw SDK wywołujący:

import AzureCommunicationCalling

Przed rozpoczęciem połączenia

Można zastosować OutgoingAudioFilters podczas uruchamiania wywołania.

Zacznij od utworzenia OutgoingAudioFilters właściwości i przekazania jej do OutgoingAudioOptionselementu , jak pokazano poniżej:

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

W trakcie rozmowy telefonicznej

Można zastosować po LiveOutgoingAudioFilters rozpoczęciu połączenia. Ten obiekt można pobrać z obiektu wywołania podczas wywołania. Aby zmienić ustawienie w LiveOutgoingAudioFilterspliku , ustaw elementy członkowskie wewnątrz klasy na prawidłową wartość i są one stosowane.

Podczas aktywnego wywołania jest dostępny tylko podzbiór dostępnych filtrów OutgoingAudioFilters . Są one trybem muzycznym, anulowaniem echa i trybem pomijania szumu.

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

Konfigurowanie filtrów audio za pomocą natywnych zestawów SDK dla wywołań

Efekty dźwiękowe usług Azure Communication Services oferują filtry, które mogą poprawić połączenie audio. W przypadku platform natywnych (Android, iOS i Windows) można skonfigurować następujące filtry.

Anulowanie echa

Możesz wyeliminować echo akustyczne spowodowane przez głos dzwoniącego, który odbija się z powrotem do mikrofonu po emisji z głośnika. Anulowanie echa zapewnia wyraźną komunikację.

Filtr można skonfigurować przed wywołaniem i podczas jego wywołania. Anulowanie echa można przełączać tylko wtedy, gdy jest włączony tryb muzyki. Domyślnie ten filtr jest włączony.

Tłumienie szumów

Jakość dźwięku można poprawić, filtrując niechciane szumy tła, takie jak wpisywanie, klimatyzacja lub dźwięki uliczne. Technologia ta zapewnia, że głos jest ostry i jasny, aby ułatwić skuteczniejszą komunikację.

Filtr można skonfigurować przed wywołaniem i podczas jego wywołania. Obecnie dostępne tryby to Wyłączone, Automatyczne, Niskie i Wysokie. Domyślnie ta funkcja jest ustawiona na Wartość Wysoka.

Automatyczna kontrola nad przyrostem

Możesz automatycznie dostosować głośność mikrofonu, aby zapewnić spójne poziomy dźwięku w całym wywołaniu.

  • Analog automatyczna kontrola przyrostka jest filtrem dostępnym tylko przed wywołaniem. Domyślnie ten filtr jest włączony.
  • Cyfrowe automatyczne sterowanie przyrostkiem jest filtrem dostępnym tylko przed wywołaniem. Domyślnie ten filtr jest włączony.

Tryb muzyki

Tryb muzyki to filtr dostępny przed i podczas połączenia. Aby dowiedzieć się więcej na temat trybu muzycznego, zobacz Tryb muzyki w zestawie SDK natywnych wywołań. Tryb muzyki działa tylko na platformach natywnych za pośrednictwem wywołań jeden na jeden lub grup. Nie działa w wywołaniach "jeden do jednego" między platformami natywnymi i siecią Web. Domyślnie tryb muzyki jest wyłączony.

Wymagania wstępne

Konfigurowanie systemu

Wykonaj następujące kroki, aby skonfigurować system.

Tworzenie projektu programu Visual Studio

W przypadku aplikacji platforma uniwersalna systemu Windows w programie Visual Studio 2022 utwórz nowy projekt Pusta aplikacja (uniwersalny system Windows). Po wprowadzeniu nazwy projektu możesz wybrać dowolny zestaw Windows SDK nowszy niż 10.0.17763.0.

W przypadku aplikacji WinUI 3 utwórz nowy projekt z pustą aplikacją, spakowanym szablonem (WinUI 3 w programie Desktop), aby skonfigurować jednostronicową aplikację WinUI 3. Wymagany jest zestaw Windows App SDK w wersji 1.3 lub nowszej.

Instalowanie pakietu i zależności przy użyciu Menedżer pakietów NuGet

Interfejsy API i biblioteki zestawu SDK wywołujących są publicznie dostępne za pośrednictwem pakietu NuGet.

Aby znaleźć, pobrać i zainstalować pakiet NuGet zestawu SDK wywołującego:

  1. Otwórz Menedżer pakietów NuGet, wybierając pozycję > Zarządzanie pakietami NuGet dla rozwiązania.
  2. Wybierz pozycję Przeglądaj, a następnie wprowadź ciąg Azure.Communication.Calling.WindowsClient w polu wyszukiwania.
  3. Upewnij się, że pole wyboru Uwzględnij wersję wstępną zostało zaznaczone.
  4. Wybierz pakiet Azure.Communication.Calling.WindowsClient, a następnie wybierz pozycję Azure.Communication.Calling.WindowsClient1.4.0-beta.1 lub nowszą wersję.
  5. Zaznacz pole wyboru odpowiadające projektowi usług Azure Communication Services w okienku po prawej stronie.
  6. Wybierz Zainstaluj.

Możesz użyć funkcji filtru audio, aby zastosować różne wstępne przetwarzanie audio do wychodzącego dźwięku. Istnieją dwa typy filtrów OutgoingAudioFilters audio i LiveOutgoingAudioFilters. Użyj polecenia OutgoingAudioFilters , aby zmienić ustawienia przed rozpoczęciem wywołania. Użyj LiveOutgoingAudioFilters polecenia , aby zmienić ustawienia, gdy wywołanie jest w toku.

Najpierw należy zaimportować zestaw SDK wywołujący:

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

Przed rozpoczęciem połączenia

Można zastosować OutgoingAudioFilters podczas uruchamiania wywołania.

Zacznij od utworzenia OutgoingAudioFilters właściwości i przekazania jej do OutgoingAudioOptionselementu , jak pokazano w poniższym kodzie:

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

W trakcie rozmowy telefonicznej

Można zastosować po LiveOutgoingAudioFilters rozpoczęciu połączenia. Ten obiekt można pobrać z obiektu wywołania po rozpoczęciu wywołania. Aby zmienić ustawienie w LiveOutgoingAudioFilterspliku , ustaw elementy członkowskie wewnątrz klasy na prawidłową wartość i są one stosowane.

Podczas aktywnego wywołania jest dostępny tylko podzbiór dostępnych filtrów OutgoingAudioFilters . Są one trybem muzycznym, anulowaniem echa i trybem pomijania szumu.

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