中国最先进的语音交互技术实现实验代码

[摘要] 随着android手机的增长而带来的信息膨胀,人们迫切的需要能够方便提取简洁的、所需要的声音信息,语音交互技术是近几年来,一个新的研究方向,主要是对海量的声音信息进行分类、查找。本文简要分析人机交互的研究背景,讲述人机交互的软件实现及应用,包括开发环境、不同手机的测试,介绍了人机交互的技术分析,详细讲解了实现过程,对声音转换成文本进行测试,最后对语音交互技术进行总结。

[关键词] 人机交互 android开发技术 语音识别

[Abstract] The expansion of information brought with Android mobile phone growth, there is an urgent need to facilitate the extraction of simple and sound information need, speech interaction technology in recent years, a new research direction, is mainly the sound information on mass classification, search. This paper briefly analyzes the research background of human-computer interaction, about human-computer interaction software realization and application, including the development environment, different mobile phone testing, introduces the analysis of human-computer interaction technology, explain in detail the implementation process, at the end of the speech interaction technology summary.

[Key words] HCI Android development technology Speech recognition

1 研究背景

能用说话解决的事情决不动手,这也许就是将来智能社会的一种生活方式。而要让机器帮我们做到这一点,必须还要做很多的技术研发和创新。这几年语音交互技术已经获得很大发展,包括语音识别、语义理解等,目前还在研发能够让机器自主实现语言学习的技术,通过语音识别声学模型训练,使用带预训练的多层神经网络,语音识别错误率可降低30%,是近20年来语音识别技术方面最快的进步。变成真正意义上的智能。

表1-1 智能手机涨幅

2011年第四季度

0.41亿

2012年第一季度

0.3652亿

2012年第二季度

0.420亿

2012年第三季度

0.4139亿

2012年第四季度

0.530亿

2013年第一季度

0.543亿

2013年第二季度

0.6亿

报表大家可以看到11年度第四季度与12年度第四季度的对比,Android智能手机市场的销售量已经上涨了15%,从报表上面我们看到整个12年度整个智能手机市场都是呈现出一片上涨趋势,全年的出货量达到1.738亿部手机。而且从13年开始,单单从第一季度和第二季度我们就能看出来上涨速度变得非常迅速,从12年第一季度跟13年的第一季度同期相比增长比就已经到达了1.487:1,13年第二季度跟12年第二季度对比我们就能看出来比例依然是1.43:1所以从这个趋势来看未来肯定是智能手机占主导方向地位 。所以语音在人机交互方面的应用方面也在增加,对人机语音交互技术的研究也日益增加。

2 人机交互系统结构内容

随着计算机技术、模式识别等技术的发展,适应不同场合的语音识别系统相继被开发出来,语音识别及处理技术已经越来越突现出其强大的技术优势。近三十年来,语音识别在计算机、信息处理、通信与电子系统、自动控制等领域的应用越来越广泛。

在许多政府部门、商业机构,语音识别技术的应用,可免除大量操作人员的重复劳动,既经济又方便。如:语音邮件、IP电话和IP传真、电子商务、自动语音应答系统、自动语音信箱、基于IP的语音、数据、视频的CTI系统、综合语音、数据服务系统、自然语音识别系统、专家咨询信息服务系统、寻呼服务、故障服务、秘书服务、多媒体综合信息服务、专业特别服务号(168自动信息服务系统,112、114、119等信息查询系统)等。许多特定环境下,如工业控制方面,在一些工作环境恶劣、对人身有伤害的地方(如地下、深水及辐射、高温等)或手工难以操作的地方,均可通过语音发出相应的控制命令,让设备完成各种工作。

当今,语音识别产品不仅在人机交互中,占到的市场比例越来越大,而且在许多领域都有了广阔的应用前景,在人们的社会生活中起着举足轻重的作用。

2.1 语音识别系统原理

语音识别一般分为两个步骤:学习阶段和识别阶段。学习阶段的任务是建立识别基本单元的声学模型以及语言模型。识别阶段是将输入的目标语音的特征参数和模型进行比较,得到识别结果。

语音识别过程如图所示。下面对该流程作简单介绍:    (1)语音采集设备如话筒、电话等将语音转换成模拟信号。

(2)数字化一般包括预滤波、采样和A/D变换。该过程将模拟信号转变成计算机能处理的数字信号。

(3)预处理一般包括预加重、加窗分帧。经预处理后的信号被转换成了帧序列的加窗的短时信号。

(4)参数分析是对短时信号进行分析,提取语音特征参数的过程,如时域、频域分析,矢量量化等。

(5)语音识别是目标语音根据特征参数与模型库中的参数进行匹配,产生识别结果的过程。一般有模板匹配法、随机模型法和神经网络等。

(6)应用程序根据识别结果产程预定动作。

(7)该过程是语音模型的学习过程。

2.2 现有算法介绍

人工神经网络法。现实世界的语音信号会随着许多特征如:说话人语速、语调以及环境的变化而动态变化的,想要用传统的基于模板的方法建立一个适应动态变化的语音识别系统是非常困难的。因此需要设计一个带有自学习能力的自适应识别系统,以便可以适应语音的动态变化。

人工神经网络由神经元、网络拓朴和学习方法构成。人工神经网络拓朴结构可分为反馈型和非反馈型(前馈型)。学习方法可分为监督型和非监督型。各种人工神经网络模型中应用得最典型的是采用反向传播(Back Propagation)学习算法的多层前馈网络。多层前馈型网络如图所示。

除上述介绍的常用的方法外,还有许多其它的识别方法以及改进算法。

3基于语音处理技术的人机交互系统结构 如图1所示[1]

图 1  基于语音处理技术的人机交互系统结构

3.1系统的工作过程主要包括语音采集和语音识别2 个部分

3.1.1其原理分别如图2 、图3 所示[1]

图 2 语音采集工作原理

图 3 语音识别原理

3.2软件设计

3.2.1安装开发软件

1、JDK

ver: jdk-6u30-windows-i586.exe

http://download.oracle.com/otn-pub/java/jdk/6u30-b12/jdk-6u30-windows-i586.exe

2、Eclipse

ver: eclipse-SDK-3.7.1-win32.zip

http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.7.1-201109091335/eclipse-SDK-3.7.1-win32-x86_64.zip

3、Android SDK

ver: android-sdk_r16-windows

http://dl.google.com/android/android-sdk_r16-windows.zip

4、ADT Plugin for Eclipse

ver: ADT 16.0.1

http://dl.google.com/android/ADT-16.0.1.zip

5、在Eclipse中安装插件ADT

启动Eclipse,选择菜单Help->Install New Software..

6、弹出对话框Install,选择Add->Archive..然后选择本地的ADT压缩包文件,在Name部分给出命名,本例为:android。

7、在列表中选择Developer Tools,然后点击“Next”。

8、安装完毕,提示重新启动Eclipse。

9、Android模拟器运行环境配置;如图4

图 4 语音交互开发软件界面

10、虚拟机的安装;如图5

图 5 语音交互开发虚拟机界面

4 语言交互软件的实现

4.1 代码实现

(1)页面设计

demo.xml

"1.0" encoding="utf-8"?>

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

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center_horizontal"

android:layout_width="fill_parent"

android:layout_height="0dip"

android:layout_weight="1"

android:id="@+id/txt_result"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/bj"

android:editable="false"

android:gravity="top|left"

android:paddingBottom="40dip"

android:text="欢迎使用语音识别测试程序!-设计者-山东女子学院信息技术学院-15计科专升本-田林玉and胡立婷."

android:textSize="20sp" />

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:id="@+id/bt_search"

android:layout_width="0dip"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="人机交互" >

android:id="@android:id/button2"

android:layout_width="0dip"

android:layout_height="wrap_content"

android:layout_weight="1"

android:layout_marginLeft="10dip"

android:text="取消"

HelloDemoActivity.java

package com.test.demo;

import java.util.ArrayList;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.EditText;

import com.iflytek.speech.RecognizerResult;

import com.iflytek.speech.SpeechConfig.RATE;

import com.iflytek.speech.SpeechError;

import com.iflytek.ui.RecognizerDialog;

import com.iflytek.ui.RecognizerDialogListener;

public class HelloDemoActivity extends Activity implements OnClickListener {

protected static final String TAG = "ThirdActivity";

private EditText txt_result;

private RecognizerDialog rd;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.demo);

findView();

//RecognizerDialog(Context context, String params); "appid=1234567,usr=test,pwd=12345" usr、pwd不是必选的

//创建语音识别dailog对象,appid到讯飞就注册获取

rd = new RecognizerDialog(this ,"appid=50e1b967");

}

private void findView() {

txt_result = (EditText) findViewById(R.id.txt_result);

findViewById(R.id.bt_search).setOnClickListener(this);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.bt_search:

showReconigizerDialog();

break;

default:

break;

}

}

private void showReconigizerDialog() {

rd.setEngine("sms", null, null);

//设置采样频率,默认是16k,android手机一般只支持8k、16k.为了更好的识别,直接弄成16k即可。

rd.setSampleRate(RATE.rate16k);

final StringBuilder sb = new StringBuilder();

Log.i(TAG, "识别准备开始.............");

//设置识别后的回调结果

rd.setListener(new RecognizerDialogListener() {

@Override

public void onResults(ArrayListresult,boolean isLast) {

for (RecognizerResult recognizerResult : result) {

sb.append(recognizerResult.text);

Log.i(TAG, "识别一条结果为::"+recognizerResult.text);

}

}

@Override

public void onEnd(SpeechError error) {

Log.i(TAG, "识别完成.............");

txt_result.setText(sb.toString());

Log.i(TAG, "识别完成:"+txt_result.getText().toString());

}

});

txt_result.setText(""); //先设置为空,等识别完成后设置内容

rd.show();

}

5 实验测试

5.1 下载及安装

到现在为止,已经完成了全部的Android录音与播放工程的代码编写工作,从这里开始就将要对Android手机录音与播放工程进行测试,步骤及结果如下:

5.1.2 在手机上运行实现人机语音交互技术

进入录音播放器之后,就可以根据界面上的按钮来进行操作了,操作的界面算是十分的简洁。图5-11录音软件正常启动的界面,图5-12为录音和播放时的界面。

图5-11启动界面 图5-12 录音和播放列表的基础面

6 单项测试

汉语测试

测试步骤

实际结果

状态

负责人

时间

汉语测试1

人生若只如初见,何事秋风悲画扇?等闲变却故人心,却道故人心易变。骊山语罢清宵半,泪雨零铃终不怨。何如薄幸锦衣郎,比翼连枝当日愿。——纳兰容若《木兰花令》

正常

胡立婷

2016-10-26

汉语测试2

如果你无法忘掉昨天,就不会有一个更好的明天。

正常

田林玉

2016-10-26

汉语测试3

东风夜放花千树。更吹落、星如雨。宝马雕车香满路。凤箫声动,玉壶光转,一夜鱼龙舞。蛾儿雪柳黄金缕。笑语盈盈暗香去。众里寻他千百度。蓦然回首,那人却在,灯火阑珊处。

正常

田林玉

2016-10-26

汉语测试4

多情自古伤离别。更那堪、冷落清秋节。今宵酒醒何处,杨柳岸、晓风残月。此去经年,应是良辰、好景虚设。便纵有、千种风情,更与何人说。

正常

胡立婷

2016-10-27

英语测试

英语测试1

You come from china

测试两次,会有不同的错误

田林玉

2016-10-27

英语测试2

you hava to believe in yourself

英语辨识度出现偏差

田林玉

2016-10-27

英语测试3

I come from china

正确

胡立婷

2016-10-27

方言测试

方言测试1(河南话)

你天天吊儿郎当干啥来?

正确

田林玉

2016-10-27

方言测试2

你弄啥来!

正确

田林玉

方言测试3(山西话)

我放完假就回家

有两个字出错

胡立婷

2016-10-27

方言测试4

确认技术安全和管理安全双轮保障安全

紊乱

胡立婷

2016-10-27

方言测试5

构建和谐世界

两个字出错

胡立婷

2016-10-27

方言测试6

平等互信,包容互鉴

正常

胡立婷

2016-10-27

方言测试7

你说话都说不清,我哪儿知道你是谁?

正常

胡立婷

2016-10-27

7 总结

现在人类已经越来越能适应和接受智能产品给我们带来的改变,相对来说,我们现在生活中使用一些产品的方式还是有些复杂、效率低下,这就迫切需要诞生一种新的更简便的操作方式;而语音一旦成为主流的交互手段,可以将操作变得更简洁,大大降低人类对智能设备操作的要求。而且声波对接收指向性的要求更 宽松,能够适用于更多的场景和人群。特别是对于老年人和儿童等庞大特定人群,语音更是最佳的交互选择。语音交互还可能会成为继搜索引擎、浏览器、智能手机OS之后的下一个互联网入口。将对即时通讯、搜索、购物、LBS等垂直应用服务市场产生巨大的影响。这也是为什么各大巨头和资本不断在此领域大量投入资源的原因。虽然语音交互技术已经取得了相当的发展,但是语音交互技术在算法识别,智能分析和跟数据库的链接等还需要进一步的研究,这既包括开发互联网的信息,还包括机器学习,但是我们相信,在经过更多的整合和积累,语音交互技术终究会引领人工智能改变人类生活。我们将不必再按键,不必使用传统鼠标和键盘,人机语音交互技术成为一项重要研究课题[2]。

参考文献

[1]杨帅,薛岚,吴洪兵等.基于语音处理技术的人机交互系统的设计[J].工矿自动化,2010,36(4):123-127.

[2]李丽. 人机语音交互技术的原理及发展前景[J]. 科技资讯,2013,32:1.

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180728A0CQDC00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券