前段时间因为项目中需要用到讯飞SDK来实现语音识别以及语音合成的功能,但因为是要在Unity构建的项目里实现这些功能,编程语言的不同以及Unity本身的特性使得讯飞SDK要用在Unity上有一定的困难。经过从网上查找的一些资料以及自己的一些尝试,总算是将语音识别以及合成的功能给实现了,以下总结一下在功能实现过程中的一些经验教训:
(1)从讯飞官网上查找的Windows端API文档显示,讯飞SDK给的接口是供C++/C使用的,并没有提供C#的接口。因此,要在Unity里面实现API文档里的功能,需要将文档里所写的接口转换成C#能用的接口。具体步骤为:
①导入dll文件。使用DllImport特性,导入msc.dll或msc_x64.dll文件,即可用在C#程序中,格式为[DllImport("文件路径")];用在一般C#程序中,文件路径中是要有文件后缀的,但要用在Unity中,后缀需要去掉。(本人使用时导入的是msc_x64,msc文件不知为何不能用);
②将API文档中所写的函数转换成C#能用的方法。具体格式以文档中的MSPLogin函数为例,经转换后为:
public static extern int MSPLogin(string user, string password, string _params);
另外,注意将文档中所写的带有指针的参数类型转换成C#中能用的类型,具体转换关系如下:ng
const char* -----> string
int* -------> ref int
const void* ------> IntPtr
(2)编程过程中,根据实现功能的不同,需要调用的接口有所不同,用法也有所不同,具体流程查看文档即可。下面具体说明一下各函数使用的要点(具体参数用法查看文档):
①MSP(