讯飞语音

、你需要android手机应用开发基础

2、科大讯飞语音识别SDK android版

3、科大讯飞语音识别开发API文档

4、android手机

关于科大讯飞SDK及API文档,请到科大语音官网下载:http://open.voicecloud.cn/

当然SDK和API有多个版本可选,按照你的需要下载,其次,下载需要填写资料申请注册,申请通过或可获得Appid

二、语音识别流程

1、创建识别控件

函数原型

Public RecognizerDialog(Context context,String params)

其中Context表示当前上下文环境,传this即可

Params有参数详见API文档

2、用Appid登录到科大讯飞服务器(自动连接,需要联网)

主要用到SpeechUser(com.iflytek.speech包下)类下的getUser().login()函数

其中getUser()表示获取用户对象,可以实现用户登录,注销等操作

Login函数原型

Public boolean login(Context context,String usr,String pwd,String

参数详见API文档

3、读取语言识别语法

通过abnf文件并读取该文件,实现指定的语言识别语法,比如为了识别并计算国内两个城市之间的距离,abnf文件的内容可以是如下

1

2

3

4

5

6

7

"#ABNF 1.0 gb2312;

language zh-CN;

mode voice;

root $main;

$main = $place1 到$place2 ;

$place1 = 北京 | 武汉 | 南京 | 天津 | 天京 | 东京;

$place2 = 上海 | 合肥;"

Abnf文件的读取参考后面的具体开发实例

4、设置识别参数及识别监听器

通过RecognizerDialog下的setEngine()方法设置参数

函数原型

public void setEngine(String engine,String params,String grammar)

详细的参数请参考API文档

5、识别结果回调

需要实现RecognizerDialogListener接口,其中有两个方法需要重写,分别是

1)public void onResults(ArrayList<RecognizerResult> results,boolean isLast)

其中result是RecognizerResult对象的集合,RecognizerResult的属性有

String text 识别文本

Int confidence 识别可信度

2)public void onEnd(SpeechError error)

6、识别结果处理(自行处理)

自己将文本进行处理。

三、详细开发过程

1、新建Android项目

和普通的android项目一样,只是需要加入科大讯飞语言SDK包,主要包括

Msc.jar及libmsc.so动态库文件,项目lib截图

2、布局

这里只进行简单的布局,只设置一个按钮作为语言识别按钮及一个文本组件用作显示识别结果,布局文件如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    android:background="@drawable/color"

    tools:context=".MainActivity"
>

    <ImageView

      android:id="@+id/voice"

      android:layout_width="fill_parent"

      android:layout_height="wrap_content"

      android:layout_marginTop="100dp"

      android:src="@drawable/voice"/>

    

    
<TextView

        android:id="@+id/result"

        android:layout_height="wrap_content"

        android:layout_marginTop="50dp"

        android:layout_gravity="center_vertical"

        android:layout_width="fill_parent"

        android:text="提示:请说出你所在的城市"/>

    

</LinearLayout>

3、识别语法文件

这里只是简答的识别所说的城市名,其中指定了“北京”、“上海”、“广州”、“深圳”、“厦门”

1

2

3

4

5

6

7

#ABNF
1.0 gb2312;

language zh-CN;

mode
voice;

 

root
$main;

$main
= $where
;

$where
= 北京
| 上海
| 广州
| 深圳
| 厦门;

4、MainActivity程序

代码如下,请参考上面的语言识别流程

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

package
com.example.androidclient;

 

import
java.io.InputStream;

import java.util.ArrayList;

 

import com.iflytek.speech.RecognizerResult;

import
com.iflytek.speech.SpeechError;

import com.iflytek.speech.SpeechListener;

import
com.iflytek.speech.SpeechUser;

import com.iflytek.ui.RecognizerDialog;

import
com.iflytek.ui.RecognizerDialogListener;

 

import
android.os.Bundle;

import android.app.Activity;

import
android.content.SharedPreferences;

import android.view.Menu;

import
android.view.View;

import android.view.View.OnClickListener;

import
android.widget.ImageView;

import android.widget.TextView;

import
android.widget.Toast;

 

public
class MainActivity
extends Activity{

    //组件

    private
ImageView voice
= null;

    private
TextView result
= null;

    private
Toast mToast
= null;

    

    //语音识别

    private
final String
APP_ID =
"514fb8d7";

    private
final static
String KEY_GRAMMAR_ID
= "grammar_id";

    private
RecognizerDialog recognizerDialog
= null;

    private
String grammarText
= null;

    private
String grammarID
= null;

    

 

    @Override

    protected
void onCreate(Bundle
savedInstanceState)
{

        super.onCreate(savedInstanceState);

        super.setContentView(R.layout.activity_main);

        

        this.voice
= (ImageView)super.findViewById(R.id.voice);

        this.result
= (TextView)super.findViewById(R.id.result);

        

        //初始化识别

        mToast
= Toast.makeText(this,"",Toast.LENGTH_SHORT);

        mToast.setMargin(0f,
0.2f);

        recognizerDialog
= new
RecognizerDialog(this,"appid="+APP_ID);

        SpeechUser.getUser().login(this,
null,
null,
"appid="+APP_ID,
loginListener);

        

        // 读取保存的语法ID

        SharedPreferences
preference =
this.getSharedPreferences("abnf",MODE_PRIVATE);

        grammarID
=preference.getString(KEY_GRAMMAR_ID,
null);

        grammarText
= readAbnfFile();

        

        

        this.voice.setOnClickListener(new
Voice());

        

    }

 

    

    private
class Voice
implements OnClickListener
{

 

        @Override

        public
void onClick(View
v)
{

            

            MainActivity.this.voice.setImageResource(R.drawable.voicelight);

            recognizerDialog.setListener(mRecoListener);

            recognizerDialog.setEngine(null,
"grammar_type=abnf",
grammarText);

            recognizerDialog.show();

        }

    }

    

    //语音识别用户登录监听器

    private
SpeechListener loginListener
= new
SpeechListener()

    {

 

        @Override

        public
void onData(byte[]
arg0)
{

        }

 

        @Override

        public
void onEnd(SpeechError
error)
{

            if(error
!= null)

            {

                mToast.setText("登录失败");

                mToast.show();

            }

            else

            {

                mToast.setText("登录成功");

                mToast.show();

            }

        }

 

        @Override

        public
void onEvent(int
arg0,
Bundle arg1)
{

        }        

    };

    

    //读取语音识别语法

    private
String readAbnfFile()

    {

        int
len =
0;

        byte
[]buf
= null;

        String
grammar =
"";

        try
{

            InputStream
in =
getAssets().open("gm_continuous_digit.abnf");            

            len  =
in.available();

            buf
= new
byte[len];

            in.read(buf,
0,
len);

            grammar
= new
String(buf,"gb2312");

        }
catch (Exception
e1)
{

            e1.printStackTrace();

        }

        return
grammar;

 

    }

    //识别结果回调

    private
RecognizerDialogListener mRecoListener
= new
RecognizerDialogListener()

    {

        @Override

        public
void onResults(ArrayList<RecognizerResult>
results,boolean
isLast)
{

            String
text =
"";

            text
= results.get(0).text;

            mToast.setText("识别结果为:"+text);

            mToast.show();

            result.setText("识别结果为:"+text);

        }

 

        @Override

        public
void onEnd(SpeechError
error)
{

            MainActivity.this.voice.setImageResource(R.drawable.voice);

        }

        

    };

}

5、给程序相应的权限

1

2

3

4

5

6

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

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

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

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

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

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

由于本程序用到了网络、麦克风等,需要给定一下权限

6、结果截图

四、项目文件及android程序下载

项目源文件及android程序安装包

下载地址:http://pan.baidu.com/share/link?shareid=494903&uk=3087605183

本站统一解压密码:www.52wulian.org

时间: 2024-09-20 20:43:24

讯飞语音的相关文章

老罗推荐的讯飞语音,有这些 know-how | 硬创公开课

据说,看了锤子手机发布会的人,印象最深的就是老罗演示讯飞语音输入那一段(从视频的第100分钟开始).很多人表示自己受到了深深的震撼.但"震撼"之余,我们也应该冷静下来,清醒地认识到语音输入的春天,在科技史上已经来过 N 次了.究竟是什么,让2016年的语音输入变得不一样,让讯飞的语音输入变得不一样? 为了解答这个问题,雷锋网请来了讯飞输入法产品总监,或者用时髦的说法"讯飞输入法之父",为大家解解馋. 雷锋网雷锋网雷锋网 嘉宾简介 翟吉博,讯飞输入法产品总监.2009

讯飞“语音云”

每一部手机都将具备能听会说的功能: 每一台家电都将具备能听会说的功能: 每一台轿车都将具备能听会说的功能: 每一个玩具都将具备能听会说的功能: -- 这是安徽科大讯飞信息科技股份有限公司高级副总裁吴晓如先生在接受CTI论坛记者专访时,为我描绘出的语音远景,而在此之前的若干年,语音应用虽然已得到行业人士足够的重视,但真正落地无疑与移动互联网的飞速发展有着密不可分的关系. 图:安徽科大讯飞信息科技股份有限公司高级副总裁吴晓如先生 讯飞"语音云" 正如创新工场CEO 李开复在科大讯飞&quo

研究讯飞语音 demo,下载跑跑

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/53401000 未经博主允许不得转载. 博主地址是:http://blog.csdn.net/freewebsys 1,讯飞语音 老罗的发布会使劲的夸了下讯飞. 最近讯飞也开了个发布会,吹了吹牛.还是有很多的技术亮点的. 最近百度开始推广他的语音了. 讯飞语音地址: http://www.xfyun.cn/ 百度语音地址: http://yuyin.baidu.com/ 当然,无

Android基于讯飞语音SDK实现语音识别_Android

一.准备工作 1.你需要android手机应用开发基础 2.科大讯飞语音识别SDK android版 3.科大讯飞语音识别开发API文档 4.android手机 关于科大讯飞SDK及API文档,请到科大语音官网下载:http://www.xfyun.cn/ 当然SDK和API有多个版本可选,按照你的需要下载,其次,下载需要填写资料申请注册,申请通过或可获得Appid 如下图,申请一个APPID,就可以了. 二.语音识别流程 1.创建识别控件 函数原型 Public RecognizerDialo

Android基于讯飞语音SDK实现语音识别

一.准备工作 1.你需要android手机应用开发基础 2.科大讯飞语音识别SDK android版 3.科大讯飞语音识别开发API文档 4.android手机 关于科大讯飞SDK及API文档,请到科大语音官网下载:http://www.xfyun.cn/ 当然SDK和API有多个版本可选,按照你的需要下载,其次,下载需要填写资料申请注册,申请通过或可获得Appid 如下图,申请一个APPID,就可以了. 二.语音识别流程 1.创建识别控件 函数原型 Public RecognizerDialo

讯飞语音输入法如何进行语音修改

  在选择语音输入时,周边环境.口音.语速都有可能给语音识别的准确率造成影响,一旦识别错误可能会改变整句话的含义,想修改可以,但还是需要双手进行配合,在开车时或其它特殊场景下实现起来就没那么容易了,本应是一项智能服务,用户体验却似乎并没有太大的提升. 为了解决这一痛点,讯飞语音推出了独家的语音修改功能,用户可以使用纯粹的自然语言进行改错,你只需要打开讯飞输入法,点击"语音修改"功能,你就可以一边说话,一遍修改已经录入的文字. 例如,在"一起去吃饭"前面加上"

科大讯飞年度发布会:讯飞超脑摘取认知智能桂冠,输入法领衔AI+ (刘庆峰、胡郁演讲实录)

纵观整场发布会,可以看到,讯飞以语音为切入口的.从感知智能到认知智能的人工智能革命正在稳步推进:战略上,讯飞专注人工智能的决心非常坚定,认为本次人工智能的爆发是真正的行业浪潮,其中蕴含巨大的机会:技术研发上,讯飞利用多年在人工智能上积累,拿下多项国际比赛的冠军,不仅语音,还有知识图谱.自然语言理解等:产品应用上,科大讯飞在车载和家居上扩展布局,推出相关产品.行业竞争上,讯飞人工智能生态建设取得初步进展,多个领域的市场与技术上都有布局,与3000多家机器人公司达成合作,拥有20万开发者.市场上,在

讯飞语音输入法电脑版怎么用

  一.启用讯飞语音输入 下载附件后,解压文件,双击iFlyVoice.exe,即可启用;讯飞语音输入启用后,会出现语音输入面板,如下图: 二.语音输入 在讯飞语音输入面板打开的情况下,定位输入光标在需要进行文本输入的地方,然后点击讯飞输入面板的麦克风按键,即可进行语音输入;说话结束后,再次点击麦克风按钮,进入识别界面,返回识别结果. 三.输入法设置 1.隐藏主窗口 在讯飞语音输入面板上,点击鼠标右键,可弹出快捷菜单,选择隐藏主窗口即可隐藏输入法界面. 2.基本设置 在讯飞语音输入面板上,点击鼠

讯飞刘庆峰:人工智能不掌握主导权,中国还将继续给全世界打工

尊敬的各位嘉宾,各位合作伙伴,今天非常高兴向大家进行演讲.确实像刚才华为的李航主任,以及我们多位专家提到的,今天作为一个全新的历史时点,在人工智能概念提出60周年之后,AI正从原来的理论框架体系的搭建,实验室的一些关键技术的准备,开始进入到一个全新的阶段--人工智能正在进入到我们生活的方方面面. 那么其实今天,一是人类需要一个更加激动人心的未来.二是全球的产业和经济,都需要一个新的增长点,需要走出当前的低迷.用什么样的新技术手段和方式能够带来全新的业态,和全新的增长模式?所以说今天我们可以看到人