首先导入科大讯飞工具包

MainActivity源代码:

package com.example.viocedemo;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;import com.iflytek.cloud.speech.RecognizerResult;
import com.iflytek.cloud.speech.SpeechConstant;
import com.iflytek.cloud.speech.SpeechError;
import com.iflytek.cloud.speech.SpeechListener;
import com.iflytek.cloud.speech.SpeechSynthesizer;
import com.iflytek.cloud.speech.SpeechUser;
import com.iflytek.cloud.speech.SynthesizerListener;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;public class MainActivity extends Activity implements OnClickListener,
SynthesizerListener {
private EditText editText;
private Button button1;
private Button button2;
// 合成对象
private SpeechSynthesizer speechSynthesizer;
// 识别窗口
private RecognizerDialog recognizerDialog;@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);// appid换成自己申请的
SpeechUser.getUser().login(MainActivity.this, null, null,
"appid=12345678", listener);init();
setParam();}/**
* 初始化UI
*/
public void init() {
editText = (EditText) findViewById(R.id.editText1);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
}/**
* 初始化语音类别
*/
public void setParam() {
speechSynthesizer = SpeechSynthesizer.createSynthesizer(this);
speechSynthesizer.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
speechSynthesizer.setParameter(SpeechConstant.SPEED, "50");
speechSynthesizer.setParameter(SpeechConstant.VOLUME, "50");
speechSynthesizer.setParameter(SpeechConstant.PITCH, "50");
}/**
* 识别语音的弹出框
*/
public void setDialog() {
recognizerDialog = new RecognizerDialog(this);
recognizerDialog.setParameter(SpeechConstant.DOMAIN, "iat");
recognizerDialog.setParameter(SpeechConstant.SAMPLE_RATE, "16000");
editText.setText(null);
// 显示Dialog
recognizerDialog.setListener(dialogListener);
recognizerDialog.show();
}/**
* 识别回调监听器
*/
private RecognizerDialogListener dialogListener = new RecognizerDialogListener() {
// 识别结果回调
@Override
public void onResult(RecognizerResult arg0, boolean arg1) {
// TODO Auto-generated method stub
String text = JsonParser.parseIatResult(arg0.getResultString());
editText.append(text);
editText.setSelection(editText.length());
}// 识别结束回调
@Override
public void onError(SpeechError arg0) {
// TODO Auto-generated method stub}
};@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:// 语音播放按钮
String text = editText.getText().toString();
speechSynthesizer.startSpeaking(text, this);
break;
case R.id.button2:// 语音识别
setDialog();
break;
default:
break;
}
}// 缓冲进度回调通知
@Override
public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {
// TODO Auto-generated method stub}// 结束回调
@Override
public void onCompleted(SpeechError arg0) {
// TODO Auto-generated method stub}// 开始播放
@Override
public void onSpeakBegin() {
// TODO Auto-generated method stub
}// 暂停播放
@Override
public void onSpeakPaused() {
// TODO Auto-generated method stub}// 播放进度
@Override
public void onSpeakProgress(int arg0, int arg1, int arg2) {
// TODO Auto-generated method stub}// 继续播放
@Override
public void onSpeakResumed() {
// TODO Auto-generated method stub}/**
* 通用回调接口
*/
private SpeechListener listener = new SpeechListener() {// 消息回调
@Override
public void onEvent(int arg0, Bundle arg1) {
// TODO Auto-generated method stub}// 数据回调
@Override
public void onData(byte[] arg0) {
// TODO Auto-generated method stub}// 结束回调(没有错误)
@Override
public void onCompleted(SpeechError arg0) {
// TODO Auto-generated method stub}
};}

JsonParser类源代码:

package com.example.viocedemo;import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;import android.text.TextUtils;//import com.iflytek.speech.ErrorCode;
//import com.iflytek.speech.SpeechError;
/*** 对云端返回的Json结果进行解析* @author iFlytek* @since 20131211*/
public class JsonParser {/**
* 听写结果的Json格式解析
* @param json
* @return
*/
public static String parseIatResult(String json) {
if(TextUtils.isEmpty(json))
return "";StringBuffer ret = new StringBuffer();
try {
JSONTokener tokener = new JSONTokener(json);
JSONObject joResult = new JSONObject(tokener);JSONArray words = joResult.getJSONArray("ws");
for (int i = 0; i < words.length(); i++) {
JSONArray items = words.getJSONObject(i).getJSONArray("cw");
JSONObject obj = items.getJSONObject(0);
ret.append(obj.getString("w"));
}
} catch (Exception e) {
e.printStackTrace();
}
return ret.toString();
}}

UI布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><EditTextandroid:id="@+id/editText1"android:layout_width="match_parent"android:layout_height="250dip"android:gravity="top"android:ems="10" ><requestFocus /></EditText><Buttonandroid:id="@+id/button1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="语音播放" /><Buttonandroid:id="@+id/button2"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="语音听写" /></LinearLayout>

源代码下载

简单的语音合成与语音识别(科大讯飞)相关推荐

  1. Python2.7对接科大讯飞的语音合成和语音识别接口

    小Z正在尝试科大讯飞的语音合成和语音识别的接口调用. 需要注意的是: 1.白名单要在我的应用中配置,生效有5到10分钟的延迟,配置不正确会报错: {"code":"101 ...

  2. Python人工智能第一篇:语音合成和语音识别

    Python人工智能第一篇:语音合成和语音识别 ​此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径.目前市面上主流的AI技术提供公司有很多,比如百度,阿 ...

  3. WPF--使用windows语音合成与语音识别

    C# 语音开发 近些年来,Microsoft 越来越注重将语音技术投入于主流使用,从而促生了一些产品,例如,Speech Server(用于实现启用语音的电话系统)和 Voice Command(使用 ...

  4. python合成语音_MicroPython动手做(25)——语音合成与语音识别

    6.AB按键切换语言合成项目 [mw_shl_code=python,true]#MicroPython动手做(25)--语音合成与语音识别 #AB按键切换语言合成项目 from mpython im ...

  5. 2021年1~12月语音合成和语音识别论文月报

    ​ 论文统计每月更新一次,主要跟踪语音合成和语音识别的发展状况(很多文章都是在会议后才发出,但不影响统计.统计过程难免存在疏漏,因此统计结果仅供参考.所有文章语音合成领域统计列表请访问http://y ...

  6. 2021年10月语音合成和语音识别论文月报

    ​ 论文统计每月更新一次,主要跟踪语音合成和语音识别的发展状况(很多文章都是在会议后才发出,但不影响统计.统计过程难免存在疏漏,因此统计结果仅供参考.所有文章语音合成领域统计列表请访问http://y ...

  7. 2021年1~11月语音合成和语音识别论文月报

    论文统计每月更新一次,主要跟踪语音合成和语音识别的发展状况(很多文章都是在会议后才发出,但不影响统计.统计过程难免存在疏漏,因此统计结果仅供参考.所有文章语音合成领域统计列表请访问http://yql ...

  8. 语音合成和语音识别资料查询说明

    文章转载请标明出处:微信公众号 低调奋进 个人网站http://yqli.tech/本来整理语音合成相关的文章.数据以及相关的开源工具​等等.现在,我对资料进行整理,添加了语音识别模块,在这里分享给大 ...

  9. 语音合成商业化:科大讯飞向左,魔音工坊向右

    近年来随着AI技术的迅速发展,人机交互变得越来越频繁,"语音合成"就是人机交互中的重要一环.语音合成技术又被称为文语转换(TTS)技术,就是可以将文字信息转化为流畅标准的语音,其所 ...

最新文章

  1. AI 一分钟 | 谷歌发布72量子比特处理器,或将为机器学习应用提供加速;百度已经发起对景驰撤诉,但不会对王劲撤诉
  2. java接口返回值_java后台调用接口并返回值
  3. Apache Kafka-消费端消费重试和死信队列
  4. 《STL源码剖析》学习--traits
  5. javas的四种状态 无锁状态 偏向锁状态 轻量级锁状态 重量级锁状态
  6. 国内敏捷项目协作工具亲测推荐
  7. Random Forest 资源汇总(待续)
  8. 如何把Linux工具里的“军刀”BusyBox移植到RT-Thread Smart?
  9. 看完少年的你,想到少年的我
  10. nginx动静分离配置_Nginx 动静分离与负载均衡的实现
  11. Oracle-(if/case/以及模拟注册登录)练习-20131015
  12. PyQt5学习笔记02----初探Qt Designer 设计师
  13. 移动端安卓IOS系统判断,用js判断 iPhone6 iPhone6 plus iphonex?
  14. 中国喷淋泵行业市场供需与战略研究报告
  15. js读取本地excel到html,JS读取本地EXCEL文件
  16. Excel零基础入门(真对2021版Excel)
  17. python能制作ppt动画效果吗_那些超酷的视频效果,真的是用PPT动画做的吗?
  18. 监听JScrollPane按PageUp,PageDown事件
  19. MATLAB算法实战应用案例精讲-【人工智能】Grover量子搜索算法
  20. 学生护眼灯国A与AA哪个牌子好?推荐国AA级的学生护眼台灯

热门文章

  1. ibm aix 抓包命令_在IBM AIX上模拟丢弃的TCP / IP数据包
  2. ristretto255对外API抽象及基于Curve25519的ristretto255层实现
  3. Overleaf提示Misplaced alignment tab character .
  4. C++中atof ,atoi函数用法
  5. 卡耐基《人性的弱点》精华总结
  6. Dubbo3 落地实践及 Mesh 解决方案
  7. 企业级监控平台,监控系统选型
  8. 计算机视觉中的多视图几何<Part0—基础知识:射影几何、变换和估计>(1)
  9. OpenStack搭建私有云一:认证服务
  10. 跑深度学习CV的代码的常用包安装