实时语音均衡器

最近更新时间:2024-10-15 14:45:41

我的收藏
为方便开发者调试和接入腾讯云游戏多媒体引擎产品 API,本文为您介绍游戏多媒体引擎实时语音均衡器功能的接入指引。


使用场景

GME 均衡器功能,可以将 GME SDK 采集的音频流实时进行均衡器调整。该功能可应用于线上K歌场景,玩家开始唱歌后,调用 GME SDK均衡器 接口,即可将玩家的实时语音流做声音美化效果方面的调整。

前提条件

已开通实时语音服务:可参见 服务开通指引
已接入 GME SDK:包括核心接口和实时语音接口的接入,详情可参见 Native SDK 快速接入Unity SDK 快速接入Unreal SDK 快速接入

体验 Demo

下载 Demo

此体验 Demo 为一个 Windows 可执行程序,界面如下:




配置参数

在 Appid 和 Key 的输入框中填入自己申请的 GME AppID 以及 Key。
如果需要,您也可以输入目标房间号以及 OpenID。

使用方法

1. 进房打开麦克风扬声器流程如下:Init > EnterRoom > EnableCapture > EnablePlay > EnableSend > EnableRecv。
2. 进房成功之后,可以开启 EnableLoopBack 听到自己的声音。
3. 后续再调整红框中的 EQ 均衡器(EQ 是频段增益,Exditor 和 Reverb 是混响器)。

均衡器功能接入

使用此接口需要在进房成功的状态下,才能对本端采集的声音实现均衡器调节效果。

函数原型

int SetKaraokeType(ITMG_VOICE_TYPE_EQUALIZER* pEqualizer, ITMG_VOICE_TYPE_REVERB* pReverb)
参数
类型
意义
pEqualizer
ITMG_VOICE_TYPE_EQUALIZER
频段增益
pReverb
ITMG_VOICE_TYPE_REVERB
涵盖 HARMONIC 和 REVERB

结构体详细信息

ITMG_VOICE_TYPE_EQUALIZER 中结构体成员为 float 类型,数值范围为-12到12。
ITMG_VOICE_TYPE_EQUALIZER
意义
EQUALIZER_32HZ
32HZ频段上施加的增益
EQUALIZER_64HZ
64HZ频段上施加的增益
EQUALIZER_128HZ
128HZ频段上施加的增益
EQUALIZER_250HZ
250HZ频段上施加的增益
EQUALIZER_500HZ
500HZ频段上施加的增益
EQUALIZER_1KHZ
1KHZ频段上施加的增益
EQUALIZER_2KHZ
2KHZ频段上施加的增益
EQUALIZER_4KHZ
4KHZ频段上施加的增益
EQUALIZER_8KHZ
8KHZ频段上施加的增益
EQUALIZER_16KHZ
16KHZ频段上施加的增益
EQUALIZER_MASTER_GAIN
整体音量
ITMG_VOICE_TYPE_REVERB 中结构体成员为 float 类型,数值范围为0到 1。
ITMG_VOICE_TYPE_REVERB
HARMONIC_GAIN
HARMONIC_START_FREQUENCY
HARMONIC_BASS_CONTROL
REVERB_SIZE
REVERB_DEPTH
REVERB_GAIN
REVERB_ECHO_DEPTH

示例代码

void CTMGSDK_For_AudioDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if ((CWnd*)pScrollBar == (CWnd*)&m_SliderEQ1 ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderEQ2 ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderEQ3 ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderEQ4 ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderEQ5 ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderEQ6 ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderEQ7 ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderEQ8 ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderEQ9 ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderEQ10 ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderEQ11 ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderExGain ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderExStartFrequency ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderExBaseCtrl ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderReverbSize ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderReverbDepth ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderReverbGain ||
(CWnd*)pScrollBar == (CWnd*)&m_SliderReverbEchoDepth
)
{
ITMG_VOICE_TYPE_EQUALIZER equalizer = {
(m_SliderEQ1.GetPos() - 50) * 24.0f / 100,
(m_SliderEQ2.GetPos() - 50) * 24.0f / 100,
(m_SliderEQ3.GetPos() - 50) * 24.0f / 100,
(m_SliderEQ4.GetPos() - 50) * 24.0f / 100,
(m_SliderEQ5.GetPos() - 50) * 24.0f / 100,
(m_SliderEQ6.GetPos() - 50) * 24.0f / 100,
(m_SliderEQ7.GetPos() - 50) * 24.0f / 100,
(m_SliderEQ8.GetPos() - 50) * 24.0f / 100,
(m_SliderEQ9.GetPos() - 50) * 24.0f / 100,
(m_SliderEQ10.GetPos() - 50) * 24.0f / 100,
(m_SliderEQ11.GetPos() - 50) * 24.0f / 100
};

ITMG_VOICE_TYPE_REVERB reverb = {
(m_SliderExGain.GetPos()) * 1.0f / 100.0f,
(m_SliderExStartFrequency.GetPos()) * 1.0f / 100.0f,
(m_SliderExBaseCtrl.GetPos()) * 1.0f / 100.0f,
(m_SliderReverbSize.GetPos()) * 1.0f / 100.0f,
(m_SliderReverbDepth.GetPos()) * 1.0f / 100.0f,
(m_SliderReverbGain.GetPos()) * 1.0f / 100.0f,
(m_SliderReverbEchoDepth.GetPos()) * 1.0f / 100.0f
};

m_pTmgContext->GetAudioEffectCtrl()->SetKaraokeType(&equalizer, &reverb);

}
CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
}

均衡器使用指引

注意
此处仅提供指引,如果需要更加深入的使用 EQ 效果,需要专业的调音师协作。
人耳可以听到的声音范围大致为20HZ - 20KHZ,人耳对于各频段的感知呈现对数关系,因此混音工程中常将人的可听频段分成10个八度分别进行调整,调音大致分为如下几个区域:
频段
区域
说明
20HZ - 32HZ
次声和超低音区
大部分频段低于人耳听觉下限,多用触觉感知,音乐中超大型管风琴以及电影中的爆炸和雷声音效可以达到这个频率,人声无法达到这个频段,一般 VOIP 通话建议调至z最低,去除直流干扰,将信号能量留给其他频段。
32HZ - 64HZ
重低音区
主要用于调整鼓和贝斯的下潜,音调感觉不明显,部分男低音音域可达这个频段。VOIP 通话人声调音一般建议调低,去除工频干扰,将能量留给其他频段。
64HZ - 125HZ
低音区
大部分管弦乐器的基频的范围,也决定打击乐的力度。
125HZ - 250HZ
低音区
人声的基频的范围,决定人声音调感知,过重会导致声音浑浊。
250HZ - 500HZ
中低音区
包含人声音色的重要的低次谐波所在频段,可用于调整男声音色,适当增强这一段使人声音色温暖,厚重;增强过度声音变浑浊。
500HZ - 1KHZ
中音区
调整女声音色,使其更饱满,调整太高会导致鼻音重。手机等移动播放设备的共振峰处于这个频段,建议避免调整太高容易引起结构振动杂音。
1KHZ - 2KHZ
中音区
人耳较敏感区域,影响响度和临场感,可以适当增强。
2KHZ - 4KHZ
中高音区
人耳最敏感的区域,提升这一判断可以提高声音的响度,提升语音可懂度相关,调整太高会导致齿音过重。
4KHZ - 8KHZ
高音区
表现镲等高频乐器,已经弦乐器摩擦音等声音细节。决定人声的高频细节,如唇齿音,摩擦音等,一般不建议提升。
8KHZ - 16KHZ
超高音和超声区
乐器的高频泛音,调整对语音作用不大。
具体调整也可以参考下图: