android128 zhihuibeijing 科大讯飞 语音识别
- 科大讯飞 开放平台 http://open.voicecloud.cn/
package com.itheima.voicedemo; import android.app.Activity;
import android.os.Bundle;
import android.view.View; import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.RecognizerListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechRecognizer;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // 初始化语音引擎
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=54b8bca3");
} /**
* 开始听写
*/
public void listen(View view) {
// 1.创建SpeechRecognizer对象,第二个参数:本地听写时传InitListener
SpeechRecognizer mIat = SpeechRecognizer.createRecognizer(this, null); // 2.设置听写参数,详见《科大讯飞MSC API手册(Android)》SpeechConstant类
mIat.setParameter(SpeechConstant.DOMAIN, "iat");
mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
mIat.setParameter(SpeechConstant.ACCENT, "mandarin"); // 开始听写
mIat.startListening(mRecoListener); } /**
* 交互动画
*/
public void listenUI(View view) {
RecognizerDialog iatDialog = new RecognizerDialog(this, mInitListener); // 2.设置听写参数,详见《科大讯飞MSC API手册(Android)》SpeechConstant类
iatDialog.setParameter(SpeechConstant.DOMAIN, "iat");
iatDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
iatDialog.setParameter(SpeechConstant.ACCENT, "mandarin"); iatDialog.setListener(recognizerDialogListener); iatDialog.show();
} /**
* 语音朗诵
*/
public void read(View view) {
SpeechSynthesizer mTts = SpeechSynthesizer
.createSynthesizer(this, null); mTts.setParameter(SpeechConstant.VOICE_NAME, "vixm");
mTts.setParameter(SpeechConstant.SPEED, "50");
mTts.setParameter(SpeechConstant.VOLUME, "80");
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); mTts.startSpeaking("床前明月光,地上鞋两双,床上狗男女,其中就有你! 你好啊?",
mSynthesizerListener);
} private SynthesizerListener mSynthesizerListener = new SynthesizerListener() { @Override
public void onSpeakResumed() { } @Override
public void onSpeakProgress(int arg0, int arg1, int arg2) { } @Override
public void onSpeakPaused() { } @Override
public void onSpeakBegin() { } @Override
public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) { } @Override
public void onCompleted(SpeechError arg0) { } @Override
public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) { }
}; private RecognizerDialogListener recognizerDialogListener = new RecognizerDialogListener() { @Override
public void onResult(RecognizerResult results, boolean isLast) {
System.out.println(results.getResultString());
System.out.println("isLast=" + isLast);
} @Override
public void onError(SpeechError arg0) { }
}; private InitListener mInitListener = new InitListener() { @Override
public void onInit(int arg0) {
}
}; private RecognizerListener mRecoListener = new RecognizerListener() { /**
* 语音识别结果 isLast=true表示会话结束
*/
@Override
public void onResult(RecognizerResult results, boolean isLast) {
System.out.println(results.getResultString());//打印听到的结果。
} @Override
public void onBeginOfSpeech() { } @Override
public void onEndOfSpeech() { } @Override
public void onError(SpeechError arg0) { } @Override
public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) { } @Override
public void onVolumeChanged(int arg0) { }
};
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.itheima.voicedemo"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> <!-- 连接网络权限,用于执行云端语音能力 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 读取网络信息状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 获取当前wifi状态 -->
<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" />
<!-- 读取联系人权限,上传联系人需要用到此权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.itheima.voicedemo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>

android128 zhihuibeijing 科大讯飞 语音识别的更多相关文章
- 安卓Android科大讯飞语音识别代码使用详解
科大讯飞的语音识别功能用在安卓代码中,我把语音识别写成了Service,然后在Fragment直接调用service服务.科大讯飞语音识别用的是带对话框的那个,直接调用科大讯飞的语音接口,代码采用链表 ...
- 百度语音识别vs科大讯飞语音识别
一.结果 从笔者试验的结果来看,科大讯飞的语音识别技术远超百度语音识别 二.横向对比 科大讯飞语音识别 百度语音识别 费用 各功能的前5小时免费 全程免费 转换精准率 非常高 比较低 linux ...
- 用Python来使用科大讯飞语音识别,so easy
在人工智能高速发展的今天,语音识别技术被带入到人们的工作和生活中,开始被越来越多的人关注和使用,今天,当各种在线客服被机器人客服代替,当速记翻译馆被语音识别代替,甚至当收银员.驾驶员.工厂工人.普通文 ...
- cordova科大讯飞语音识别
cordova-plugin-IFlyspeech 科大讯飞的语音听说读写的cordova插件 Supported Platforms iOS android Installation 插件安装命令: ...
- ros科大讯飞语音识别
转自http://www.ncnynl.com/archives/201611/1069.html ROS入门教程-编写科大讯飞语音SDK的ROS包 说明 ROS软件包xfei_asr是集成自科大讯飞 ...
- ros语音交互(四)移植科大讯飞语音识别到ros
将以前下载的的语音包的 samples/iat_record/的iat_record.c speech_recognizer.c speech_recognizer.c 拷贝到工程src中, linu ...
- ros科大讯飞语音识别环境配置
以在线命令词识别为例: 链接:http://www.xfyun.cn/sdk/dispatcher 1.下载SDK,解压: 2.在ROS工作空间下创建一个Package: catkin_create_ ...
- 科大讯飞语音识别Demo创建
1.下载官方SDK https://www.xfyun.cn/sdk/dispatcher 2.打开AS,选择import project 3.导入mscV5PlusDemo 4.解决ERROR: ...
- ros语音交互(五)移植科大讯飞语音识别到ros
将以前下载的的语音包的 samples/iat_record/的iat_record.c speech_recognizer.c speech_recognizer.c 拷贝到工程src中, linu ...
随机推荐
- jvm常量池 vsv为什么1000 == 1000返回为False,而100 == 100会返回为True?
在jvm规范中,每个类型都有自己的常量池.常量池是某类型所用常量的一个有序集合,包括直接常量(基本类型,String)和对其他类型.字段.方法的符号引用.之所以是符号引用而不是像c语言那样,编译时直接 ...
- java.lang.ExceptionInInitializerError的原因(转)
这个错误是说变量初始化出现问题,通常出现在静态变量尤其是单例模式.这种问题往往是初始化顺序不对造成的,下面举个简单的例子. import java.util.HashMap; import java. ...
- VTK三维重建(1)-使用VTK读取DICOM,并动态输出
[效果显示] 将脚部骨骼扫描的CT照片进行的连续读取, 运行结果存为了两个动态gif, 不知道能不能正常显示 [程序实现] int main(int argc, char* argv[]) { // ...
- IOS学习笔记1`
写了IOS的Hello World,记事本写的.除了一些基本的语法外,最主要的收获就是路径问题了. 直接把文件拖入终端,就会显示文件的完全限定名了.
- HW7.2
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- HW6.19
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- HDU-4638 Group 树状数组+离线
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4638 个人认为比较不错的题目. 题意:给一个1-n的排列,询问区间[l,r]的数排序后连续区间的个数. ...
- POJ1185 - 炮兵阵地(状态压缩DP)
题目大意 中文的..直接搬过来... 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平 ...
- Code Understanding Step by Step - We Need a Task
Code understanding is a task we are always doing, though we are not even aware that we're doing it ...
- 【转】logger
一个使用java.util.logging.Logger进行log输出的示例代码如下: package com.sample; import java.io.File; import java.uti ...