我们使用的场景是一边录音一边进行语音识别:因为如果使用SDK传回的语音数据结果,网络不好的话,SDK会退出;我们的诉求是语音录制一定可以,转文字可以失败

1. 使用AudioRecord进行录音,将数据写入文件(录音不停止)

2. 在开始录音后50毫秒,将录音文件以流的方式持续传给SDK进行语音识别转为文字。

也就是说一边产生录音文件一边进行识别

但在部分手机上会报3001的错误。查看文档发现3001是录音机打开失败。

语音识别参数如下:

Map params = new LinkedHashMap<>();

//是否需要语音音量数据回调

params.put(SpeechConstant.ACCEPT_AUDIO_VOLUME, false);

//本地语义

params.put(SpeechConstant.NLU, "enable");

// 长语音

params.put(SpeechConstant.VAD_ENDPOINT_TIMEOUT, 0);

//语音活动检测, 根据静音时长自动断句

params.put(SpeechConstant.VAD, SpeechConstant.VAD_DNN);

// 中文输入法模型,有逗号

params.put(SpeechConstant.PID, 1537);

//目前必须开启此回掉才能保存音频

params.put(SpeechConstant.ACCEPT_AUDIO_DATA, false);

//使用录音文件作为输入源,参考百度语音识别demo

params.put(SpeechConstant.IN_FILE, "#me.chunyu.chunyudoctorclient.home.record.InFileStream.create16kStream()");

SDK版本:bdasr_V3_20191210_81acdf5

疑问是:

1. 只使用了文件进行识别,为啥SDK还是会使用录音机?

2. 是不是说就算开发者使用的是语音文件进行识别,SDK也一定会使用录音机?

3. 如果是,那为什么只是偶尔会有这个提示?录音机是一直在被我自己写的功能占用,SDK肯定得不到录音的机会,如果这样的话,为什么3001的错误不是必现的?

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐