android开发语言_科大讯飞的语音识别技术

Android (94) 2023-03-24 21:22

大家好,我是编程小6,很高兴遇见你,有问题可以及时留言哦。
android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第1张
android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第2张

作者 | Pek_KuaiJia

责编 | 夕颜

头图 | CSDN 下载自视觉中国

出品 | CSDN(ID:CSDNnews)

随着目前用户需求的精细化和智能化,很多时候我们需要在App内集成语音输入模块,为用户提供语音输入的功能。而科大讯飞语音作为行业内翘楚,识别结果相对准确,且讯飞自带一套识别动画,适合快速搭建模块,废话不多说,先看下效果图。

android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第3张
android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第4张
android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第5张

下面开始具体步骤

android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第6张

申请key

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

android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第7张
android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第8张
android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第9张

下载SDK

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

android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第10张
android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第11张

将加压所得文件夹中libs下的Msc.jar文件复制到项目中的libs下

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

android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第12张
android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第13张

为语音听写添加权限

在mainfest.xml添加即可,注意Android6.0以上,读取麦克风和获取手机识别码权限需要动态申请。

1 <uses-permission android:name="android.permission.INTERNET" />

2 <!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->

3 <uses-permission android:name="android.permission.RECORD_AUDIO" />

4 <!--读取网络信息状态 -->

5 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

6 <!--获取当前wifi状态 -->

7 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

8 <!--允许程序改变网络连接状态 -->

9 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

10 <!--读取手机信息权限 -->

11 <uses-permission android:name="android.permission.READ_PHONE_STATE" />

android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第14张

配置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}

android开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第15张

在启动语音识别模块添加代码

这里的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<DictationResult> resultList = gson.fromJson(resultJson,

27 new TypeToken<List<DictationResult>> {

28 }.getType);

29 String result = "";

30 for (int i = 0; i < resultList.size - 1; 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开发语言_科大讯飞的语音识别技术_https://bianchenghao6.com/blog_Android_第16张
  • 2020年,5种将死的编程语言

  • 检测、量化、追踪新冠病毒,基于深度学习的自动CT图像分析有多靠谱?

  • GitHub 接连封杀开源项目惹众怒,CEO 亲自道歉!

  • 智能合约编写之 Solidity 的设计模式

  • 低学历、文科出身,我如何从月薪不到 3000 逆袭为大厂高薪程序员?

  • 从提取层、处理层、基础结构入手,带你了解Spark和Kafka!

你点的每个“在看”,我都认真当成了AI

发表回复