百姓大小事,一呼百应!

百姓网 | 百姓知道

通讯通信

安卓科大讯飞在线语音合成能否计算播报时间

安卓科大讯飞在线语音合成能否计算播报时间

1 个回答

  • 剩下De余温Lv | 2017-10-06 15:24:53

    最近需要使用到语音播报的功能,在百度七武器百度语音和科大讯飞的语音当中考虑到准确性和专业性,选择了科大讯飞。科大讯飞所提供的android开发sdk有两种一种是集成了自身产品语音+的sdk,功能比较强大但是会初始化语音服务模块;另一种是纯开发sdk不集成产品只需要导入相应jar包就可以使用。考虑到只用到了语音合成的技术所以选择了第二种sdk。ps:要不是他sdk的官方文档写的太差了,也不会写这篇东西。1,首先需要的jar包,一个是Msc.jar和libmsc.so文件(需要放到armeabi文件夹当中)。在官网中可以下载。2,在AndroidManifest文件当中填写需要的权限。3,在混淆打包的时候需要添加-keep class com.iflytek.**{*;},4,在代码当中的使用:package com.tts.demo;import com.iflytek.cloud.ErrorCode;import com.iflytek.cloud.InitListener;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechError;import com.iflytek.cloud.SpeechSynthesizer;import com.iflytek.cloud.SpeechUtility;import com.iflytek.cloud.SynthesizerListener;import android.os.Bundle;import android.app.Activity;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener{private SpeechSynthesizer mySynthesizer;private Button tts_Button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tts_Button = (Button) findViewById(R.id.tts_button);tts_Button.setOnClickListener(this);/*在使用语音平台上传应用包的时候会自定生成一个appid 应该使用与包相对应的appid在申请提交后没有次数的限制*语音初始化,在使用应用使用时需要初始化一次就好,如果没有这句会出现10111初始化失败SpeechUtility.createUtility(MainActivity.this, "appid=51e8ae25");//处理语音合成关键类mySynthesizer = SpeechSynthesizer.createSynthesizer(this, myInitListener);}private InitListener myInitListener = new InitListener() {@Overridepublic void onInit(int code) {Log.d("mySynthesiezer:", "InitListener init() code = " + code);}};@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()){case R.id.tts_button://设置发音人mySynthesizer.setParameter(SpeechConstant.VOICE_NAME,"xiaoyan");//设置音调mySynthesizer.setParameter(SpeechConstant.PITCH,"50");//设置音量mySynthesizer.setParameter(SpeechConstant.VOLUME,"50");int code = mySynthesizer.startSpeaking("欢迎使用语音导航!", mTtsListener);Log.d("mySynthesiezer start code:", code+"");break;default:break;}}private SynthesizerListener mTtsListener = new SynthesizerListener() {@Overridepublic void onSpeakBegin() {}@Overridepublic void onSpeakPaused() {}@Overridepublic void onSpeakResumed() {}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos,String info) {}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {}@Overridepublic void onCompleted(SpeechError error) {if(error!=null){Log.d("mySynthesiezer complete code:", error.getErrorCode()+"");}else{Log.d("mySynthesiezer complete code:", "0");}}};}

    本问答由剩下De余温Lv提供

* 本站部分内容来源自网络,仅作分享之用,侵删。