如何实现讯飞语音录入和输出与图灵机器人结合

本文介绍了如何在Android应用中实现讯飞语音录入与图灵机器人输出的结合,通过提供的源码链接,展示了具体实现过程,源码包含多个游戏的集成,尽管结构可能较为混乱,但每个游戏都独立为一个包。
摘要由CSDN通过智能技术生成
我这里直接在图灵机器人实现人与机器人俩天的基础上,调用了讯飞的几个方法在来实现语音的录入与输出,很简单大家可以参考学习
package com.lcmf.robot;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioGroup;
import android.widget.Toast;
import com.iflytek.cloud.ErrorCode;
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.SynthesizerListener;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;
import com.iflytek.cloud.util.ResourceUtil;
import com.iflytek.cloud.util.ResourceUtil.RESOURCE_TYPE;
import com.iflytek.speech.setting.IatSettings;
import com.iflytek.speech.setting.TtsSettings;
import com.iflytek.speech.util.JsonParser;
import com.lcmf.ad.QuitPopAd;
import com.lcmf.ad.SlideWall;
import com.lcmf.menu.MainClass;
import com.lcmf.robot.bean.ChatMessage;
import com.lcmf.robot.bean.ChatMessage.Type;
import com.lcmf.tts.TtsDemo;
import com.zhy.utils.HttpUtils;
//import android.speech.SpeechRecognizer;

public class MainActivity extends Activity implements OnClickListener {
	private static String TAG = MainActivity.class.getSimpleName(); 
	// 语音合成对象
	private SpeechSynthesizer mTts;
	/**
	 * 展示消息的listview
	 */
	// 听写结果内容
	private ListView mChatView;
	// 语音听写对象
	private SpeechRecognizer mIat;
	/**
	 * 文本域
	 */
	private SharedPreferences mSharedPreferences;
	private RecognizerDialog mIatDialog;
	private EditText mMsg;
	private EditText mGetMsg;
	/**
	 * 存储聊天消息
	 */
	
	// 默认云端发音人
	public static String voicerCloud="xiaoyan";
	// 默认本地发音人
	public static String voicerLocal="xiaoyan";
		
	
	// 云端发音人列表
	private String[] cloudVoicersEntries;
	private String[] cloudVoicersValue ;
	
	// 本地发音人列表
	private String[] localVoicersEntries;
	private String[] localVoicersValue ;
	private HashMap<String, String> mIatResults = new LinkedHashMap<String, String>();
	//缓冲进度
	private int mPercentForBuffering = 0;	
	//播放进度
	private int mPercentForPlaying = 0;
	// 云端/本地选择按钮
	private RadioGroup mRadioGroup;
	// 引擎类型
	private String mEngineType = SpeechConstant.TYPE_CLOUD;
	private Toast mToast;
		
		@SuppressLint("ShowToast")
	private List<ChatMessage> mDatas = new ArrayList<ChatMessage>();
	/**
	 * 适配器
	 */
	private ChatMessageAdapter mAdapter;

	private  Handler mHandler = new Handler() {
		public void handleMessage(android.os.Message msg) {
		 ChatMessage from = (ChatMessage) msg.obj;
			mDatas.add(from);
			mAdapter.notifyDataSetChanged();
			mChatView.setSelection(mDatas.size() - 1);
			mGetMsg.setText(from.getMsg().toString());
		};
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.main_chatting);
		initView();
		// 使用SpeechRecognizer对象,可根据回调消息自定义界面;
		mIat = SpeechRecognizer.createRecognizer(this, mInitListener);

		// 初始化听写Dialog,如果只使用有UI听写功能,无需创建SpeechRecognizer
		// 使用UI听写功能,请根据sdk文件目录下的notice.txt,放置布局文件和图片资源
		mIatDialog = new RecognizerDialog(this, mInitListener);
		mAdapter = new ChatMessageAdapter(this, mDatas);
		mChatView.setAdapter(mAdapter);
		// 初始化合成对象
		mTts = SpeechSynthesizer.createSynthesizer(this, mTtsInitListener);
		// 云端发音人名称列表
		cloudVoicersEntries = getResources().getStringArray(R.array.voicer_cloud_entries);
		cloudVoicersValue = getResources().getStringArray(R.array.voicer_cloud_values);		
		// 本地发音人名称列表
		localVoicersEntries = getResources().getStringArray(R.array.voicer_local_entries);
		localVoicersValue = getResources().getStringArray(R.array.voicer_local_values);
		mSharedPreferences = getSharedPreferences(TtsSettings.PREFER_NAME, Activity.MODE_PRIVATE);
		mToast = Toast.makeText(this,"",Toast.LENGTH_SHORT);
		//SpeechRecognizer mIat = SpeechRecognizer.createSpeechRecognizer(this,null);
	    // mIat.setParameter(SpeechConstant.DOMAIN,"iat");
	    // mIat.setParameter(SpeechConstant.LANGUAGE,"zh_cn");
	}
	     @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);
		menu.add(Menu.NONE, Menu.FIRST + 1, 5, "语音设置").setIcon(android.R.drawable.ic_menu_delete);
		menu.add(Menu.NONE, Menu.FIRST + 2, 2, "听写设置").setIcon(android.R.drawable.ic_menu_edit);
		menu.add(Menu.NONE, Menu.FIRST + 3, 6, "选择发音人").setIcon(android.R.drawable.ic_menu_help);
		/*menu.add(Menu.NONE, Menu.FIRST + 4, 1, "添加").setIcon(android.R.drawable.ic_menu_add);
		menu.add(Menu.NONE, Menu.FIRST + 5, 4, "详细").setIcon(android.R.drawable.ic_menu_info_details);
		menu.add(Menu.NONE, Menu.FIRST + 6, 3, "发送").setIcon(android.R.drawable.ic_menu_send);*/
		return true;
	}
	    @Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case Menu.FIRST + 1:
			Toast.makeText(this, "语音设置", Toast.LENGTH_LONG).show();
		Intent intent = new Intent(MainActivity.this,TtsSettings.class);
		startActivity(intent);
			break;
		case Menu.FIRST + 2:
			Toast.makeText(this, "听写设置", Toast.LENGTH_LONG).show();
		Intent intent1 = new Intent(MainActivity.this, IatSettings.class);
		startActivity(intent1);
			break;
		case Menu.FIRST + 3:
			Toast.makeText(this, "选择发音人", Toast.LENGTH_LONG).show();
		showPresonSelectDialog();
			break;
			}
		return false;
	}
		@Override
		public boolean onKeyDown(int keyCode, KeyEvent event) {
			if (keyCode == KeyEvent.KEYCODE_BACK) {
				if (SlideWall.getInstance().slideWallDrawer != null && SlideWall.getInstance().slideWallDrawer.isOpened()) {
					// 如果抽屉式应用墙展示中,则关闭抽屉
					SlideWall.getInstance().closeSlidingDrawer();
				} else {
					// 调用退屏广告
					QuitPopAd.getInstance().show(this);
				}
			}
			return true;
		}
	private void initView() {
		mChatView = (ListView) findViewById(R.id.id_chat_listView);
		mMsg = (EditText) findViewById(R.id.id_chat_msg);
		mGetMsg = (EditText) f
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值