失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android开发 语音识别技术之科大讯飞语音识别(二) — 语音合成

Android开发 语音识别技术之科大讯飞语音识别(二) — 语音合成

时间:2024-07-09 05:36:26

相关推荐

Android开发 语音识别技术之科大讯飞语音识别(二) — 语音合成

接着上一篇的文章,这篇博文介绍的是科大讯飞API中的语音合成,一个简单的demo,主要是对SpeechSynthesizer的操作

同样我们需要科大讯飞语音云平台的账号并创建新应用,具体步骤看语音上一篇博文/xj_xiaojian/article/details/22625477

首先看效果图

项目结构很简单,主要是加入科大讯飞的开发工具包

在清单文件中加入全部权限

<uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><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"/>

布局文件代码

<LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:id="@+id/container"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.xj.audiodemo.MainActivity"tools:ignore="MergeRootFrame" ><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/titlebar_bg"android:gravity="center"android:text="@string/audio_componse"android:textColor="@android:color/white"android:textSize="@dimen/tvsize" /><EditTextandroid:id="@+id/et_content"android:layout_width="match_parent"android:layout_height="180dp"android:layout_marginLeft="8dp"android:layout_marginRight="8dp"android:layout_marginTop="10dp"android:background="@drawable/logo"android:gravity="top"android:hint="@string/componse_content" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="8dp"android:layout_marginRight="8dp"android:layout_marginTop="10dp"android:background="@drawable/btn_effect"android:onClick="start"android:text="@string/start_componse" /></LinearLayout>

MainActivity代码

package com.xj.audiocomponse;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.text.TextUtils;import android.view.View;import android.view.Window;import android.view.inputmethod.EditorInfo;import android.widget.EditText;import android.widget.Toast;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;public class MainActivity extends ActionBarActivity {private EditText et_content;//合成对象private SpeechSynthesizer synthesizer;//提示框private Toast toast;//记录播放状态 0初始状态 1正在播放private int state = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);loginAudio();init();}private void loginAudio() {SpeechUser.getUser().login(this, null, null, "appid="+getString(R.string.app_id), loginListener);}private void init() {toast = Toast.makeText(this, "开始", Toast.LENGTH_LONG);et_content = (EditText) findViewById(R.id.et_content);//设置editText输入格式et_content.setInputType(EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE);//初始化合成对象synthesizer = SpeechSynthesizer.createSynthesizer(this);}public void start(View view){String content = et_content.getText().toString().trim();if(state == 0){startSynthesizer(content);}}/*** 开始合成语音*/private void startSynthesizer(String text){if(null == synthesizer){synthesizer = SpeechSynthesizer.createSynthesizer(this);}//设置合成发音人 可选:xiaoyan xiaoyu vixy vixq等synthesizer.setParameter(SpeechConstant.VOICE_NAME, "xiaoyu");//设置语速 0~ 100synthesizer.setParameter(SpeechConstant.SPEED, "50");//设置音量 0~ 100synthesizer.setParameter(SpeechConstant.VOLUME, "80");//进行语音合成synthesizer.startSpeaking(text, mSynthesizerListener);}/*** 用户的登陆的回调函数*/private SpeechListener loginListener = new SpeechListener() {@Overridepublic void onEvent(int arg0, Bundle arg1) {}@Overridepublic void onData(byte[] arg0) {}//登陆完成返回的结果@Overridepublic void onCompleted(SpeechError error) {if(null != error){Toast.makeText(MainActivity.this, com.xj.audiocomponse.R.string.login_error, Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this, com.xj.audiocomponse.R.string.login_success, Toast.LENGTH_SHORT).show();}}};/*** 语音合成的回调函数*/private SynthesizerListener mSynthesizerListener = new SynthesizerListener() {//恢复播放的回调接口@Overridepublic void onSpeakResumed() {}//播放进度的回调接口@Overridepublic void onSpeakProgress(int arg0, int arg1, int arg2) {}//暂停播放的回调接口@Overridepublic void onSpeakPaused() {}//开始播放的回调接口@Overridepublic void onSpeakBegin() {showToast("开始播放");}//播放结束的毁掉函数@Overridepublic void onCompleted(SpeechError error) {if(error == null){showToast("播放完成");}else{//显示播放错误信息showToast(error.getPlainDescription(true));}//将state状态值为0state = 0;}//缓冲进度回调接口@Overridepublic void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {}};/*** 显示土司* @param string*/private void showToast(String string){if(!TextUtils.isEmpty(string)){toast.setText(string);toast.show();}}}

本程序员自己开发的两款小应用,欢迎大家试玩

《史上最牛的手相大师》 在安卓市场,91,百度手机助手,360手机助手,豌豆荚,应用宝已上线

豌豆荚/apps/com.example.handmoney

安卓市场/appinfo/com.example.handmoney

百度手机助手/a/item?docid=6800908&pre=web_am_se

《史上最牛的人脸评分仪》 在在安卓市场,91,百度手机助手,360手机助手,豌豆荚已上线

豌豆荚/apps/com.xj.facerecognition

安卓市场/appinfo/com.xj.facerecognition

百度手机助手/a/item?docid=6802582&pre=web_am_se

如果觉得《Android开发 语音识别技术之科大讯飞语音识别(二) — 语音合成》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。