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

Введение

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

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

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

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

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

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

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

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

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

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

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

ZegoExpressEngine.getEngine().setVoiceChangerPreset(ZegoVoiceChangerPreset.MEN_TO_CHILD);
Вход в полноэкранный режим Выйти из полноэкранного режима

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

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

ZegoVoiceChangerParam voiceChangerParam = new ZegoVoiceChangerParam();
param.pitch = 2.0f;
ZegoExpressEngine.getEngine().setVoiceChangerParam(param);
Вход в полноэкранный режим Выход из полноэкранного режима

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

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

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

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

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

ZegoExpressEngine.getEngine().setReverbPreset(ZegoReverbPreset.LARGE_ROOM);
Вход в полноэкранный режим Выйти из полноэкранного режима

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

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

ZegoReverbAdvancedParam reverbParam = new ZegoReverbAdvancedParam();
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.getEngine().setReverbAdvancedParam(reverbParam);
Вход в полноэкранный режим Выход из полноэкранного режима

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

Реверберационное эхо

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

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

ZegoReverbEchoParam echoParam = new ZegoReverbEchoParam();
echoParam.inGain = 0.8f;
echoParam.outGain =1.0f;
echoParam.numDelays = 7;
int[] delay ={230,460,690,920,1150,1380,1610};
echoParam.delay=delay;

float[] decay={0.41f,0.18f,0.08f,0.03f,0.009f,0.003f,0.001f};
echoParam.decay=decay;
zegoReverbEchoParamDatas.add(echoParam);
ZegoExpressEngine.getEngine().setReverbEchoParam(echoParam);
Вход в полноэкранный режим Выход из полноэкранного режима

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

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

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

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

ZegoAudioConfig audioConfig = new ZegoAudioConfig(STANDARD_QUALITY_STEREO);
ZegoExpressEngine.getEngine().setAudioConfig(audioConfig);
Вход в полноэкранный режим Выход из полноэкранного режима

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

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

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

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

ZegoExpressEngine.getEngine().enableVirtualStereo(true, 90);
Войти в полноэкранный режим Выход из полноэкранного режима

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

ZegoExpressEngine.getEngine().enableVirtualStereo(true, -1);
Войти в полноэкранный режим Выход из полноэкранного режима

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