100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 文字转语音 两种方法:TextToSpeech 科大讯飞

文字转语音 两种方法:TextToSpeech 科大讯飞

时间:2021-05-12 21:30:15

相关推荐

文字转语音   两种方法:TextToSpeech 科大讯飞

TextToSpeech核心代码:

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);mBinding.setOnClick(this);mTextToSpeech = new TextToSpeech(this,this);}private void speakOut() {if (mTextToSpeech!= null && !mTextToSpeech.isSpeaking()){// Bundle bundle = new Bundle();// bundle.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME,1.0f);//朗读,注意这里三个参数的added in API level 4 四个参数的added in API level 21// mTextToSpeech.speak(mBinding.editText.getText().toString(),TextToSpeech.QUEUE_FLUSH,null);mTextToSpeech.speak(mBinding.editText.getText().toString(),TextToSpeech.QUEUE_FLUSH,null,"");}}/*** 初始化语音播放* @param status*/@Overridepublic void onInit(int status) {if (status == TextToSpeech.SUCCESS){// 设置音调,1.0是常规mTextToSpeech.setPitch(1.0f);//设定语速 ,默认1.0正常语速mTextToSpeech.setSpeechRate(1.0f);int result = mTextToSpeech.setLanguage(Locale.CHINA);if (result == TextToSpeech.LANG_MISSING_DATA|| result == TextToSpeech.LANG_NOT_SUPPORTED){Toast.makeText(this,"数据丢失或不支持",Toast.LENGTH_SHORT).show();}}}

科大讯飞:

@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);mBinding = DataBindingUtil.setContentView(this, R.layout.activity_xun_fei);mBinding.setOnClick(this);//初始化科大讯飞SpeechUtility.createUtility(getApplicationContext(), SpeechConstant.APPID + "=5b558975");mSynthesizer = SpeechSynthesizer.createSynthesizer(this, this);}private void speak() {mSynthesizer.startSpeaking(mBinding.editTextXf.getText().toString(),mSynthesizerListener);}/*合成回调*/private SynthesizerListener mSynthesizerListener = new SynthesizerListener() {@Overridepublic void onSpeakBegin() {//开始播放}@Overridepublic void onBufferProgress(int i, int i1, int i2, String s) {//合成进度}@Overridepublic void onSpeakPaused() {//暂停播放}@Overridepublic void onSpeakResumed() {//继续播放}@Overridepublic void onSpeakProgress(int i, int i1, int i2) {//播放进度}@Overridepublic void onCompleted(SpeechError speechError) {if (speechError == null){//播放完成}else {}}@Overridepublic void onEvent(int i, int i1, int i2, Bundle bundle) {// 以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因// 若使用本地能力,会话id为null}};@Overridepublic void onInit(int i) {if (i != ErrorCode.SUCCESS){return;//初始化失败}mSynthesizer.setParameter(SpeechConstant.ENGINE_MODE, SpeechConstant.MODE_MSC);mSynthesizer.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL);mSynthesizer.setParameter(ResourceUtil.TTS_RES_PATH, getResourcePath());mSynthesizer.setParameter(SpeechConstant.VOICE_NAME, voicerLocal);}

代码较为简单,有不足之处大家可以留言交流

完整代码见GitHub

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