确保RECORD_AUDIO 权限
在Awake 时,需要首先确认录音权限已经申请成功。
private void Awake()
{
if (!Permission.HasUserAuthorizedPermission("android.permission.RECORD_AUDIO"))
{
Permission.RequestUserPermission("android.permission.RECORD_AUDIO");
}
}
初始化离线语音指令服务
在获取权限之后,使用离线语音指令之前需要对离线语音指令服务进行初始化,并且确定要使用的语言类型。
void Start()
{
ModuleManager.Instance.RegistModule("com.rokid.voicecommand.VoiceCommandHelper", false);
OfflineVoiceModule.Instance.ChangeVoiceCommandLanguage(LANGUAGE.CHINESE);
//OfflineVoiceModule.Instance.ChangeVoiceCommandLanguage(LANGUAGE.ENGLISH);
}
编写监听
语音指令可以通过监听的方式获取,回调参数为被识别到的字符串。
public void OnReceive(string msg)
{
if(string.Equals(command, msg))
{
//TODO("Do some things")
}
}
注册离线语音指令
在确保离线语音指令服务初始化后,就可以在生命周期内对离线语音指令进行注册。注意离线语音指令需要在生命周期内完成注册,并且在注册完成之后需要通过Commit 进行提交。以在Start 生命周期为例:
void Start()
{
OfflineVoiceModule.Instance.AddInstruct(LANGUAGE.ENGLISH, "show blue", null, this.gameObject.name, "OnReceive");
OfflineVoiceModule.Instance.AddInstruct(LANGUAGE.CHINESE, "变成蓝色", "bian cheng lan se", this.gameObject.name, "OnReceive");
OfflineVoiceModule.Instance.Commit();
}
解注册离线语音指令
离线语音指令需要在使用完成后完成解注册,在remove 指令之后,同样也需要通过Commit 进行提交。以下以在OnDestroy 生命周期为例:
private void OnDestroy()
{
OfflineVoiceModule.Instance.ClearAllInstruct();
OfflineVoiceModule.Instance.Commit();
}