O ARTC SDK permite aplicar efeitos de voz em tempo real — mudança de voz, reverberação e embelezamento — ao áudio local durante chamadas RTC.
Recursos
Ative esses efeitos de áudio chamando as APIs correspondentes:
Mudança de voz: altere a voz para soar como idoso, menino ou menina.
Reverberação: adicione reverberação espacial para simular um ambiente específico.
Embelezamento de voz: ajuste o timbre da voz para estilos como Magnético ou Fresco.
Efeito de voz personalizado: ajuste tom, reverberação e equalizador além dos predefinidos para criar efeitos personalizados.
Código de exemplo
Baixe o projeto de exemplo open source ou visualize o código-fonte:
Configure mudança de voz, reverberação e embelezamento de voz no Android: Android/ARTCExample/BasicUsage/src/main/java/com/aliyun/artc/api/basicusage/VoiceChange/VoiceChangeActivity.java
Configure mudança de voz, reverberação e embelezamento de voz no iOS: iOS/ARTCExample/BasicUsage/VoiceChange/VoiceChangeVC.swift
Pré-requisitos
Antes de começar:
Tenha uma conta Alibaba Cloud e um aplicativo RTC (Crie um aplicativo). Obtenha o App ID e a App Key no console Application Management.
Integre o SDK (Baixe e integre o SDK) e implemente uma chamada RTC básica (Implementar uma chamada de áudio e vídeo).
Implementação
Chame as seguintes APIs para aplicar efeitos de áudio ao seu projeto.
Mudança de voz
Use o método setAudioEffectVoiceChangerMode para aplicar um efeito de mudança de voz. Cada modo corresponde a um valor de enumeração:
|
Modo de mudança de voz |
Enumeração |
|
Desligado |
|
|
Idoso |
|
|
Menino |
|
|
Menina |
|
|
Robô |
|
|
Demônio |
|
|
KTV |
|
|
Eco |
|
|
Dialeto |
|
|
Rugido |
|
|
Eletrônico |
|
|
Fonógrafo |
|
Android
// Set the preset voice change mode.
mAliRtcEngine.setAudioEffectVoiceChangerMode(mode);
iOS
// Set the preset voice change mode.
self.rtcEngine?.setAudioEffectVoiceChangerMode(mode)
Mac
// Set the preset voice change mode.
[self.rtcEngine setAudioEffectVoiceChangerMode:mode];
Windows
// Set the preset voice change mode.
mAliRtcEngine->SetAudioEffectVoiceChangerMode(mode);
Reverberação
Use o método setAudioEffectReverbMode para simular um ambiente específico com reverberação espacial. Modos disponíveis:
|
Modo de reverberação |
Enumeração |
|
Desligado |
|
|
Vocal I |
|
|
Vocal II |
|
|
Banheiro |
|
|
Sala pequena clara |
|
|
Sala pequena escura |
|
|
Sala média |
|
|
Sala grande |
|
|
Salão de igreja |
|
Android
// Set the preset reverberation mode.
mAliRtcEngine.setAudioEffectReverbMode(mode);
// You can also configure the effect by using parameters.
iOS
// Set the preset reverberation mode.
self.rtcEngine?.setAudioEffectReverbMode(mode)
Mac
// Set the preset reverberation mode.
[self.engine setAudioEffectReverbMode:selectMode];
Windows
// Set the preset reverberation mode.
mAliRtcEngine->SetAudioEffectReverbMode(mode);
// You can also configure the effect by using parameters.
Embelezamento de voz
Use o método setAudioEffectBeautifyMode para aplicar o embelezamento de voz. Dois modos estão disponíveis: Magnético e Fresco.
|
Modo de embelezamento de voz |
Enumeração |
|
Magnético |
|
|
Fresco |
|
Android
// Set the preset voice beautification mode.
mAliRtcEngine.setAudioEffectBeautifyMode(mode);
// You can also configure the effect by using parameters.
iOS
// Set the preset voice beautification mode.
self.rtcEngine?.setAudioEffectBeautifyMode(mode)
Mac
// Set the preset voice beautification mode.
[self.engine setAudioEffectBeautifyMode:selectMode];
Windows
// Set the preset voice beautification mode.
mAliRtcEngine->SetAudioEffectBeautifyMode(mode);
// You can also configure the effect by using parameters.
Efeito de voz personalizado
Se os efeitos predefinidos não forem suficientes, ajuste os parâmetros de tom, equalizador e reverberação para criar efeitos de voz personalizados.
Métodos disponíveis:
-
setAudioEffectPitchValue(value): defina o tom da voz.value: valor do tom. Intervalo: [0,5, 2,0]. Padrão: 1,0 (sem alteração). Valores abaixo de 1,0 diminuem o tom; valores acima de 1,0 o aumentam.
-
setAudioEffectReverbParamType(type, value): defina um parâmetro de reverberação. Chame este método após setAudioEffectReverbMode.type: tipo de parâmetro de reverberação. AliRtcAudioEffectReverbParamType.value: valor do parâmetro de reverberação. Os intervalos variam conforme o tipo. AliRtcAudioEffectReverbParamType.
-
setAudioEffectEqualizationParam(bandIndex, gain): defina um parâmetro do equalizador. Chame este método após setAudioEffectBeautifyMode.bandIndex: índice da banda do equalizador. Intervalo: [0, 9], correspondendo a 31, 62, 125, 250, 500, 1000, 2000, 4000, 8000 e 16000 Hz.gain: ganho da banda em dB. Intervalo: [-15, 15]. Padrão: 0.
Android
// Set the pitch. The value ranges from 0.5 to 2.0. The default is 1.0.
// A value less than 1.0 lowers the pitch, and a value greater than 1.0 raises it.
mAliRtcEngine.setAudioEffectPitchValue(1.5);
// To set custom reverb parameters, you must first set a reverb mode.
// Example: Set the mode to Large Room, then adjust the room size.
mAliRtcEngine.setAudioEffectReverbMode(AliRtcEngine.AliRtcAudioEffectReverbMode.AliRtcSdk_AudioEffect_Reverb_Large_Room);
mAliRtcEngine.setAudioEffectReverbParamType(AliRtcEngine.AliRtcAudioEffectReverbParamType.AliRtcSdk_AudioEffect_Reverb_Room_Size, 50);
// To set custom equalizer parameters, you must first set a voice beautification mode.
// Example: Set the mode to Magnetic, then adjust the gain of a specific band.
mAliRtcEngine.setAudioEffectBeautifyMode(AliRtcEngine.AliRtcAudioEffectBeautifyMode.AliRtcSdk_AudioEffect_Beautify_Magnetic);
mAliRtcEngine.setAudioEffectEqualizationParam(AliRtcEngine.AliRtcAudioEffectEqualizationBandFrequency.AliRtcSdk_AudioEffect_EqualizationBand1K, 5);
iOS
// Set the pitch. The value ranges from 0.5 to 2.0. The default is 1.0.
// A value less than 1.0 lowers the pitch, and a value greater than 1.0 raises it.
let pitch = 1.5
self.rtcEngine?.setAudioEffectPitchValue(pitch)
// To set custom reverb parameters, you must first set a reverb mode.
// Example: Set the mode to Large Room, then adjust the room size.
self.rtcEngine?.setAudioEffectReverbMode(.large_Room)
self.rtcEngine?.setAudioEffectReverbParamType(.room_Size, value: 50)
// To set custom equalizer parameters, you must first set a voice beautification mode.
// Example: Set the mode to Magnetic, then adjust the gain of a specific band.
self.rtcEngine?.setAudioEffectBeautifyMode(.magnetic)
self.rtcEngine?.setAudioEffectEqualizationParam(.band1K, gain: 5)
Mac
// Set the pitch. The value ranges from 0.5 to 2.0. The default is 1.0.
// A value less than 1.0 lowers the pitch, and a value greater than 1.0 raises it.
int pitch = 1.5;
[self.rtcEngine setAudioEffectPitchValue:pitch];
// To set custom reverb parameters, you must first set a reverb mode.
// Example: Set the mode to Large Room, then adjust the room size.
[self.rtcEngine setAudioEffectReverbMode:AliRtcAudioEffectReverb_Large_Room];
[self.rtcEngine setAudioEffectReverbParamType:AliRtcAudioEffectReverb_Room_Size value:50.0];
// To set custom equalizer parameters, you must first set a voice beautification mode.
// Example: Set the mode to Magnetic, then adjust the gain of a specific band.
[self.rtcEngine setAudioEffectBeautifyMode:AliRtcAudioEffectBeautify_Magnetic];
[self.rtcEngine setAudioEffectEqualizationParam:AliRtcAudioEffectEqualizationBand1K gain:5.0];
Windows
// Set the pitch. The value ranges from 0.5 to 2.0. The default is 1.0.
// A value less than 1.0 lowers the pitch, and a value greater than 1.0 raises it.
mAliRtcEngine->SetAudioEffectPitchValue(1.5);
// To set custom reverb parameters, you must first set a reverb mode.
// Example: Set the mode to Large Room, then adjust the room size.
mAliRtcEngine->SetAudioEffectReverbMode(AliEngineAudioEffectReverbMode::AliEngineAudioEffectReverb_Large_Room);
mAliRtcEngine->SetAudioEffectReverbParamType(AliEngineAudioEffectReverbParamType::AliEngineAudioEffectReverbParamType_Room_Size, 50.0f);
// To set custom equalizer parameters, you must first set a voice beautification mode.
// Example: Set the mode to Magnetic, then adjust the gain of a specific band.
mAliRtcEngine->SetAudioEffectBeautifyMode(AliEngineAudioEffectBeautifyMode::AliEngineAudioEffectBeautify_Magnetic);
mAliRtcEngine->SetAudioEffectEqualizationParam(AliEngineAudioEffectEqualizationBandFrequency::AliEngineAudioEffectEqualizationBandFrequency_Band1K, 5.0f);