Как использовать ZEGOCLOUD SDK для реализации изменения голоса/реверберации/виртуального стерео в iOS

Введение

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

  • Изменение голоса: Изменяя высоту голоса пользователя, выходной звук сенсорно отличается от исходного, при этом реализуются различные эффекты, например, смена мужского голоса на женский.
  • Реверберация: Путем специальной обработки звука создается эффект реверберации различных сред, благодаря чему создается впечатление, что звук звучит в концертном зале, соборе и т.д.
  • Реверберационное эхо: Благодаря специальной обработке звука, его можно сочетать с изменением голоса и реверберацией для достижения различных пользовательских звуковых эффектов, таких как неземные звуки и звуки роботов.
  • Виртуальное стерео: Благодаря глубокому использованию двухканальной технологии, каждое положение и угол источника звука виртуализируется для достижения стереозвука, объемного 3D-звука и звуковой дискриминации.

Функция действует только для звука, собранного SDK. Разработчик может динамически настраивать изменение голоса, реверберацию, реверберационное эхо и виртуальное стерео во время звонка или прямой трансляции.

Предварительные условия

Прежде чем приступить к работе с изменением голоса/реверберацией/стерео, пожалуйста, убедитесь в следующем:

  • Создайте проект в ZEGOCLOUD Admin Console и получите AppID вашего проекта.
  • ZEGO Express SDK был интегрирован в проект. Подробности смотрите в разделе Интеграция и внедрение.

Изменение голоса

Установка предустановленного изменения голоса

Вызовите метод setVoiceChangerPreset для использования эффекта смены голоса, заданного SDK.

ZegoVoiceChangerPreset предустановленные эффекты изменения голоса следующие, разработчики могут выбирать в соответствии со своими потребностями:

В следующем примере кода мужской голос меняется на детский:

[[ZegoExpressEngine sharedEngine] setVoiceChangerPreset:ZegoVoiceChangerPresetMenToChild];
Вход в полноэкранный режим Выйти из полноэкранного режима

Установка пользовательского эффекта изменения голоса

Если эффект изменения звука, предустановленный SDK, не может удовлетворить спрос, разработчик может вызвать метод ZegoVoiceChangerParam, чтобы передать параметр высоты тона «pitch» устанавливает пользовательское изменение голоса, диапазон значений этого параметра [-8.0, 8.0], чем больше значение, тем резче звук, значение по умолчанию «0.0» (то есть без изменения голоса).

ZegoVoiceChangerParam *param = [[ZegoVoiceChangerParam alloc] init];
param.pitch = 2.0;
[[ZegoExpressEngine sharedEngine] setVoiceChangerParam:param];
Вход в полноэкранный режим Выход из полноэкранного режима

Реверберация

Установка предустановленной реверберации

Вызовите setReverbPreset, чтобы установить реверберацию через перечисление пресетов.

ZegoReverbPreset предустановленные эффекты реверберации следующие, разработчики могут выбирать в соответствии со своими потребностями:

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

[[ZegoExpressEngine sharedEngine] setReverbPreset:ZegoReverbPresetLargeRoom];
Вход в полноэкранный режим Выйти из полноэкранного режима

Установка пользовательского ревербератора

Если предустановленный SDK тип реверберации не может удовлетворить требованиям, разработчик может вызвать метод ZegoReverbAdvancedParam и подобрать соответствующие параметры Настройки для достижения эффекта реверберации, необходимого разработчику (подробное описание параметров см. в документации API).

ZegoReverbAdvancedParam *reverbParam = [[ZegoReverbAdvancedParam alloc] init];
reverbParam.damping = 50.0; // Reverberation damping
reverbParam.reverberance = 50.0; // Reverberation
reverbParam.roomSize = 50.0; // room size
reverbParam.wetOnly = false;
reverbParam.wetGain = 5.0;
reverbParam.dryGain = 5.0;
reverbParam.toneLow = 80.0;
reverbParam.toneHigh = 80.0;
reverbParam.preDelay = 20.0;
reverbParam.stereoWidth = 0.0;

[[ZegoExpressEngine sharedEngine] setReverbAdvancedParam:reverbParam];
Вход в полноэкранный режим Выход из полноэкранного режима

После установки пользовательских параметров реверберации предустановленный эффект реверберации, установленный при включении реверберации, будет недействителен. Если вы хотите снова использовать предустановленные параметры SDK, вы можете использовать метод setReverbPreset для установки.

Эхо реверберации

Вызовите метод setReverbEchoParam для достижения реверберации, требуемой разработчиком, посредством настройки соответствующих параметров Эхо-эффекта (подробное описание параметров см. в документации API).

В следующем примере кода в качестве примера взят эффект эфира:

ZegoReverbEchoParam *echoParamEthereal = [[ZegoReverbEchoParam alloc] init];
echoParamEthereal.inGain = 0.8;
echoParamEthereal.outGain = 1.0;
echoParamEthereal.numDelays = 7;
echoParamEthereal.delay = @[@230, @460, @690, @920, @1150, @1380, @1610];
echoParamEthereal.decay = @[@0.41f, @0.18f, @0.08f, @0.03f, @0.009f, @0.003f, @0.001f];
[[ZegoExpressEngine sharedEngine] setReverbEchoParam:echoParamEthereal];
Вход в полноэкранный режим Выход из полноэкранного режима

Виртуальное стерео

Установка количества потоковых аудиоканалов

Если вам необходимо включить функцию виртуального стерео, вы должны сначала вызвать метод setAudioConfig, чтобы установить перед проталкиванием потока канал кодирования аудио — двойной канал Stereo (по умолчанию — Mono).

В приведенном здесь примере используется предустановленная структура перечисления ZegoAudioConfig для установки двухканального режима.

ZegoAudioConfig *config = [ZegoAudioConfig configWithPreset:ZegoAudioConfigPresetStandardQualityStereo];

[[ZegoExpressEngine sharedEngine] setAudioConfig:config];
Вход в полноэкранный режим Выход из полноэкранного режима

Установка параметров виртуального стерео

После установки двухканального канала кодирования звука вызовите метод enableVirtualStereo, включите виртуальное стерео через параметр enable и установите угол источника звука виртуального стерео через параметр angle, чтобы получить эффект стерео. Диапазон угла составляет от 0 до 360, обычно его можно установить на 90 градусов (то есть прямо вперед).

Начиная с версии 2.15.0, SDK поддерживает круговое виртуальное стерео. Чтобы включить его, установите параметр angle в значение -1.

Ниже показано, как включить виртуальное стерео и установить угол в 90 градусов:

[[ZegoExpressEngine sharedEngine] enableVirtualStereo:YES angle:90];
Войти в полноэкранный режим Выход из полноэкранного режима

Ниже показано, как включить виртуальное стерео по всему периметру:

[[ZegoExpressEngine sharedEngine] enableVirtualStereo:YES angle:-1];
Войти в полноэкранный режим Выход из полноэкранного режима

Оцените статью
Procodings.ru
Добавить комментарий