一、前提条件
·已开通实时语音服务:可参见 服务开通指引。
·已接入 GME SDK:包括核心接口和实时语音接口的接入,详情可参见 Native SDK 快速接入、Unity SDK 快速接入、Unreal SDK 快速接入。
·使用 GME 实时语音功能成功进入语音房间,并且打开了麦克风(EnableMic)、扬声器(EnableSpeaker)。
二、实时语音音效相关接口
| 接口 | 接口含义 |
| PlayEffect | 播放音效 |
| PauseEffect | 暂停播放音效 |
| PauseAllEffects | 暂停所有音效 |
| ResumeEffect | 重新播放音效 |
| ResumeAllEffects | 重新播放所有音效 |
| StopEffect | 停止播放音效 |
| StopAllEffects | 停止播放所有音效 |
| SetVoiceType | 变声特效 |
| SetKaraokeType | K 歌音效特效 |
| GetEffectsVolume | 获取播放音效的音量 |
| SetEffectsVolume | 设置播放音效的音量 |
三、播放音效
PlayEffect 接口用于播放音效。参数中音效 ID 需要 App 侧进行管理,ID 代表一次独立的播放事件。后续可以根据此 ID 控制此次播放。文件支持 m4a、wav、mp3 一共三种格式。
四、函数原型
ITMGAudioEffectCtrl virtual int PlayEffect(int soundId, const char* filePath, bool loop, double pitch, double pan, double gain)
| 参数 | 类型 | 意义 |
| soundId | int | 音效 ID |
| filePath | char* | 音效路径 |
| loop | bool | 是否重复播放 |
| pitch | double | 播放频率,默认为1.0,该值越小播放速度越慢、时间越长 |
| pan | double | 声道,取值范围为 -1.0到1.0之间,-1.0表示只开启左声道 |
| gain | double | 增益音量,取值范围为 0.0到 1.0之间,默认为1.0 |
五、示例代码
double pitch = 1.0;double pan = 0.0;double gain = 0.0;//Windows端ITMGContextGetInstance()->GetAudioEffectCtrl()->PlayEffect(soundId,filepath,true,pitch,pan,gain);//Android端ITMGContext.GetInstance(this).GetAudioEffectCtrl().PlayEffect(soundId,filePath,loop);//iOS端[[[ITMGContext GetInstance] GetAudioEffectCtrl] PlayEffect:soundId filePath:path loop:isLoop];
六、暂停播放音效
PauseEffect 接口用于暂停播放音效。
七、函数原型
ITMGAudioEffectCtrl virtual int PauseEffect(int soundId)
| 参数 | 类型 | 意义 |
| soundId | int | 音效 ID |
八、示例代码
ITMGContextGetInstance()->GetAudioEffectCtrl()->PauseEffect(soundId);
九、暂停所有音效
调用 PauseAllEffects 接口暂停所有音效
十、函数原型
ITMGAudioEffectCtrl virtual int PauseAllEffects()
十一、示例代码
ITMGContextGetInstance()->GetAudioEffectCtrl()->PauseAllEffects();
十二、重新播放音效
ResumeEffect 接口用于重新播放音效。
十三、函数原型
ITMGAudioEffectCtrl virtual int ResumeEffect(int soundId)
| 参数 | 类型 | 意义 |
| soundId | int | 音效 ID |
十四、示例代码
ITMGContextGetInstance()->GetAudioEffectCtrl()->ResumeEffect(soundId);
十五、重新播放所有音效
调用 ResumeAllEffects 接口重新播放所有音效。
十六、函数原型
ITMGAudioEffectCtrl virtual int ResumeAllEffects()
十七、示例代码
ITMGContextGetInstance()->GetAudioEffectCtrl()->ResumeAllEffects();
十八、停止播放音效
StopEffect 接口用于停止播放音效。
十九、函数原型
ITMGAudioEffectCtrl virtual int StopEffect(int soundId)
| 参数 | 类型 | 意义 |
| soundId | int | 音效 ID |
20、示例代码
ITMGContextGetInstance()->GetAudioEffectCtrl()->StopEffect(soundId);
21、停止播放所有音效
调用 StopAllEffects 接口停止播放所有音效。
22、函数原型
ITMGAudioEffectCtrl virtual int StopAllEffects()
23、示例代码
ITMGContextGetInstance()->GetAudioEffectCtrl()->StopAllEffects();
24、变声特效
调用 SetVoiceType 接口设置变声特效。
25、函数原型
TMGAudioEffectCtrl int setVoiceType(int type)
| 参数 | 类型 | 意义 |
| type | int | 表示本端音频变声类型 |
| 类型参数 | 参数代表 | 意义 |
| ITMG_VOICE_TYPE_ORIGINAL_SOUND | 0 | 原声 |
| ITMG_VOICE_TYPE_LOLITA | 1 | 小女孩 |
| ITMG_VOICE_TYPE_UNCLE | 2 | 大叔 |
| ITMG_VOICE_TYPE_INTANGIBLE | 3 | 空灵 |
| ITMG_VOICE_TYPE_DEAD_FATBOY | 4 | 小胖子 |
| ITMG_VOICE_TYPE_HEAVY_MENTA | 5 | 重金属 |
| ITMG_VOICE_TYPE_DIALECT | 6 | 歪果仁 |
| ITMG_VOICE_TYPE_INFLUENZA | 7 | 感冒 |
| ITMG_VOICE_TYPE_CAGED_ANIMAL | 8 | 困兽 |
| ITMG_VOICE_TYPE_HEAVY_MACHINE | 9 | 重机器 |
| ITMG_VOICE_TYPE_STRONG_CURRENT | 10 | 强电流 |
| ITMG_VOICE_TYPE_KINDER_GARTEN | 11 | 幼稚园 |
| ITMG_VOICE_TYPE_HUANG | 12 | 小顽童 |
26、示例代码
ITMGContextGetInstance()->GetAudioEffectCtrl()->setVoiceType(0);
27、K 歌音效特效
调用 SetKaraokeType 接口设置 K 歌音效特效。
28、函数原型
TMGAudioEffectCtrl int SetKaraokeType(int type)
| 参数 | 类型 | 意义 |
| type | int | 表示本端音频变声类型。 |
| 类型参数 | 参数代表 | 意义 |
| ITMG_KARAOKE_TYPE_ORIGINAL | 0 | 原声 |
| ITMG_KARAOKE_TYPE_POP | 1 | 流行 |
| ITMG_KARAOKE_TYPE_ROCK | 2 | 摇滚 |
| ITMG_KARAOKE_TYPE_RB | 3 | 嘻哈 |
| ITMG_KARAOKE_TYPE_DANCE | 4 | 舞曲 |
| ITMG_KARAOKE_TYPE_HEAVEN | 5 | 空灵 |
| ITMG_KARAOKE_TYPE_TTS | 6 | 语音合成 |
29、示例代码
ITMGContextGetInstance()->GetAudioEffectCtrl()->SetKaraokeType(0);
30、获取播放音效的音量
调用 GetEffectsVolume 接口获取播放音效的音量,为线性音量,默认值为100,数值大于100为增益效果,数值小于100为减益效果。
31、函数原型
ITMGAudioEffectCtrl virtual int GetEffectsVolume()
32、示例代码
ITMGContextGetInstance()->GetAudioEffectCtrl()->GetEffectsVolume();
33、设置播放音效的音量
调用 SetEffectsVolume 接口设置播放音效的音量。
34、函数原型
ITMGAudioEffectCtrl virtual int SetEffectsVolume(int volume)
| 参数 | 类型 | 意义 |
| volume | int | 音量数值 |
35、示例代码
int volume=1;ITMGContextGetInstance()->GetAudioEffectCtrl()->SetEffectsVolume(volume);
36、相关文档
关于变声玩法的效果请参见 实时语音趣味变声,大叔变声“妙音娘子”Get一下。