讯飞语音,识别真的很准确。
讯飞语音转写,实时的贵,不实时的慢。。。
今天尝试了用讯飞听写通过流的方式实现实时转写。
- 主要思路是这样。首先确认pcm文件的保存路径。
- 然后创建一个线程不断读写pcm内的内容变化。
- 每次读取1024*1024字节调用
mIat.writeAudio(byte[] var1, int var2, int var3)方法,等待回调结果。
- 记录每次的回调结果,拼接字符串。
部分代码如下,下面代码是完整pcm文件的转写的代码。准确率和讯飞网页的识别率相差无几。
实现了之后发现。讯飞听写接口认证后才20000/天,没有认证500/天。可能讯飞也知道这个漏洞才加的限制吧
public static void startRecognizer(String path)
{
audioDataList=null;
resultText="";
mIatResults.clear();
// 设置参数
setParam();
// 也可以像以下这样直接设置音频文件路径识别(要求设置文件在sdcard上的全路径):
/* mIat.setParameter(SpeechConstant.AUDIO_SOURCE, "-2");
mIat.setParameter(SpeechConstant.ASR_SOURCE_PATH, path);
mIat.startListening(mRecognizerListener);
mIat.stopListening();*/
// 设置音频来源为外部文件
mIat.setParameter(SpeechConstant.AUDIO_SOURCE, "-1");
byte[] audioData = FileUtil.readAudioFile(new File(path));
if (null != audioData) {
LogUtil.logInfo("开始音频流识别");
// 一次(也可以分多次)写入音频文件数据,数据格式必须是采样率为8KHz或16KHz(本地识别只支持16K采样率,云端都支持),
// 位长16bit,单声道的wav或者pcm
// 写入8KHz采样的音频时,必须