如何使用GetStorageFileName函数将培训文件添加到注册表?

时间:2014-07-07 11:49:17

标签: windows speech-recognition sapi

我正在使用sapi 5.4并且我能够保留用于训练的音频但是将其添加到此Acoustic training using SAPI 5.3 Speech API中给出的注册表项中我无法理解用于ISpObjectToken :: GetStorageFileName的参数有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

ISpObjectToken::GetStorageFileName不是世界上最好的API。幸运的是,我有一些有用的例子来帮助改进文档。

clsidCaller

如果需要与对象标记关联的文件名,请设置此项。对于培训,这应该是CLSID_NULL。 (如果您正在更新与引擎相关的数据,那么它将是引擎的CLSID。)

pszValueName

用于存储文件名的注册表子项的名称。对于培训,这应该是L"TrainingAudio-<locale>",其中locale应该是引擎的4位区域设置ID。

pszFileNameSpecifier

要创建的文件的名称。

如果以“X:\”或“\”开头,则假定它是完整路径。

否则假定它是相对于nFolder参数中给出的特殊文件夹ID。

如果pszFileNameSpecifier以'\'结尾,或者为NULL,则将创建唯一的文件名。

如果名称包含%d,则%d将替换为数字以提供唯一的文件名。

对于培训,您应指定L"TrainingAudio\\TR_%d.wav".

之类的内容

n文件夹

CSIDL值,用于标识要检索其路径的文件夹。用户可以通过将文件夹的CSIDL与CSIDL_FLAG_CREATE组合来强制创建文件夹。如果pszFileNameSpecifier为NULL或“\”,则如果用户想要强制创建文件,则nFolder必须具有指定的CSIDL文件夹和CSIDL_FLAG_CREATE。

对于培训,这应该是CSIDL_LOCAL_APPDATA | CSIDL_FLAG_CREATE

ppszFilePath

指向接收文件路径信息的以null结尾的字符串的指针的地址。完成后使用CoTaskMemFree释放字符串。