Поделиться через


Добавление улучшений качества звука в интерфейс аудиозвонка

Службы коммуникации Azure звуковые эффекты могут улучшить ваши звуковые вызовы, отфильтровав нежелательные фоновые шумы. Подавление шума — это технология, которая удаляет фоновые шумы из звуковых вызовов. Устранение фонового шума упрощает общение и прослушивание. Подавление шума также может снизить отвлекающие и усталие, вызванные шумными местами. Например, если вы принимаете вызов Службы коммуникации Azure WebJS в шумном кафе, включение подавления шума может улучшить работу звонка.

Использование звуковых эффектов: установка пакета npm для вызывающего эффекта

Внимание

В этом руководстве используется версия пакета SDK для вызовов Службы коммуникации Azure или более поздняя, а также версия 1.28.4 пакета SDK 1.1.2 для Службы коммуникации Azure вызывающих эффектов или более поздней версии. Общедоступная стабильная версия и более поздние версии 1.28.4 пакета SDK для вызовов поддерживают функции подавления шума. Кроме того, если вы решили использовать общедоступную предварительную версию, вызов версий пакета SDK и более поздних 1.24.2-beta.1 версий также поддерживает подавление шума.

Текущая поддержка браузера для добавления эффектов подавления звука доступна только в браузерах chrome и Edge для настольных браузеров.

Библиотеку вызывающих эффектов нельзя использовать автономно. Он работает только при использовании с клиентской библиотекой вызовов Службы коммуникации Azure для WebJS.

npm install Используйте команду для установки пакета SDK для звуковых эффектов Службы коммуникации Azure для JavaScript.

Если вы используете общедоступную версию пакета SDK для вызовов, необходимо использовать общедоступную версию пакета SDK для вызовов.

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

Если вы используете общедоступную предварительную версию пакета SDK для вызовов, необходимо использовать бета-версию пакета SDK для вызовов.

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

Загрузка библиотеки эффектов подавления шума

Сведения об интерфейсе, который содержит сведения о свойствах и методах звуковых эффектов, см . на странице документации по API интерфейса интерфейса функции аудиоэффектов .

Чтобы использовать звуковые эффекты подавления шума в пакете SDK для вызовов Службы коммуникации Azure, необходимо LocalAudioStream свойство, которое в настоящее время находится в вызове. Для запуска и остановки звуковых эффектов требуется доступ к AudioEffects API LocalAudioStream свойства.

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

Проверка активности звуковых эффектов

Чтобы проверить, какие эффекты подавления шума в настоящее время активны, можно использовать activeEffects свойство.

Свойство activeEffects возвращает объект с именами текущих активных эффектов.

// Use the audio effects feature API.
const currentActiveEffects = audioEffectsFeatureApi.activeEffects;

// Create the noise suppression instance.
const deepNoiseSuppression = new DeepNoiseSuppressionEffect();
// We recommend that you check support for the effect in the current environment by using the isSupported API 
// method. 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 local 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
});

Запуск вызова с автоматически включенным подавлением шума

Вы можете начать звонок с включенного подавления шума. Создайте новое LocalAudioStream свойство с AudioDeviceInfo помощью ( LocalAudioStream источник не должен быть необработанным MediaStream свойством для использования звуковых эффектов) и передайте его в CallStartOptions.audioOptions:

// As an example, here we're simply creating LocalAudioStream by using the current selected mic on DeviceManager.
const audioDevice = deviceManager.selectedMicrophone;
const localAudioStreamWithEffects = new AzureCommunicationCallingSDK.LocalAudioStream(audioDevice);
const audioEffectsFeatureApi = localAudioStreamWithEffects.feature(AzureCommunicationCallingSDK.Features.AudioEffects);

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

// Pass LocalAudioStream in audioOptions in call start/accept options.
await call.startCall({
    audioOptions: {
        muted: false,
        localAudioStreams: [localAudioStreamWithEffects]
    }
});

Включение подавления шума во время текущего вызова

Вы можете начать звонок и не включить подавление шума. Среда может быть шумной, чтобы включить подавление шума. Чтобы включить подавление шума, можно использовать audioEffectsFeatureApi.startEffects API.

// Create the noise supression 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 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 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
});

Сведения о расширенных функциях API см. на странице документации по интерфейсу функций аудиоэффектов.

Узнайте, как настроить звуковые фильтры с помощью пакетов SDK для собственных вызовов

Службы коммуникации Azure звуковые эффекты предлагают фильтры, которые могут улучшить аудиозвонок. Для собственных платформ (Android, iOS и Windows) можно настроить следующие фильтры.

Эхоподавление

Вы можете исключить акустическое эхо, вызванное голосом вызывающего абонента обратно в микрофон после того, как он выдается из динамика. Отмена эхо обеспечивает четкое взаимодействие.

Фильтр можно настроить до и во время вызова. Вы можете переключать отмену эхо только в том случае, если включен режим музыки. По умолчанию этот фильтр включен.

Подавление шума

Вы можете улучшить качество звука, отфильтровав нежелательные фоновые шумы, такие как ввод, кондиционер или уличные звуки. Эта технология гарантирует, что голос является четким и ясным, чтобы упростить более эффективное взаимодействие.

Фильтр можно настроить до и во время вызова. Доступные в настоящее время режимы off, auto, Low и High. По умолчанию эта функция имеет значение High.

Автоматическое управление получением

Вы можете автоматически настроить громкость микрофона, чтобы обеспечить согласованные уровни звука на протяжении всего звонка.

  • Аналоговый автоматический контроль получения — это фильтр, доступный только перед вызовом. По умолчанию этот фильтр включен.
  • Управление цифровым автоматическим получением — это фильтр, доступный только перед вызовом. По умолчанию этот фильтр включен.

Музыкальный режим

Музыкальный режим — это фильтр, доступный до и во время звонка. Дополнительные сведения о музыкальном режиме см. в разделе "Музыкальный режим" в пакете SDK для собственных вызовов. Музыкальный режим работает только на собственных платформах через одно или групповые вызовы. Он не работает в вызовах между собственными платформами и Интернетом. По умолчанию музыкальный режим отключен.

Необходимые компоненты

Установка пакета SDK

Найдите файл уровня build.gradle проекта и добавьте mavenCentral() в список репозиториев в buildscript разделе и allprojects:

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

Затем в файле уровня build.gradle модуля добавьте в раздел следующие строки dependencies :

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

Инициализация обязательных объектов

Чтобы создать CallAgent экземпляр, необходимо вызвать createCallAgent метод в экземпляре CallClient . Этот вызов асинхронно возвращает объект экземпляра CallAgent .

Метод createCallAgent принимает CommunicationUserCredential в качестве аргумента, который инкапсулирует маркер доступа.

Чтобы получить доступ DeviceManager, сначала необходимо создать callAgent экземпляр. Затем можно использовать CallClient.getDeviceManager метод для получения 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();

Чтобы задать отображаемое имя для вызывающей стороны, используйте следующий альтернативный метод:

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

Вы можете использовать функцию фильтра звука для применения различных параметров предварительной обработки звука к исходящему звуку. Два типа звуковых фильтров: OutgoingAudioFilters и LiveOutgoingAudioFilters. Используйте OutgoingAudioFilters для изменения параметров перед началом вызова. Используется LiveOutgoingAudioFilters для изменения параметров во время выполнения вызова.

Сначала необходимо импортировать пакет SDK для вызовов и связанные классы:

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

Перед началом вызова

При запуске вызова можно применить OutgoingAudioFilters .

Начните с создания OutgoingAudioFilters свойства и его передачи OutgoingAudioOptionsв , как показано в следующем коде:

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

Во время звонка

После начала вызова можно применить LiveOutgoingAudioFilters . Этот объект можно получить из объекта вызова во время вызова. Чтобы изменить параметр, LiveOutgoingAudioFiltersзадайте членам внутри класса допустимое значение и они применяются.

Во время активного вызова доступны только подмножества фильтров OutgoingAudioFilters . Это музыкальный режим, эхо-отмена и режим подавления шума.

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

Узнайте, как настроить звуковые фильтры с помощью пакетов SDK для собственных вызовов

Службы коммуникации Azure звуковые эффекты предлагают фильтры, которые могут улучшить аудиозвонок. Для собственных платформ (Android, iOS и Windows) можно настроить следующие фильтры.

Эхоподавление

Вы можете исключить акустическое эхо, вызванное голосом вызывающего абонента обратно в микрофон после того, как он выдается из динамика. Отмена эхо обеспечивает четкое взаимодействие.

Фильтр можно настроить до и во время вызова. Вы можете переключать отмену эхо только в том случае, если включен режим музыки. По умолчанию этот фильтр включен.

Подавление шума

Вы можете улучшить качество звука, отфильтровав нежелательные фоновые шумы, такие как ввод, кондиционер или уличные звуки. Эта технология гарантирует, что голос является четким и ясным, чтобы упростить более эффективное взаимодействие.

Фильтр можно настроить до и во время вызова. Доступные в настоящее время режимы off, auto, Low и High. По умолчанию эта функция имеет значение High.

Автоматическое управление получением

Вы можете автоматически настроить громкость микрофона, чтобы обеспечить согласованные уровни звука на протяжении всего звонка.

  • Аналоговый автоматический контроль получения — это фильтр, доступный только перед вызовом. По умолчанию этот фильтр включен.
  • Управление цифровым автоматическим получением — это фильтр, доступный только перед вызовом. По умолчанию этот фильтр включен.

Музыкальный режим

Музыкальный режим — это фильтр, доступный до и во время звонка. Дополнительные сведения о музыкальном режиме см. в разделе "Музыкальный режим" в пакете SDK для собственных вызовов. Музыкальный режим работает только на собственных платформах через одно или групповые вызовы. Он не работает в вызовах между собственными платформами и Интернетом. По умолчанию музыкальный режим отключен.

Необходимые компоненты

Настройка системы

Выполните следующие действия, чтобы настроить систему.

Создайте проект Xcode

В Xcode создайте новый проект iOS и выберите шаблон Single View App (Приложение с одним представлением). В этой статье используется платформа SwiftUI, поэтому необходимо задать для языка значение Swift и задать для интерфейса значение SwiftUI.

Вы не собираетесь создавать тесты в этой статье. Снимите флажок "Включить тесты ".

Снимок экрана, на котором показано окно для создания проекта в Xcode.

Установка пакета и зависимостей с помощью CocoaPods

  1. Создайте Podfile для приложения, как показано в следующем примере:

    platform :ios, '13.0'
    use_frameworks!
    target 'AzureCommunicationCallingSample' do
        pod 'AzureCommunicationCalling', '~> 1.0.0'
    end
    
  2. Запустите pod install.

  3. Откройте .xcworkspace с помощью Xcode.

Запрос доступа к микрофону

Чтобы получить доступ к микрофону устройства, необходимо обновить список свойств приложения с помощью NSMicrophoneUsageDescription. Задайте связанное значение строке, включенной в диалоговое окно, которое система использует для запроса доступа от пользователя.

Щелкните правой кнопкой мыши запись Info.plist дерева проекта и выберите "Открыть как>исходный код". Добавьте в раздел верхнего уровня <dict> следующие строки, а затем сохраните файл.

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

Настройка платформы приложения

Откройте файл проекта ContentView.swift . import Добавьте объявление в начало файла для импорта библиотекиAzureCommunicationCalling. Кроме того, импортируйте AVFoundation. Он необходим для запросов на разрешение звука в коде.

import AzureCommunicationCalling
import AVFoundation

Инициализация CallAgent

Чтобы создать экземпляр CallAgent из CallClient, необходимо использовать метод callClient.createCallAgent, который асинхронно возвращает объект CallAgent после его инициализации.

Чтобы создать клиент вызова, передайте CommunicationTokenCredential объект:

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 Передайте созданный CallClientобъект и задайте отображаемое имя:

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

Вы можете использовать функцию фильтра звука для применения различных параметров предварительной обработки звука к исходящему звуку. Два типа звуковых фильтров: OutgoingAudioFilters и LiveOutgoingAudioFilters. Используйте OutgoingAudioFilters для изменения параметров перед началом вызова. Используется LiveOutgoingAudioFilters для изменения параметров во время выполнения вызова.

Сначала необходимо импортировать пакет SDK для вызовов:

import AzureCommunicationCalling

Перед началом вызова

При запуске вызова можно применить OutgoingAudioFilters .

Начните с создания OutgoingAudioFilters свойства и его передачи OutgoingAudioOptionsв , как показано ниже:

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

Во время звонка

После начала вызова можно применить LiveOutgoingAudioFilters . Этот объект можно получить из объекта вызова во время вызова. Чтобы изменить параметр, LiveOutgoingAudioFiltersзадайте членам внутри класса допустимое значение и они применяются.

Во время активного вызова доступны только подмножества фильтров OutgoingAudioFilters . Это музыкальный режим, эхо-отмена и режим подавления шума.

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

Узнайте, как настроить звуковые фильтры с помощью пакетов SDK для собственных вызовов

Службы коммуникации Azure звуковые эффекты предлагают фильтры, которые могут улучшить аудиозвонок. Для собственных платформ (Android, iOS и Windows) можно настроить следующие фильтры.

Эхоподавление

Вы можете исключить акустическое эхо, вызванное голосом вызывающего абонента обратно в микрофон после того, как он выдается из динамика. Отмена эхо обеспечивает четкое взаимодействие.

Фильтр можно настроить до и во время вызова. Вы можете переключать отмену эхо только в том случае, если включен режим музыки. По умолчанию этот фильтр включен.

Подавление шума

Вы можете улучшить качество звука, отфильтровав нежелательные фоновые шумы, такие как ввод, кондиционер или уличные звуки. Эта технология гарантирует, что голос является четким и ясным, чтобы упростить более эффективное взаимодействие.

Фильтр можно настроить до и во время вызова. Доступные в настоящее время режимы off, auto, Low и High. По умолчанию эта функция имеет значение High.

Автоматическое управление получением

Вы можете автоматически настроить громкость микрофона, чтобы обеспечить согласованные уровни звука на протяжении всего звонка.

  • Аналоговый автоматический контроль получения — это фильтр, доступный только перед вызовом. По умолчанию этот фильтр включен.
  • Управление цифровым автоматическим получением — это фильтр, доступный только перед вызовом. По умолчанию этот фильтр включен.

Музыкальный режим

Музыкальный режим — это фильтр, доступный до и во время звонка. Дополнительные сведения о музыкальном режиме см. в разделе "Музыкальный режим" в пакете SDK для собственных вызовов. Музыкальный режим работает только на собственных платформах через одно или групповые вызовы. Он не работает в вызовах между собственными платформами и Интернетом. По умолчанию музыкальный режим отключен.

Необходимые компоненты

Настройка системы

Выполните следующие действия, чтобы настроить систему.

Создание проекта Visual Studio

Для приложения универсальная платформа Windows в Visual Studio 2022 создайте проект пустого приложения (универсального приложения Windows). После ввода имени проекта вы можете выбрать любой пакет SDK для Windows позже 10.0.17763.0.

Для приложения WinUI 3 создайте проект с шаблоном "Пустое приложение" (WinUI 3 в классическом приложении) для настройки одностраничного приложения WinUI 3. Требуется пакет SDK для приложений Windows версии 1.3 или более поздней.

Установка пакета и зависимостей с помощью NuGet диспетчер пакетов

Api и библиотеки пакета SDK для вызовов общедоступны через пакет NuGet.

Чтобы найти, скачать и установить пакет NuGet пакета Sdk для вызовов:

  1. Откройте nuGet диспетчер пакетов, выбрав инструменты>NuGet диспетчер пакетов> Manage NuGet Packages for Solution.
  2. Выберите "Обзор" и введите Azure.Communication.Calling.WindowsClient в поле поиска.
  3. Убедитесь, что установлен флажок "Включить предварительную версию ".
  4. Выберите пакет Azure.Communication.Calling.WindowsClient, а затем выберите Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 или более позднюю версию.
  5. Установите флажок, соответствующий проекту Службы коммуникации Azure на правой панели.
  6. Выберите Установить.

Вы можете использовать функцию фильтра звука для применения различных предварительной обработки звука к исходящему звуку. Два типа звуковых фильтров: OutgoingAudioFilters и LiveOutgoingAudioFilters. Используйте OutgoingAudioFilters для изменения параметров перед началом вызова. Используется LiveOutgoingAudioFilters для изменения параметров во время выполнения вызова.

Сначала необходимо импортировать пакет SDK для вызовов:

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

Перед началом вызова

При запуске вызова можно применить OutgoingAudioFilters .

Начните с создания OutgoingAudioFilters свойства и его передачи OutgoingAudioOptionsв , как показано в следующем коде:

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

Во время звонка

После начала вызова можно применить LiveOutgoingAudioFilters . Этот объект можно получить из объекта вызова после начала вызова. Чтобы изменить параметр, LiveOutgoingAudioFiltersзадайте членам внутри класса допустимое значение и они применяются.

Во время активного вызова доступны только подмножества фильтров OutgoingAudioFilters . Это музыкальный режим, эхо-отмена и режим подавления шума.

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