找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 196|回复: 0

教你用 Android 做二次开发,识别率达到科大讯飞语音输入水平

[复制链接]
  • 打卡等级:已臻大成
  • 打卡总天数:411
发表于 2020-3-20 14:26 | 显示全部楼层 |阅读模式

马上注册,查看更多内容,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
153001hy3nk90v0n9r4x1z.jpg


153001lduddtjgeh4h3hjm.jpg

作者 | Pek_KuaiJia
责编 | 夕颜
头图 | CSDN 下载自视觉中国
出品 | CSDN(ID:CSDNnews)
随着如今用户需求的精致化和智能化,很多时候我们需要在App内集成语音输入模块,为用户提供语音输入的功能。而科大讯飞语音作为行业内翘楚,识别效果相对精确,且讯飞自带一套识别动画,适当快速搭建模块,废话不多说,先看下效果图。

153001poajohtrqorfbapb.jpg


153002uj6azhv161vv8th9.jpg


153002b39jrfnnrlpl3err.jpg

下面开始具体步调

153002tcgdym7gegm4yd5g.jpg

申请key
百度搜刮讯飞开放平台,注册账号并实名认证,然后在产物中找到语音听写,可以领取90天试用包,商用需付费。接着打开控制台,添加你需要利用讯飞SDK的应用,留意保存这里的APPID,这个就是之后需要设置到APP中。

153002s5q2jsqn29nqssmq.jpg


153002p879uv9nauu979g8.jpg


153002ql5ode443ffdros1.jpg

下载SDK
在官网中找到资料库,选择你刚才添加的应用,下载在线语音识别SDK

153002h44a7qtastkw4q46.jpg


153003s3o0f2ozkpda0bxy.jpg

将加压所得文件夹中libs下的Msc.jar文件复制到项目中的libs下
如果没有就新建一个,复制完成后,右击Msc.jar文件,选择add as library,这里背面获取语音识别效果需要剖析json,由于我利用的是gson,以是一并导入了;接着将下载下来的文件夹libs下两个文件夹复制到你项目目次的src/main/jniLibs,如果没有该文件夹就新建一个;最后在你项目app目次下新建assets文件夹,将下载下来的文件夹中assets中文件夹复制进去,至此,文件全部导入完成,放个团体项目文件结构图。

153003vbbbfqbq548qkiqt.jpg


153003dlmqtqqfo71ev8il.jpg

为语音听写添加权限
在mainfest.xml添加即可,留意Android6.0以上,读取麦克风和获取手机识别码权限需要动态申请。
1
2
3
4
5
6
7
8
9
10
11

153003szgeo13zl7zo30nx.jpg

设置APPID
在APP的Application的onCreate()设置如下代码,如果没有application,也可以在需要用到这个功能的Activity的onCreate()添加,留意“=”不能少
1public class MyApplication extends Application{
2
3    @Override
4    public void onCreate() {
5        super.onCreate();
6        //留意这里的“=”不能少
7        SpeechUtility.createUtility(getApplicationContext();, SpeechConstant.APPID + "=你的APPID");
8
9    }
10
11}

153003ndydidt8xez9xyxz.jpg

在启动语音识别模块添加代码
这里的result就是语音转换的效果字符串,可以通过iatDialog.setParameter()设置语言,隔断时间(即多长时间不语言时视为竣事)等,具体可参考官网文档。
1private void changeIntoText() {
2
3        // 初始化有交互动画的语音识别器
4        iatDialog = new RecognizerDialog(SearchMusicActivity.this, mInitListener);
5        //设置监听,实现听写效果的回调
6        int a = 1+2;
7
8        iatDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
9        iatDialog.setParameter(SpeechConstant.ACCENT, "mandarin");
10
11        iatDialog.setListener(new RecognizerDialogListener() {
12            String resultJson = "[";//放置在外边做类的变量则报错,会造成json格式不对(?)
13
14            @Override
15            public void onResult(RecognizerResult recognizerResult, boolean isLast) {
16                System.out.println("-----------------   onResult   -----------------");
17                if (!isLast) {
18                    resultJson += recognizerResult.getResultString() + ",";
19                } else {
20                    resultJson += recognizerResult.getResultString() + "]";
21                }
22
23                if (isLast) {
24                    //剖析语音识别后返回的json格式的效果
25                    Gson gson = new Gson();
26                    List resultList = gson.fromJson(resultJson,
27                            new TypeToken() {
28                            }.getType());
29                    String result = "";
30                    for (int i = 0; i
31                        result += resultList.get(i).toString();
32                    }
33
34                    et_content.setText(result);
35                    //获取焦点
36                    et_content.requestFocus();
37                    //将光标定位到笔墨最后,以便修改
38                    et_content.setSelection(result.length());
39                }
40            }
41
42            @Override
43            public void onError(SpeechError speechError) {
44                //自动天生的方法存根
45                speechError.getPlainDescription(true);
46            }
47        });
48        //开始听写,需将sdk中的assets文件下的文件夹拷入项目的assets文件夹下(没有的话自己新建)
49        iatDialog.show();
50    }
51
52    private InitListener mInitListener = new InitListener() {
53        @Override
54        public void onInit(int code) {
55            Log.d(TAG, "SpeechRecognizer init() code = " + code);
56            if (code != ErrorCode.SUCCESS) {
57                Toast.makeText(SearchMusicActivity.this, "初始化失败,错误码:" + code, Toast.LENGTH_SHORT).show();
58            }
59        }
60    };
【End】
推荐阅读
罗永浩公布进军电商直播;微博回应用户数据泄露;Android 11 开发者预览版 2 发布 | 极客头条
苹果克制上架的这款软件,到底有多可恶?
了解这4个重点,带你探索将来将怎样设计智能体系和机器人!
超 6 成步伐员月薪 8000 以上,后端开发最吃香!| 中国开发者近况报告
Docker 开发环境的滑坡
比特币Logo背后有哪些历史及象征意义?Logo 上的“B”为什么会向右倾斜?

153003gxhuxm2gz76xq9xw.jpg

你点的每一个在看,我认真当成了喜欢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

文字版|手机版|小黑屋|RSS|举报不良信息|精睿论坛 ( 鄂ICP备07005250号-1 )

GMT+8, 2025-4-18 06:02 , Processed in 0.152364 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表