【置顶】语音识别Android版本问题及答案汇总贴
0半君0 发布于2016-01 浏览:130084 回复:63
0
收藏

如何使用离线识别,怎么申请?

离线识别无需申请,所有开发者都可以免费使用。要使用离在线功能(正式授权),请确保

  1. 开放平台中已经绑定了包名
  2. 程序的AndroidManifest.xml(如果是ios请参考文档查看设置方式)配置APP_ID
  3. 不要设置临时授权路径

注意事项:

  1. 离在线是纯在线的一个补充,至少联网一次才能真正使用离线
  2. 离线的参数配置比较复杂,务必参考文档和demo一步一步对比

临时离线授权文件在哪里下载?

临时授权的下载地址:http://yuyin.baidu.com/applicense/downloadLicense

对于最新版本的Android语音识别SDK,可以直接使用正式授权。参考“如何使用离线识别,怎么申请?”

Android Studio如何集成语音SDK?

截止目前(2016.8)语音SDK上不支持通过gradle命令来直接引入,后续将会支持。对于Android Studio请通过拷贝jar和so 加配置命令的方式来引入语音SDK

Android版本无法获取录音机权限

  • 如果targetSdkVersion设置为>=23的值,需要程序中动态获取录音权限如。
requestPermissions(new String[]{                Manifest.permission.RECORD_AUDIO        }, YOUR_REQUEST_CODE); // requestPermissions是Activity的方法
  • 如果targetSdkVersion<23,仍有无法录音问题,则可能是AndroidManifest.xml中未声明"android.permission.RECORD_AUDIO"导致或因为安全软件非正常方式限制录音导致。

Android SDK 2.1版本如何使用离线

2.1版本支持离线命令词识别,但不支持离线撰写(如果确实有撰写需求,暂请使用2.0版本)

2.1版本集成离线(命令词)识别的步骤:

  • 使用语法编辑器编辑语法,http://yuyin.baidu.com/asr#m5,编辑并保存得到baiduspeechgrammar.bsg语法文件(文件名可以随意更改)
  • 将baiduspeechgrammar.bsg文件放置到assets目录
  • 识别参数中增加代码 intent.putExtra("grammar", "assets:///baiduspeechgrammar.bsg")
  • 集成完毕。

需要注意的是离线识别需要联网获取授权,参见“如何使用离线识别,怎么申请?”


收藏
点赞
0
个赞
共63条回复 最后由回复于2023-05
#24厉天回复于2016-01

问题:

离在线融合sdk中(Android端),对于slot数据, 在线文档上没有找到详细的说明介绍,

1)对于name、song、artist。。。。 这些槽数据中,是否有数量上限的限制

2)对于各个槽中的每一项数据,是否有长度限制?

3)对于各个槽中的中每一项数据,有哪些合法性限制?

4)这些数据文法的编译:

  a) 是每次识别时都会编译,还是首次编译之后后续不再编译;

  b) 是否每次识别都需要携带这些槽数据;

  c) 可不可以根据识别场景单独传入某个槽的数据,还是5个离线槽都要传递数据

   

答案:

1.建议不超过500个。

2.最好不要超过10个汉字的长度。

3.对于槽中的数据不要出现 空格,特殊字符,英文(英文识别效果较差)等以免影响识别效果。

4.ab.由于这些数据的编译时间很短,基本可以忽略消耗时间,所以每次识别前编译对性能消耗不大,建议每次识别前编译一次。c.可以根据自己识别场景在识别之前传入需要的槽数据。

0
#23liu10028回复于2016-01

问题

Android在线识别errorCode = 262144是什么原因?


答案:

错误码40000(16进制),联网错误.请检查:

1.本机网络环境是否正常,

2.使用公用网络的话请检查网络是否屏蔽了百度语音的服务器地址和端口(服务器地址vop.baidu.com 端口80)


0
#22liu10028回复于2016-01

问题:

在项目中同时使用其他百度SDK,引起编译错误。

Unable to execute dex: Multiple dex files define Lcom/baidu/android/common/logging/Configuration;

[2015-10-22 11:02:57 - VoiceRecognitionDemo] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/baidu/android/common/logging/Configuration;


答案:

与其他百度SDK冲突一般是由于使用了相同的基础库galaxy.jar,请检查是否重复导入了该jar包,在项目当中仅保留一份即可


0
#21liu10028回复于2016-01

问题:

百度语音支持音频文件识别吗,怎么使用?


答案:

在Android SDK1.6 版本中提供了feedAudioBuffer(byte[] buffer,int offset,int size) 接口支持音频数据传入识别,具体查看SDK demo参考示例。

在Android SDK2.0 版本中可以设置文件路径,对文件进行识别 intent.putExtra(“infile”, "sdcard/file.pcm")

请注意音频文件格式必须符合:原始 PCM 的音频参数必须符合 8k/16k 采样率、16bit 位深、单声道。识别的音频长度最大为60S,采样率的参数设置注意与你的音频参数一致。


0
#20liu10028回复于2016-01

问题:

百度在线识别有识别次数限制吗?


答案

语音识别服务开通之后即可获得50000次/日的在线识别调用额度,如果无法满足需求可以申请提高配额,审核通过后可以无限制使用,具体操作请参考 http://yuyin.baidu.com/docs/asr/82


0
#19liu10028回复于2016-01

问题:

使用Android SDK2.0 离在线融合SDK时出错

SpeechRecognizer(29677):bind to recognition service failed


答案:

使用离在线融合SDK时,需要注册百度的语音识别服务,请在AndroidManifest.xml 中添加


0
#18liu10028回复于2016-01

问题:

语音识别垂类是什么意思?


答案; 

语音识别垂类就是特指某个领域的意思,开发者可以根据用户使用场景设定特定领域使得识别结果更准确。比如垂直领域设定为”音乐“,则在语音识别时会优先识别为音乐相关的歌曲名歌手名或者歌词。


0
#17liu10028回复于2016-01

问题: 

如何在语言识别时获取音频文件?


答案:

使用Android SDK1.6版本时:

当VoiceClientStatusChangeListener.onClientStatusChange(int status, Object obj) 的status是VoiceRecognitionClient.CLIENT_STATUS_AUDIO_DATA时,obj为byte[]音频数据,直接保存成文件即可。

使用Android SDK2.0离在线融合版本时:

intent.putExtra(Constant.EXTRA_OUTFILE, "sdcard/outfile.pcm")  当次识别的录音自动保存到文件下面。

以上相关接口的使用在各个SDK demo 里面均有使用示例,请参考使用。


0
#16liu10028回复于2016-01

问题:

如何才能提高语音识别的准确率?


答案:

1.自定义语音识别设置:打开百度开放云平台,在目前创建的应用下进行自定义语音识别设置。上传识别关键词文本,保存并生效。

2.设置对应的语音识别垂类:在代码中填写识别的垂类领域,识别结果将优先指向已设置的垂类,可以使得识别结果更准确


0
#15liu10028回复于2016-01

问题

百度语音识别能完全离线吗?android语音识别可以设置成离线模式吗,有网络的时候也用离线模式可以吗?


答案:

离线只能作为在线识别补充,不能完全离线,网络不佳或没有网络(离线需要定期联网更新授权)时自动切换使用,肯定离线更快,而且不需要流量


0
#14liu10028回复于2016-01

问题

java.lang.NoClassDefFoundError: com.baidu.voicerecognition.android.VoiceRecognitionConfig


答案:

VoiceRecognition.jar包的导入有问题,请尝试以下解决方案:

将VoiceRecognition.jar删除重新导入,Java Build Path->Libraries 加入VoiceRecognition.jar然后在order and export 中勾选VoiceRecognition.jar相关依赖项(当前工程的VoiceRecognition.jar 在 android private libraries 下面)然后Clean下当前工程。


0
#13liu10028回复于2016-01

问题:

百度语音能否接收蓝牙设备的语音输入进行处理?


答案:

百度语音SDK内部不带蓝牙录音,您可以自行使用蓝牙录音,将音频流传入SDK进行识别。


0
#12liu10028回复于2016-01

问题:

语音识别SDK支持的音频格式、采样率有哪些?


答案:

支持的压缩格式有:pcm、wav、opus、speex、amr、x-flac。原始 PCM 的录音参数必须符合 8k/16k 采样率、16bit 位深、单声道


0
#11liu10028回复于2016-01

问题:

百度语音识别时怎么加入标点符号?


答案

现在语音识别支持两种vad模式的识别,搜索模式(search)和输入模式(input),搜索模式下适合短句识别默认不带标点,输入模式下适合长语音的识别并且带标点符号,请根据实际场景需要选择合适的模式。


0
#10liu10028回复于2016-01

问题:

339972错误码,一般的出错原因和解决方案?

 

答案

错误码53004(16进制),可能原因:

1.key 填写有问题

2.没有申请识别服务

3.本机网络问题


0
#9liu10028回复于2016-01

问题:

196609错误码,一般的出错原因和解决方案?

 

答案

错误码为30001(16进制)录音设备不可用,请尝试以下解决方案:

1.重启手机。

2.查看是否使用虚拟机,建议真机调试,虚拟机很多不能识别到麦克风设备

3.查看你的工程是否添加了录音权限

4.查看是否其他应用占用了录音权限


0
#8liu10028回复于2016-01

问题

Android在线1.6在线识别 ,语义解析为空,不返回语义解析结果。


答案

1、通过VoiceRecognitionConfig.setResourceType(3) 3指的资源类型为:语音识别+语义解析+wise 

2、输入法模式下不支持语义解析。


0
#7liu10028回复于2016-01

问题:

Android离在线融合SDK,android语音识别可以设置成离线模式吗?有网络的时候也用离线模式可以吗?


答案:

离线只能作为在线识别补充,不能完全离线,网络不佳或没有网络(离线需要定期联网更新授权)时自动切换使用,肯定离线更快,而且不需要流量


0
#6liu10028回复于2016-01

问题:

Android 离在线识别,报错EVEN_ERROR:#5,other Clienterror,reason:#7051,StartRecognizing error.(connot switch to online:network unavailable.)


答案:

错误7051是由于没有指定离线资源包的路径。需要从官网下载离线资源包并在程序中设置指定离线资源包的路径。


0
#5liu10028回复于2016-01

问题:

Android离线识别要同时使用离线指令里面的两个垂直领域怎么设置?


答案:

离线版本不能加在多个垂类,如果想离线使用多个垂直领域建议使用在线识别。


0
TOP
切换版块