MRTK V2.2 - 通过脚本访问语音命令
MRTK V2.2 - Access Speech Command via Script
在我的场景中,按钮是在运行时创建的。这些将通过语音命令单击。出于这个原因,我试图找出如何在运行时添加语音命令。但是我找不到任何方法。
我试过的:
我用两种方法扩展了接口 IMixedRealitySpeechSystem
,RefreshRecognition
和 AddSpeechCommand
:
/// <summary>
/// Refresh recognition after adding new commands
/// </summary>
void RefreshRecognition();
/// <summary>
/// Add command to already existing commands[]
/// </summary>
/// <param name="command"></param>
void AddSpeechCommand(SpeechCommands command);
我已经在 class WindowsSpeechInputProvider: MixedRealitySpeechSystem
中实现了这些。但是有两个问题。
首先:我无法访问 WindowsSpeechInputProvider。我以为我可以通过尝试得到它:
private IMixedRealitySpeechSystem SpeechSystem
{
get
{
if(_speechSystem is null)
{
MixedRealityServiceRegistry.TryGetService(out _speechSystem);
}
return _speechSystem;
}
}
public void SomeMethod()
{
SpeechCommands command = new SpeechCommands("TestCommand", default, default, null);
SpeechSystem.AddSpeechCommand(command);
SpeechSystem.RefreshRecognition();
}
但问题是 MixedRealityServiceRegistry
不包含该服务的实例,或者准确地说,它甚至不是服务。
其次:即使这样行得通,也不是一个好办法。因为我更改了 MRTK 并再次升级到新版本,所以这些行被覆盖了。
我的问题:
那么如何在运行时访问和添加命令?
有一个允许在 Github 中添加动态语音命令的开放功能请求:Add keywords dynamically to MRTK speech commands #6369. 目前不可能。
此线程对处理整个场景的替代方法有一些建议。总之,建议您使用语法识别器并使用 SRGS XML 文件来定义您的语音识别规则。 Voice input in Unity and Hologram 212 有一个演示如何使用它的示例。
在我的场景中,按钮是在运行时创建的。这些将通过语音命令单击。出于这个原因,我试图找出如何在运行时添加语音命令。但是我找不到任何方法。
我试过的:
我用两种方法扩展了接口 IMixedRealitySpeechSystem
,RefreshRecognition
和 AddSpeechCommand
:
/// <summary>
/// Refresh recognition after adding new commands
/// </summary>
void RefreshRecognition();
/// <summary>
/// Add command to already existing commands[]
/// </summary>
/// <param name="command"></param>
void AddSpeechCommand(SpeechCommands command);
我已经在 class WindowsSpeechInputProvider: MixedRealitySpeechSystem
中实现了这些。但是有两个问题。
首先:我无法访问 WindowsSpeechInputProvider。我以为我可以通过尝试得到它:
private IMixedRealitySpeechSystem SpeechSystem
{
get
{
if(_speechSystem is null)
{
MixedRealityServiceRegistry.TryGetService(out _speechSystem);
}
return _speechSystem;
}
}
public void SomeMethod()
{
SpeechCommands command = new SpeechCommands("TestCommand", default, default, null);
SpeechSystem.AddSpeechCommand(command);
SpeechSystem.RefreshRecognition();
}
但问题是 MixedRealityServiceRegistry
不包含该服务的实例,或者准确地说,它甚至不是服务。
其次:即使这样行得通,也不是一个好办法。因为我更改了 MRTK 并再次升级到新版本,所以这些行被覆盖了。
我的问题:
那么如何在运行时访问和添加命令?
有一个允许在 Github 中添加动态语音命令的开放功能请求:Add keywords dynamically to MRTK speech commands #6369. 目前不可能。
此线程对处理整个场景的替代方法有一些建议。总之,建议您使用语法识别器并使用 SRGS XML 文件来定义您的语音识别规则。 Voice input in Unity and Hologram 212 有一个演示如何使用它的示例。