科大讯飞

要下载jar包,才可以使用

 

 

最近需要使用到语音播报的功能,在百度七武器百度语音科大讯飞的语音当中考虑到准确性和专业性,选择了科大讯飞科大讯飞所提供的android开发sdk有两种一种是集成了自身产品语音+的sdk,功能比较强大但是会初始化语音服务模块;另一种是纯开发sdk不集成产品只需要导入相应jar包就可以使用。考虑到只用到了语音合成的技术所以选择了第二种sdk。
ps:要不是他sdk的官方文档写的太差了,也不会写这篇东西。
1,首先需要的jar包,一个是Msc.jar和libmsc.so文件(需要放到armeabi文件夹当中)。在官网中可以下载。
2,在AndroidManifest文件当中填写需要的权限。
<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"/>
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;

@Override
protected 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() {
@Override
public void onInit(int code) {
Log.d("mySynthesiezer:", "InitListener init() code = " + code);
}
};

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (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() {
@Override
public void onSpeakBegin() {
}
@Override
public void onSpeakPaused() {
}
@Override
public void onSpeakResumed() {
}
@Override
public void onBufferProgress(int percent, int beginPos, int endPos,
String info) {
}
@Override
public void onSpeakProgress(int percent, int beginPos, int endPos) {
}

@Override
public void onCompleted(SpeechError error) {
if(error!=null)
{
Log.d("mySynthesiezer complete code:", error.getErrorCode()+"");
}
else
{
Log.d("mySynthesiezer complete code:", "0");
}
}
};

}
posted @ 2016-07-28 10:49  阿金好掂  阅读(379)  评论(0编辑  收藏  举报