灵云人工智能论坛

 找回密码
 立即注册
搜索
查看: 178|回复: 0

灵云VPR c#调用问题集锦 [复制链接]

Rank: 2

发表于 2018-4-19 14:40:39 |显示全部楼层
这段时间在调用灵云VPR能力,但是我是一名c#工程师,灵云提供的VPR能力只有c++最适合我开发,不得不适用c#调用c++,以下是我遇到的一些问题,有些已解决:

一、调用灵云VPR云端能力问题:
1、问题:调用注册VprEnroll时 按照开发文档传入相应参数,一直报错吗为20,定位无果
      解决方法:在封装传入音频数据时,最大的原因是structure的顺序一定要与文档保持一致,我是int 与byte[]数据顺序错了,导致c++首先读取int的地址,拿到的数据本该是数组起始地址,所以报错码为20,这个报错码简直就是坑,这个提示永远没法定位

2、问题:调用确认声纹者VprIdentify时,报错11,链接服务器失败:
     官网c++demo也会报这个错误,但是灵云工程师那边没有问题,这个可能是他们部署网络问题,目前未解决

3、问题:调用VprEnroll注册后,返回的结果,使用Marshal.StructureToPtr解析 意志报错,内存被破坏或者正在使用。。。
      解决:结果使用的structure不能使用官网的structure:{string pszUserId;IntPtr pModelData;uint uiModelDataLen}
               Marshal.PtrToStructure(IntPtr, structure, true);
               直接使用string userid=Marshal.PtrToStringAnsi(pEnrollResult);
4、问题:调用VprVerify 获取的答案,通3一样,
              结果直接ref int sorce就可以了
二、调用灵云VPR本地能力问题:
  1、上面问题一依然存在,解决方法同上
  2、问题:在初始化seesion时报错 902,初始化本地引擎失败,
       解决方法:首先原因是,灵云本身在封装 本地VPR资源包时,使用的相对路劲,所以解决方法是:
string path = @"../vprdata/";
            m_pszInitConfig =
                string.Format("dataPath={0},initCapKeys=vpr.{1}.recog", path,version);

vprdata为你的资源包文件夹名,并且放在bin文件夹同级位置,貌似只有这样才行,绝对路劲是不行的,也只能做成../vprdata,不能多一层也不能少,这个问题灵云本省问题

  3、问题:调用确认声纹者VprIdentify时,报错1
       目前还在解决中,完全搞不懂什么原因,VprIdentify与VprVerify 文档上的传入参数一模一样,搞不懂这是什么问题,可能还是需要向上面第二步猜。




踩过的脚印
回复

举报

验证问答 换一个 验证码 换一个

Archiver|任务|灵云 ( 京ICP证030095号 )

GMT+8, 2018-5-27 11:25 , Processed in 0.076903 second(s), 19 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部