均衡器功能

最近更新时间:2022-02-11 11:29:27

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

均衡器接口

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

函数原型

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 超高音和超声区 乐器的高频泛音,调整对语音作用不大。

具体调整也可以参考下图:

体验 Demo

下载 Demo

下载地址 >>

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

配置参数

在 Appid 和 Key 的输入框中填入自己申请的 GME AppID 以及 Key。

如果需要,您也可以输入目标房间号以及 OpenID。

使用方法

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