700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 科大讯飞语音合成(最新版本)

科大讯飞语音合成(最新版本)

时间:2021-01-29 17:38:10

相关推荐

科大讯飞语音合成(最新版本)

科大讯飞在线语音合成(最新版本)

配置manifest,不多讲了,自己看文档去。在application里面初始化:

public class MyAPP extends Application {@Overridepublic void onCreate() {super.onCreate();SpeechUtility.createUtility(MyAPP.this, SpeechConstant.APPID + "=填写自己appid"); //初始化}}

3 . 导入SDK

4.(我被坑惨了的地方,妈卖批~)

在build.gradle(Module:app)里面配置ndk和jni

defaultConfig {applicationId "com.jzt.mykdxf"minSdkVersion 15targetSdkVersion 25versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"//配置.so文件!ndk {//选择要添加的对应cpu类型的.so库。abiFilters 'x86', 'armeabi', 'armeabi-v7a', 'armeabi-v8a'}}

5.封装在线语音合成的方法:

/*** Created by Malik J on /6/5.*//*** 语音合成的类 发音人明细/forum.php?mod=viewthread&tid=367** @author kongqw*/public class KqwSpeechCompound {// Log标签private static final String TAG = "KqwSpeechCompound";// 上下文private Context mContext;// 语音合成对象private static SpeechSynthesizer mTts;/*** 发音人*/public final static String[] COLOUD_VOICERS_ENTRIES = {"小燕", "小宇", "凯瑟琳", "亨利", "玛丽", "小研", "小琪", "小峰", "小梅", "小莉", "小蓉", "小芸", "小坤", "小强 ", "小莹","小新", "楠楠", "老孙",};public final static String[] COLOUD_VOICERS_VALUE = {"xiaoyan", "xiaoyu", "catherine", "henry", "vimary", "vixy", "xiaoqi", "vixf", "xiaomei","xiaolin", "xiaorong", "xiaoqian", "xiaokun", "xiaoqiang", "vixying", "xiaoxin", "nannan", "vils",};/*** 构造方法** @param context*/public KqwSpeechCompound(Context context) {Log.d("tag54", "初始化失败,错ss 误码:" );// 上下文mContext = context;// 初始化合成对象mTts = SpeechSynthesizer.createSynthesizer(mContext, new InitListener() {@Overridepublic void onInit(int code) {if (code != ErrorCode.SUCCESS) {Log.d("tag54", "初始化失败,错误码:" + code);}Log.d("tag54", "初始化失败,q错误码:" + code);}});}/*** 开始合成** @param text*/public void speaking(String text) {// 非空判断if (TextUtils.isEmpty(text)) {return;}int code = mTts.startSpeaking(text, mTtsListener);Log.d("tag54","-----"+code+"++++++++++");if (code != ErrorCode.SUCCESS) {if (code == ErrorCode.ERROR_COMPONENT_NOT_INSTALLED) {Toast.makeText(mContext, "没有安装语音+ code = " + code, Toast.LENGTH_SHORT).show();} else {Toast.makeText(mContext, "语音合成失败,错误码: " + code, Toast.LENGTH_SHORT).show();}}}/** 停止语音播报*/public static void stopSpeaking() {// 对象非空并且正在说话if (null != mTts && mTts.isSpeaking()) {// 停止说话mTts.stopSpeaking();}}/*** 判断当前有没有说话** @return*/public static boolean isSpeaking() {if (null != mTts) {return mTts.isSpeaking();} else {return false;}}/*** 合成回调监听。*/private SynthesizerListener mTtsListener = new SynthesizerListener() {@Overridepublic void onSpeakBegin() {Log.i(TAG, "开始播放");}@Overridepublic void onSpeakPaused() {Log.i(TAG, "暂停播放");}@Overridepublic void onSpeakResumed() {Log.i(TAG, "继续播放");}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos, String info) {// TODO 缓冲的进度Log.i(TAG, "缓冲 : " + percent);}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {// TODO 说话的进度Log.i(TAG, "合成 : " + percent);}@Overridepublic void onCompleted(SpeechError error) {if (error == null) {Log.i(TAG, "播放完成");} else if (error != null) {Log.i(TAG, error.getPlainDescription(true));}}@Overridepublic void onEvent(int eventType, int arg1, int arg2, Bundle obj) {}};/*** 参数设置** @return*/private void setParam() {// 清空参数mTts.setParameter(SpeechConstant.PARAMS, null);// 引擎类型 网络mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);// 设置发音人mTts.setParameter(SpeechConstant.VOICE_NAME, COLOUD_VOICERS_VALUE[0]);// 设置语速mTts.setParameter(SpeechConstant.SPEED, "50");// 设置音调mTts.setParameter(SpeechConstant.PITCH, "50");// 设置音量mTts.setParameter(SpeechConstant.VOLUME, "100");// 设置播放器音频流类型mTts.setParameter(SpeechConstant.STREAM_TYPE, "3");// mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, Environment.getExternalStorageDirectory() + "/KRobot/wavaudio.pcm");// 背景音乐 1有 0 无// mTts.setParameter("bgs", "1");}}

6.调用方法:

public class MainActivity extends AppCompatActivity {private EditText edt;private Button btn;private KqwSpeechCompound kqwSpeechCompound;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);edt= (EditText) findViewById(R.id.et_text);btn= (Button) findViewById(R.id.btn);kqwSpeechCompound=new KqwSpeechCompound(this);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {kqwSpeechCompound.speaking(edt.getText().toString().trim());}});}}

OK了~ 这样就可以直接实现在线语音啦~

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