您的位置:首页 > 其它

自然语言交流系统 phxnet团队 创新实训 个人博客 (四)

2017-05-18 22:26 399 查看
关于项目中个使用到的自然语言语音转文字&文字转语言的个人总结:

VOICE_NAME, "xiaoyan");speechSynthesizer.setParameter(SpeechConstant.SPEED, "50");//语速 speechSynthesizer.setParameter(SpeechConstant.VOLUME, "50");//音量,范围是0---100 speechSynthesizer.setParameter(SpeechConstant.PITCH, "50"); } /** * percent 缓冲进度 0-100 * beginPos 缓冲音频在文中的开始位置 * endPos 缓冲音频在文中的末位置 * info 附加信息 * */ @Override public void onBufferProgress(int percent, int beginPos, int endPos, String info) { } //会话结束回调接口,无错误时err为null @Override public void onCompleted(SpeechError err) { } //开始播放 @Override public void onSpeakBegin() { } //暂停播放 @Override public void onSpeakPaused() { } /** * percent 播放进度 0-100 * beginPos 播放音频在文中的开始位置 * endPos 播放音频在文中的末位置 * */ @Override public void onSpeakProgress(int percent, int beginPos, int endPos) { } //恢复 播放 @Override public void onSpeakResumed() { }}

最后的是把你的话转为文字

package zy.voice;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Environment;
import android.text.TextUtils;
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.SpeechRecognizer;
import com.iflytek.cloud.speech.SpeechUser;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;
import com.iflytek.sunflower.FlowerCollector;
public class VoiceToWord extends Activity {
private Context context;
private Toast mToast;
// 识别窗口
private RecognizerDialog iatDialog;
// 识别对象
private SpeechRecognizer iatRecognizer;
// 缓存,保存当前的引擎参数到下一次启动应用程序使用.
private SharedPreferences mSharedPreferences;
private RecognizerDialogListener recognizerDialogListener = null;
public VoiceToWord(Context context, String APP_ID) {
// TODO Auto-generated constructor stub
// 用户登录
this.context = context;
// 初始化缓存对象.
mSharedPreferences = context.getSharedPreferences(
context.getPackageName(), MODE_PRIVATE);
SpeechUser.getUser().login(context, null, null, "appid=" + APP_ID,
listener);
// 初始化听写Dialog,如果只使用有UI听写功能,无需创建SpeechRecognizer
iatDialog = new RecognizerDialog(context);
mToast = Toast.makeText(context, "", Toast.LENGTH_LONG);
// 初始化听写Dialog,如果只使用有UI听写功能,无需创建SpeechRecognizer
iatDialog = new RecognizerDialog(context);
iatDialog.setCanceledOnTouchOutside(false);
}
public VoiceToWord(Context context, String APP_ID,
RecognizerDialogListener recognizerDialogListener) {
this.context = context;
SpeechUser.getUser().login(context, null, null, "appid=" + APP_ID,
listener);
// 初始化听写Dialog,如果只使用有UI听写功能,无需创建SpeechRecognizer
iatDialog = new RecognizerDialog(context);
mToast = Toast.makeText(context, "", Toast.LENGTH_LONG);
// 初始化听写Dialog,如果只使用有UI听写功能,无需创建SpeechRecognizer
iatDialog = new RecognizerDialog(context);
// 在dialog外面不能取消
iatDialog.setCanceledOnTouchOutside(false);
// 初始化缓存对象.
mSharedPreferences = context.getSharedPreferences(
context.getPackageName(), MODE_PRIVATE);
this.recognizerDialogListener = recognizerDialogListener;
}
public void GetWordFromVoice() {
boolean isShowDialog = mSharedPreferences.getBoolean("iat_show", true);
if (isShowDialog) {
// 显示语音听写Dialog.
showIatDialog();
} else {
if (null == iatRecognizer) {
iatRecognizer = SpeechRecognizer.createRecognizer(this);
// 设置返回结果格式
//    iatRecognizer.setParameter(SpeechConstant.RESULT_TYPE, "json");
//
//    String lag = mSharedPreferences.getString(
//      "iat_language_preference", "mandarin");
//    if (lag.equals("en_us")) {
//     // 设置语言
//     iatRecognizer
//       .setParameter(SpeechConstant.LANGUAGE, "en_us");
//    } else {
//     // 设置语言
//     iatRecognizer
//       .setParameter(SpeechConstant.LANGUAGE, "zh_cn");
//     // 设置语言区域
//     iatRecognizer.setParameter(SpeechConstant.ACCENT, lag);
//    }
//    // 设置语音前端点
//    iatRecognizer.setParameter(SpeechConstant.VAD_BOS,
//      mSharedPreferences.getString("iat_vadbos_preference",
//        "4000"));
//    // 设置语音后端点
//    iatRecognizer.setParameter(SpeechConstant.VAD_EOS,
//      mSharedPreferences.getString("iat_vadeos_preference",
//        "1000"));
//    // 设置标点符号
//    iatRecognizer.setParameter(SpeechConstant.ASR_PTT,
//      mSharedPreferences
//        .getString("iat_punc_preference", "1"));
//    // 设置音频保存路径
//    iatRecognizer.setParameter(SpeechConstant.ASR_AUDIO_PATH,
//      Environment.getExternalStorageDirectory()
//        + "/iflytek/wavaudio.pcm");//需在清单文件里添加sd卡的权限
}
if (iatRecognizer.isListening()) {
iatRecognizer.stopListening();
// ((Button)
// findViewById(android.R.id.button1)).setEnabled(false);
} else {
}
}
}

/**
* 显示听写对话框.
*
* @param
*/
public void showIatDialog() {
if (null == iatDialog) {
// 初始化听写Dialog
iatDialog = new RecognizerDialog(this);
}
// 获取引擎参数
String engine = mSharedPreferences.getString("iat_engine", "iat");
// 清空Grammar_ID,防止识别后进行听写时Grammar_ID的干扰
iatDialog.setParameter(SpeechConstant.CLOUD_GRAMMAR, null);
// 设置听写Dialog的引擎
iatDialog.setParameter(SpeechConstant.DOMAIN, engine);
// 设置采样率参数,支持8K和16K
String rate = mSharedPreferences.getString("sf", "sf");
if (rate.equals("rate8k")) {
iatDialog.setParameter(SpeechConstant.SAMPLE_RATE, "8000");
} else {
iatDialog.setParameter(SpeechConstant.SAMPLE_RATE, "16000");
}
if (recognizerDialogListener == null) {
getRecognizerDialogListener();
}
// 显示听写对话框
iatDialog.setListener(recognizerDialogListener);
iatDialog.show();
}
private void getRecognizerDialogListener() {
/**
* 识别回调监听器
*/
recognizerDialogListener = new MyRecognizerDialogLister(context);
}
/**
* 用户登录回调监听器.
*/
private SpeechListener listener = new SpeechListener() {
@Override
public void onData(byte[] arg0) {
}
@Override
public void onCompleted(SpeechError error) {
if (error != null) {
System.out.println("user login success");
}
}
@Override
public void onEvent(int arg0, Bundle arg1) {
}
};
protected void onDestroy() {
// 退出时释放连接
iatRecognizer.cancel();
iatRecognizer.destroy();
};
@Override
protected void onResume() {
// 移动数据统计分析
FlowerCollector.onResume(this);
FlowerCollector.onPageStart("VoiceToWord");
super.onResume();
}
@Override
protected void onPause() {
// 移动数据统计分析
FlowerCollector.onPageEnd("VoiceToWord");
FlowerCollector.onPause(this);
super.onPause();
}
}



最后别忘了添加权限

 

 

如果您愿意花几块钱请我喝杯茶的话,可以用手机扫描下方的二维码,通过 支付宝 捐赠。我会努力写出更好的文章。 
(捐赠不显示捐赠者的个人信息,如需要,请注明您的联系方式) 
Thank you for your kindly donation!!

 

 



 
 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐