【问题标题】:SAPI Speech Recognition - How to create and delete recognition profiles using SpeechLibSAPI 语音识别 - 如何使用 SpeechLib 创建和删除识别配置文件
【发布时间】:2016-10-05 19:16:54
【问题描述】:

SAPI 文档涵盖了识别配置文件的创建和删除。但是我怎样才能用SpeechLib 做到这一点?我想:

  1. 找到当前活动的个人资料,并记录下来。
  2. 创建一个新的配置文件。
  3. 将新配置文件设为活动配置文件。

退出我的应用时:

  1. 删除我创建的配置文件。
  2. 将活动配置文件恢复为启动我的应用程序之前的状态。

顺便说一句:SpeechLib 是否记录在案?

【问题讨论】:

    标签: speech-recognition sapi


    【解决方案1】:

    通过查找SAPI Automation interfaces 找到SpeechLib 文档。

    配置文件是SpObjectToken 的一种类型,可以使用SpObjectTokenCategory 对象进行枚举。具体来说,创建一个新的 SpObjectToken,并设置 ID,然后使用 EnumerateTokens 获取配置文件。 (这个例子用的是VB,但你应该会翻译)

    Dim E As SpeechLib.ISpeechObjectTokens      'an enumeration of object tokens
    Dim C As SpeechLib.SpObjectTokenCategory    'a category of object tokens    
    Set C = New SpObjectTokenCategory
    C.SetId SpeechCategoryRecoProfiles
    List1.AddItem "   " & C.Id
    Set E = C.EnumerateTokens()
    
    For Each T In E
        List1.AddItem "   " & T.GetDescription
    Next
    

    【讨论】:

    • 好的,但是在创建 SpObjectToken 之后,我怎样才能使它成为一个“新”安装的配置文件,所以它会以自己的名字出现在控制面板中?
    • 使用SpObjectToken.DataKey.SetStringValue(NULL, szDescription)设置描述。
    • 我首先要设置它的类别,MyNewProfile.Category.SetId(SpeechStringConstants.SpeechCategoryRecoProfiles) 会抛出错误。
    • 很奇怪,编译器只接受两个参数:SetId(Id as String, [CreateIfNotExist as Boolean=Flase])。使用三个参数不会编译,并且只使用两个会引发运行时异常。如果相关,我将它与 VB.NET 一起使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多