集成科大讯飞语音听写功能

一、准备工作
1.创建应用,并获取appId;
2.下载科大讯飞语音听写功能的jar包和so包(http://www.xfyun.cn/sdk/dispatcher);
3.将jar包添加到libs中(记得libs的jar包右键Add As Library
这里写图片描述
4.将so包添加到jniLibs中
这里写图片描述

好了,准备工作已经完成了。。。。接下来开始集成

二、开始集成
1.在Manifests文件中添加权限

2.初始化SDK
这里写图片描述

3.在具体实现只能语音功能中,科大讯飞提供了两种方式。
(1)自定义语音输入UI界面
(2)使用科大讯飞的语音输入的UI界面(次方式比较操蛋,dialog上有科大讯飞的广告,而且不能去掉)
下面先介绍自定义UI的方式实现语音听写:

(1)初始化监听器
这里写图片描述
(2)创建SpeechRecognizer对象
这里写图片描述
(3)创建听写监听器


/**
 * 听写监听器。
 */
private RecognizerListener recognizerListener = new RecognizerListener() {
    @Override
    public void onVolumeChanged(int num, byte[] bytes) {
       //根据音量的大小改变dialog话筒的变化   num为音量的大小
        if (num>0 && num <=5){
            dialogManager.updateVoiceLevel(num);
        }else{
            num = 1;
            dialogManager.updateVoiceLevel(num);
        }
    }
    @Override
    public void onBeginOfSpeech() {
        //开始说话
        dialogManager.showRecordingDialog();
    }

    @Override
    public void onEndOfSpeech() {
        //结束说话
        dialogManager.dimissDialog();
    }

    @Override
    public void onResult(RecognizerResult recognizerResult, boolean isLast) {
        if (!recognizerResult.getResultString().isEmpty()) {
            UniSoundConfig.printResult(recognizerResult, mIatResults, editText);
        }

        if (isLast) {
            // 最后的结果
        }
    }

    @Override
    public void onError(SpeechError speechError) {
        //识别错误
        if (speechError.getErrorCode() == 14002) {
            dialogManager.tooShort("请确认是否已开通翻译功能");
        } else if (speechError.getErrorCode() == 10081) {
            dialogManager.tooShort("您没有说话");
        }
    }

    @Override
    public void onEvent(int i, int i1, int i2, Bundle bundle) {

    }
};

(4)设置相关属性
这里写图片描述
(5)解析并打印语音输入
这里写图片描述

如果直接使用讯飞提供听写UI,则不需要创建SpeechRecognizer对象,而是创建RecognizerDialog对象,并且听写监听器也得用RecognizerDialogListener监听器

(1)创建RecognizerDialog对象

 mRecognizerDialog = new RecognizerDialog(context, mInitListener);

(2)创建RecognizerDialogListener监听器

private RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() {

    @Override
    public void onResult(RecognizerResult results, boolean isLast) {
        // TODO Auto-generated method stub
        if (!results.getResultString().isEmpty()) {
            UniSoundConfig.printResult(results, mIatResults, editText);
        }

        if (isLast) {
            // 最后的结果
        }
    }

    @Override
    public void onError(SpeechError error) {
        // TODO Auto-generated method stub
        if (error.getErrorCode() == 14002) {
            Toast.makeText(context, error.getPlainDescription(true)
                    + "\n请确认是否已开通翻译功能", Toast.LENGTH_SHORT);
        } else {
            Toast.makeText(context, error.getPlainDescription(true),
                    Toast.LENGTH_SHORT);
        }
    }
};

以上就是集成科大讯飞语音听写的两种方式

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值