为方便开发者调试和接入腾讯云游戏多媒体引擎产品 API,本文向您介绍游戏多媒体引擎变声特效的接入方法。
使用场景
前提条件
已开通实时语音服务:可参见 服务开通指引。
已开通语音转文本服务:可参见 服务开通指引。
已接入 GME SDK:包括核心接口和实时语音接口的接入,详情可参见 Native SDK 快速接入、Unity SDK 快速接入、Unreal SDK 快速接入。
已接入 GME SDK 库文件libgmesoundtouch:需要保证工程库文件中带有 libgmesoundtouch,具体参见 库文件对应功能。
实时语音变声接入
变声接口
在已经进房成功且打开麦克风的情况下,调用 SetVoiceType 接口设置变声特效,接口返回0代表调用成功,房间内的人听到的本端发出的声音带有变声效果。如果要自测变声效果,请使用耳返功能(接口:EnableLoopBack)。
函数原型
public abstract int SetVoiceType(int type);
-(QAVResult)SetVoiceType:(ITMG_VOICE_TYPE) type
public abstract int SetVoiceType(int voiceType);
virtual int SetVoiceType(ITMG_VOICE_TYPE voiceType) = 0;
参数 | 类型 | 意义 |
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 | 小顽童 |
示例代码
int
ret
=
m_pTmgContext
->
GetAudioEffectCtrl
(
)
->
SetVoiceType
(
(
ITMG_VOICE_TYPE
)
m_ComBoxVoiceChangeType
.
GetCurSel
(
)
)
;
if
(
ret
!=
AV_OK
)
{
char
result
[
128
]
=
{
0
}
;
snprintf
(
result
,
sizeof
result
,
"SetVoiceType failed error code: %d"
,
ret
)
;
m_EditMonitor
.
SetWindowText
(
MByteToWChar
(
std
::
string
(
result
)
)
.
c_str
(
)
)
;
}
语音消息变声接入
语音消息变声流程
语音消息变声不会影响原始的音频信息,在播放的时候才体现变声效果。
语音消息播放
语音消息播放接口,带有变声效果参数。
public abstract int PlayRecordedFile(String filePath,int voicetype);
-(int)PlayRecordedFile:(NSString*)filePath VoiceType:(ITMG_VOICE_TYPE) type
ITMGPTT PlayRecordedFile(string filePath,int voiceType);
public abstract int PlayRecordedFile(string filePath,int voiceType);
参数 | 类型 | 含义 |
filePath | string | 本地语音文件的路径 |
voicetype | int | 变声类型 |
错误码
错误码值 | 原因 | 建议方案 |
20485 | 播放未开始 | 确保文件存在,文件路径的合法性 |