Android中集成讯飞语音,语音转文字以及文字转语音操作
2017-09-30 14:49
387 查看
讯飞语音
* 在讯飞语音开发者平台上http://www.xfyun.cn/doccenter/newer具体准备工作按照开发文档操作。注意的是创建一个项目,appid和adk是一一对应的*在这里,写了一个语音转化为文本,文本转化为语音的工具类VoiceUtils
public class VoiceUtils { /** * 文本转换成语音 */ public static void textToVoice(Context context, String text) { //1.创建SpeechSynthesizer对象, 第一个参数上下文,第二个参数:本地合成时传InitListener SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(context, null); //2.合成参数设置,详见《科大讯飞MSC API手册(Android)》SpeechSynthesizer 类 mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");//设置发音人 mTts.setParameter(SpeechConstant.SPEED, "50");//设置语速 mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围0~100 mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置合成音频保存位置(可自定义保存位置),保存在“./sdcard/iflytek.pcm” //保存在SD卡需要在AndroidManifest.xml添加写SD卡权限 //如果不需要保存合成音频,注释该行代码 mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm"); //3.开始合成,第一个参数就是转成声音的文字,可以自定义 第二个参数是合成监听器对 象。 我们不需要对声音有什么特殊处理,就传null mTts.startSpeaking(text, null); } /** * 语音转换为文本 * * @param context */ public static void voiceToText(final Context context, final EditText view) { RecognizerDialog dialog = new RecognizerDialog(context, null); Log.e("ZHAOYALAN", "DIALOG" + dialog); dialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn"); dialog.setParameter(SpeechConstant.ACCENT, "mandarin"); dialog.setListener(new RecognizerDialogListener() { @Override public void onResult(RecognizerResult recognizerResult, boolean b) { String s = printResult(recognizerResult); view.append(s); //Toast.makeText(context, "监听说话正确", Toast.LENGTH_SHORT).show(); } @Override public void onError(SpeechError speechError) { switch (speechError.getErrorCode()) { case 20001: Toast.makeText(context, "请检查网络", Toast.LENGTH_SHORT).show(); break; case 20016: Toast.makeText(context, "请允许程序获取录音权限", Toast.LENGTH_SHORT).show(); break; case 10118: Toast.makeText(context, "您好像没有说话", Toast.LENGTH_SHORT).show(); break; default: Toast.makeText(context, "异常", Toast.LENGTH_SHORT).show(); break; } } }); dialog.show(); //Toast.makeText(context, "请开始说话", Toast.LENGTH_SHORT).show(); } //回调结果: private static String printResult(RecognizerResult results) { String text = parseIatResult(results.getResultString()); return text; } public static String parseIatResult(String json) { 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(); } }
相关文章推荐
- Android 科大讯飞语音集成,文字转语音
- 讯飞语音集成(语音转文字,文字转语音)
- android MediaCodec 音频解码+讯飞语音 实现本地语音转文字功能
- Android中Calendar与Date的区别以及消除时区对日期操作影响的方法
- Android中Exif的操作以及Camera应用中相关代码优化方案
- java泛型操作复习,以及讲解在android中使用的场景
- android 如何显示软键盘中的搜索以及处理点击搜索却进行了两次操作问题
- Android中Calendar与Date的区别以及消除时区对日期操作影响的方法
- java泛型操作复习,以及讲解在android中使用的场景
- android 改变输入法enter键文字 为搜索 下一个 以及前往
- java泛型操作复习,以及讲解在android中使用的场景
- Android开发集成科大讯飞语音识别+语音合成功能
- Http中Cookie详解以及Android中操作Cookie
- android 语音转换文字(科大讯飞SDK简易封装)
- Android实现加载富文本以及SpannableString、SpannableStringBuilder实现部分文字可以点击,更换颜色
- android 融云 + 科大讯飞 实现仿微信语音消息转换为文字
- 科大讯飞语音转文字以及中文分词的Java测试代码
- 微信 Tinker 在 Android 中集成以及使用
- Android 联系人数据库介绍以及对联系人的基本操作
- android 仿微信聊天界面,以及语音录制功能