如何使用函数GetStorageFileName将训练文件添加到registry?

我正在使用sapi 5.4,我能够保留audio进行培训,但将其添加到registry项中,如本文所述使用SAPI 5.3语音API进行声学培训我无法理解要用于ISpObjectToken :: GetStorageFileName的参数有人帮我出来吗?

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

clsidCaller

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

pszValueName

要存储文件名的注册表子项名称。对于培训,这应该是L"TrainingAudio-<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 CSIDL_LOCAL_APPDATA | CSIDL_FLAG_CREATE

ppszFilePath

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