参考:http://dev.voicecloud.cn/bbs/for ... page%3D1&page=1
二十一、nRet返回值 10111 10122
答:10111 是没有初始化,10112 是无句柄,根据上述错误来看,您应该是没有初始化。检查一下,是不是init的时候失败了?
二十二、QISRInit(configs)返回10122 MSP_ERROR_LOAD_MODULE
答:请检查是不是你的speex.dll没有复制到工作目录?
二十三、MSC.LIB 在vs2008中运行结果说是丢失
答:程序在运行时会先检测当前文件夹有没有需要的dll文件,如果没有就会按照PATH环境变量逐一搜索(windows文件夹就是其中之一)。通常我们运行程序时,都要求exe和dll在同一文件夹下,但是VS在调试时,并不一定是在程序所在文件夹运行程序,这与工程配置有关。
以VS的默认配置为例,新建一个工程test,会产生一个test文件夹,其下有Debug和另一个test文件夹,在下面的这个test文件夹中还有一个Debug。
在下面的这个test文件夹中一般保存源码,同时VS调试时也会在这个文件夹进行。
在下面的这个Debug文件夹中一般保存编译生成的中间件和链接之后的可执行程序。
上面的Debug文件夹通常保存链接之后产生的可执行程序。
通常我们自己运行程序时,要进入Debug文件夹,这时要求对应的dll文件在同一个文件夹中;但是VS调试时,是在下面的test文件夹中运行,这时就要求对应的dll文件在下面的test文件夹中。
二十四、边录边识别时反复报10701错误
答:1. 连续两次识别返回10701的问题
为了解决服务器端无效的会话实例存在时间过长的问题,考虑到合理有效的利用服务器端资源,因此在一次听写结果全部返回之后,服务器端释放了会话实例。如果用户需要进行再次听写,需要先调用QISRSessionEnd先结束当前会话,然后再次调用QISRSessionBegin重新开始一路会话。所以说,现在的系统不支持一次会话中进行多次听写。所以您想到的解决10701的方法是完全正确的。
2. 关于VAD的问题
关闭客户端VAD功能后,对语音前后端点的检测或降噪功能都将在服务器端进行,所以,您看到的能够检测到后端点的行为是由服务器端完成的,目前服务器端的VAD打开或关闭功能用户无法控制。至于为什么要在客户端和服务器端同时使用VAD,那是因为相对于服务器的VAD功能,本地VAD端点检测更灵敏,因为没有了时间相对较长的网络交互。
参考:http://club.voicecloud.cn/forum. ... &extra=page%3D1
二十五、讯飞语音能否模拟一个人的声音
答:讯飞有声纹学习的技术,但是目前还没有开放到语音云中。
二十六、如何在C#、JAVA、Delphi、易语言等语言中使用SDK
答:目前我们针对windows开放的接口只有C++,但是我们提供的dll动态库是通用的,在各种五花八门的windows平台语言中,只要能够调用dll就可以使用,具体如何改造接口,请参考您使用的语言规范。
二十七、为什么不直接开放通信协议,这样各个平台都可以使用语音云服务了
答:在协议完善之前,随时可能都会根据应用状况调整,因此短期内是不会开放的。
二十八、android问题:录制语音时候,点击完成按钮旁边的取消按钮,那个函数响应这个事件,我想在点击了取消按钮后跳转到其他activity
答:RecognizerDialog有个setOnDissmissListener接口可以实现,这个也是Android系统本身的接口
二十九、android的api:
setContent(byte[] data,String params,String contentID);
是在这个data直接写入ABNF形式的语法.还是就是支持以”,”分割的命令词组?
答:直接填入需要识别的命令词列表即可,具体可以参考文档。
三十、语音识别目前除了中文还能识别别的语言吗,比如方言,外语等
答:目前的语音识别支持略带地方口音的中文普通话和中国人说的简单英语,英语等其他外语的识别也在研发中,估计到明年中才能推出。
三十一、tts目前除了中文和英文,还支持合成其它语言吗,如日语,法语等
答:合成的多语种支持已经在进行,但是投入到应用中,还要等待一段时间。
三十二、进行语音识别时,在不同的地方访问的服务器是否不同?如果不同的话在北京,上海,厦门,广州等地运行的程序分别访问的是哪个服务器,地址是多少?
答:我们会根据您的网络,自动判断该连接到哪个服务器,不需要您来选择
三十二、语音识别QISRAudioWrite,常常会返回10108,无效句柄。这是什么原因呢?
答:可能原因:sessionbegin成功后,后续的audiowrite超过了服务器的超时值,该会话已经被服务器释放。
三十三、语音合成接口 与 控件的区别?
答:在智能手机平台,控件是对QTTS,QISR系列接口的进一步封装,用户使用起来更方便些。windows、linux平台保留QTTS,QISR系列接口。
三十三、语音合成中,由于特殊原因,不能将文本分批发送,怎样控制合成的停顿?
答:中文顿号“、”,想停时间长一点,可以多加几个。
三十四、我在天空软件下载“讯飞语音合成WEB版 2.40”为什么我的金山会提示是病毒?
答:这个软件是几年前某网友模仿我们官网的网站,调用官网演示的接口制作的软件,并不是语音云的产品,我们无法保证其安全性。
三十五、我用SDK里面的DEMO,存WAV后,播放,不管存什么文字,最前面的量个字比如“我的”,总是听不到呢?
答:您的现象有可能是windows7系统的问题,有时播放声音时会有一个声音缓出的现象,连QQ的滴滴声听着都会很诡异。
三十六、“命令词识别”和文档中提到的,使用grammer参数时的“自定义命令词识别”,有什么区别?如果可以通过grammer为不为null来判断,为什么engine参数里还有个“asr”识别引擎。
答:命令词识别就是指定一个命令词列表,识别的结果只能从这个列表中选取。后台就是通过sub参数来判断使用什么引擎的,而grammer参数并不能确定使用的引擎。
三十七、android、ios版本的SDK中只有控件接口,怎样获得底层API接口?
答:请发邮件到[email protected],说明你的具体需求,我们经过更严格的审核之后,才会给与提供。
三十八、我申请的app应用目前是等待状态,大概多长时间可以反馈申请结果?
答:应用审核是人工的,工作日的工作时间通常会在10分钟之内给出结果,如果遇到周末或者半夜申请应用,最迟也会在24小时之内给出结果。
反馈结果会发送到您注册的邮箱中去,不过有些邮箱服务商的防火墙比较严格,会收不到我们发出的邮件(比如Gmail等),可以登录dev.voicecloud.cn查看您的应用审核状态。
三十九、错误10118 MSP_ERROR_NO_DATA 没有数据的原因是什么?
答:1.输入语音时没有向接口中写入音频;
2.输入的语音声音太小,被认为是静音(也有可能是误操作导致);
3.获取文本结果时,已经获取完所有的结果之后,仍然在请求结果;
4.我们的接口要求输入的音频格式为16bit16kHz单声道或者16bit8kHz单声道,传入的音频格式与传入的参数不匹配也可能返回10118;
5.语音合成时输入文本为空;
6.已经获取完结果音频之后仍然在请求结果。
四十、语音聊天机器人怎样制作?
答:如您想做个可自动对话的机器人,需要用到语音识别及语音合成技术。大概步骤如下:
1. 调用本地系统API接口,录制一段PCM音频发送至语音云服务器上进行语音识别;
2. 获取语音云服务器识别返回的结果(文字);
3. 根据返回的结果匹配需要应答的文字内容;
4. 把需要应答的文字内容发送至语音云服务器进行语音合成;
5. 获取语音合成的结果(音频数据),进行播放。
四十一、申请语音SDK时必须填写应用名称,是不是申请了SDK一定要开发出软件?如果申请了但未开发出软件,怎么处理?如果开发了应用软件,是否允许在软件中嵌入广告?
答:不是的,填写的仅仅是你期望实现的应用和描述,我们欢迎大家都来使用语音SDK,如果开发出了软件,可以与我们沟通,一起来完善和推广。我们不限制在应用软件中嵌入广告的行为的。
四十二、linux有不同的平台,下载下来的SDK怎么可以在这些不同的平台中使用呢,不是需要针对不同的平台架构编译SDK的吗?
答:我们提供的是PC x86的SDK,如果您需要ARM等平台的SDK,需要提供你的交叉编译器,请发邮件到[email protected]详细说明您的需求。
四十三、语音识别是不是关键词识别,而语音转写则是大词汇连续语音识别?不知道他们在服务器端有多大区别,什么样的应该应该使用关键词识别,什么样的应该使用语音转写。谢谢!
答:如果你需要结果必须是指定的,不能随便什么结果都可以,就用关键字识别,比如如果做象棋游戏,要求用户只能说棋谱,那么关键字识别就很合适;如果允许用户说的很灵活,那么就用语音转写,或者自己设计语法,比如米聊、短信等
四十四、vad_timeout=10000,vad_speech_tail=2000 默认参数 ,无论vad_enable开关,有的音频能识别出全部,有的就只能识别前面一部分。 如果随意更改vad_timeout和vad_speech_tail 就会出现没有识别结果的情况……
答:以上几个参数都是客户端的端点检测,我们除了客户端还在引擎上有端点检测,如果你关闭了客户端的端点检测或者把时间加长,只是在客户端处理时允许你把音频发送到服务端上,但是服务端的引擎在处理时,如果超过了端点检测时间,就不再接收音频数据,即使客户端还在发,引擎的尾部端点检测时间是1800ms。eos参数是配置引擎的尾部端点检测参数,例如eos=3000
四十五、讯飞现在有MTK上的sdk包吗?识别和合成?
答:有,不过不是免费公开的,具体情况请将需求发送邮件到[email protected]进行商务合作。
四十六、语义识别是怎么回事?
答:语义识别即自然语言理解,简单点就是通过你无规则的说话就能知道你想干什么。
转写做的是将你说的话变成文字,而语义识别会更进一步,对你说的话进行分析,比如你说打电话给***,即能帮你自动执行相应操作,即像siri那样实现人机对话。
四十七、请问有没有提供WP7的SDK
答:WP7的SDK在我们的计划中,目前还没有SDK。
四十八、请问每个应用,上传语法文件的数量有限制没有。因为我应用中用到了命令识别,每个用户都会上传一个属于自己设备ID的语法文件。谢谢。
答:你好,没有限制应用上传的语法文件数目。
四十九、是否可以将linux下的软件直接交叉编译,然后移植到别的平台运行?
答:我们的提供的SDK都是针对指定的平台,需要其他linux平台的SDK,请发邮件到[email protected],会有专人向您索要交叉编译器,为您编译专用的SDK。
五十、MSC的全称是什么?msc.lib什么作用?
答:MSC的全称是Mobile Speech Client,意思是语音云的客户端代理库。在windows环境,msc.lib的作用是作为msc.dll的隐式链接的引入库,如果您使用LoadLibrary函数显式加载msc.dll,则msc.lib就没有用处了。
msc.dll应该和您的应用程序在同一个目录,需要您手动拷贝。
五十一、在连WiFi的时候就不行,报错10114,直接使用移动网络就可以。
答:可能是你的网络防火墙对交互信息进行了过滤,请尝试关闭防火墙。
五十二、我在使用语音识别setEngine()的时候,经过多次测试,第一个参数似乎五种模式( ”sms”:普通文本转写 “poi”:地名搜索 ”vsearch”:热词搜索 ”video”:视频音乐搜索 ”asr”:命令词识别)并没有太大的区别。不知道这几种模式的具体用法是怎样的?
答:这要看你具体的产品了,sms对应的是比较通用、随意的说话场景,比如输入法,其他的限定在比较专业范围,针对不同应用定制,比如需要导航或音乐搜索等。
五十三、在进行语音合成,当合成“1252009101”,时本来是想当字符串合成的,但返回的语音却是当成数字合成的。怎样处理才能当成字符串
答:可以在每个数字之间加一个空格来分割。
五十四、使用了在线演示的程序,输入一段使用SSML,并选择了SSML文本,结果合成结果是将内容当成普通文本来朗读了。不知道语音云是否能支持SSML呢?有没有人曾经试着用这个成功的?
答:语音云是可以支持SSML文本合成的,要设置读入的文本类型。
五十五、自定义关键词识别时,上传的关键词数量限制是多少?
答:关键词识别的词汇数量理论上可以多达几十万个,但建议不要超过5000个,否则识别率会有明显的降低。
五十六、amr音频识别效果会不会比pcm更差?
答:对识别率的影响取决于你amr格式的音频所用压缩等级,根据我们的测试,amr系列压缩算法在压缩等级较低时(小于3)识别率会降低一些。较高的压缩率对识别效果影响非常小。推荐压缩等级7或6。
五十七、pcm音频和amr音频 用哪一种音频识别率会相对较高?
答:识别率方面AMR压缩会有一定的降低,但是讯飞语音识别的语音模型在训练的时候已经考虑了这一方面,在训练数据中有大量的AMR语料,因此识别率降低不是那么明显。建议使用AMR-WB中音质稍好的模式即可。
五十八、请问下语音端点检测,我使用的是语音识别模式,语音开始好理解,但是语音段的结束是怎么计算的呢?如果说中间某两个字之间有一小段静音怎么办,是否讯飞对于语音后静音有规定?怎么设置呢?
答:端点检测发现一段时间没有有效语音数据(空白或低噪音),则自动终止语音的接收,进入下一个流程。
端点检测在客户端和服务端都有,《可设置的参数列表》中提到的都是客户端的配置,服务端尾端点默认时间为1.8秒,控制参数为eos。
五十九、讯飞必须要求语音前后有足够的静音空余吗?
答:无论是语音识别还是语音听写,有效音频前面的部分背景音对识别结果很有影响的。
人工的把背景音频给去除了,也许人耳没感觉,但是计算机不行,识别效果反而不好。
六十、讯飞提供的demo中是通过先上传关键字文件,然后QISRSessionBegin(exID, param, &ret) 来实现的 但是现在我想知道是否可以直接把exID设置为关键字比如:”阿里山,科大,讯飞“,这样做后面写入音频的时候我发现出现了没有语法的错误,是不是哪个地方搞错了?
答:exID不是关键字列表,从名字上也能看出来,是一个ID,这个ID是要到数据库中查找的,你随便写一些数据,当然在数据库中查不到了,请按照我们给出的流程来开发。
在uploaddata的时候,数据上传到服务器上作为一个文件保存下来,同时在数据库中生成对应的ID,当你在sessionbegin里调用这个ID的时候,服务端就会知道你要用哪一个文件了。
六十一、关键字是否是一个一个匹配的,这样的话运算量是不是与关键字数量成正比?
答:语法增大会有一定的影响,但不是线性的,影响不明显。
六十二、我只识别一个字,但是只有可能不到200ms,然后我发送200ms数据,返回没有数据的错误,如果我在两边加上足够的静音就可以识别了,这个到底是怎么回事?
答:和端点检测的灵敏度有关系,需要参考文档做一些调整,调整前端点长度。
六十三、上传的语法是UTF8格式的,那返回的识别结果是什么格式的啊?
答:返回识别结果的格式,和上传的语法格式两个没关系。默认都是utf8的,可以通过sessionbegin中rst参数来指定,具体请参考文档。
六十四、调用 QISRGetResult返回的是const char*,为什么对这个返回值做什么操作都出错?
比如demo里的一段const char* result = QISRGetResult(sess_id, &rslt_status, 0, &ret);
我拿到result之后,为什么连基本的strlen(result)都会报错?
答:如果result==NULL一定会报错的,你要先确认result!=NULL才能对其进行普通的字符串操作,具体可以参考iatdemo的处理方式。
还有一点要注意,GetResult返回的字符串内存在SessionEnd之后将被释放,因此请及时将GetResult返回的结果拷贝到应用自己申请的内存空间。
六十五、请问服务器可以保存多个语法文件吗?我每次上传都能得到一个ID,如果我下次重新上传了语法可以再使用以前的ID吗?还是以前的语法被删除了?
答:每次上传的语法文件都会永久保留在服务器上。现在语音识别的应用和语法文件不多,而且语法文件都很小,服务器空间还是有很多剩余的。删除语法的功能,目前还不支持。现在关键词识别的应用和需求较少,语法文件也随之少,我们目前开发的重点放在优化语音听写技术的体验上。
六十六、我的输入都是字母和数字的组合,比如AAA111,BBB222这样的,用户读的时候也是按字母和数字来读
有什么好的办法能识别出来吗?我用SMS的方式效果很差。请教一下有什么好的办法?
命令词是一个可能的办法,但组合可能有几千种,需要每次识别前都上传吗?
答:目前对于单字母/数字的识别还好,但是字母/数字的连续组合,识别的准确度无法保证。可以尝试通过控制说话节奏来提升准确率,每个字母/数字独立发音,略作停顿。
六十七、要怎么配置参数才能识别英文啊?
答:现在支持简单的中英文混合识别,语料仅限于日常短信可能遇到的一些英文单词。今年内会开放面向中国人的连续英语识别,至于面向外国人的native英文语音识别要看具体的市场需求来定。
六十八、想申请个开发用的appid行么?怎么感觉申请就要发布的样子?但是工程师学习阶段怎么办?
答:其实只要认真的填写就会通过,并不需要真正发布,只要不乱写,就是打乱字。
六十九、请问搜索地名如何配置参数,不知道古怪的地名识别率如何
答:修改SessionBegin参数的ent为"ent=poi16k"即可。
目前包含全国1000多W地名,效果应该还好。
七十、从iatdemo的例子中,我们可以了解到读取一个已经保存好的WAV文件到buffer然后发送给语音云的过程。
但是在实时语音输入过程中,是用PCM采集,WAV比PCM多了一些头部信息。
我想如果直接把PCM采集的数据发往语音云,语音与能够识别吗?
答:可以,但是要符合支持的比特率。
七十一、ABNF的语法如何上传?
答:QISRSessionBegin支持直接写入abnf语法文件,param中加入参数 grammartpe=abnf(简写grt=abnf)
abnf应该直接把内容写在grammar参数中,而不是文件路径。
七十二、QISRAudioWrite返回ep_status= -1是什么意思?
答:ep_status既是传入参数,也是传出参数,如果没有达到参数赋值的要求,那么就不会改动原有的值。
七十三、我给出一段语音,讯飞就应该判断出来这句话是什么啊?怎么还要我自己提供关键字,现实生活中怎么可能预先设定用户的关键字。我还以为讯飞提供非特定人大词汇量连续语音识别。
答:关键字识别是语音识别的一种,对于整句识别,我们称为语音转写或短信转写,可能原来误会了您的意思。使用我们的转写(sms)是可以做到非特定大词汇量连续语音识别的,但是如果您想进行关键字的搜索,即将结果限定在一定范围内,就需要提供关键字列表,请参考我们提供的demo和开发文档,里面有详细说明。
七十四、我生成了speex编码格式的音频文件,应该如何设置参数,才可以识别出来呢。
现在用的参数是 sub=iat,ssm=1,auf=audio/L16;rate=16000,aue=speex,ent=sms16k,rst=plain,识别不出来。
答:aue=speex表示你发来的音频需要我们经过speex编码之后上传到服务器,由服务器再进行speex解码再分析,如果你已经编码过,那么实际上音频被编码了两次,而只解码一次,所以识别不出来。
如果你的音频不需要再进行编码,但是需要解码,请使用aue=speex;-1