Android 语音播报功能demo

该功能是基于百度智能云实现的根据文字进行语音播报。

 

1、首先到百度智能云创建语音应用

https://console.bce.baidu.com/ai/

Android 语音播报功能demo_第1张图片

 

 填写包名创建百度语音应用,获取AppID,API Key,Secret Key

 

2、导入资源文件。语音jar,assets语音库,jni系统文件

Android 语音播报功能demo_第2张图片

 

 3、创建工具类

Android 语音播报功能demo_第3张图片

 

4、activity初始化语音引擎

protected String appId = "1437140";

protected String appKey = "uGcgyU1kGN7MpjAeiFgGMKw";

protected String secretKey = "6qggndsynW9pfNlj7fe23Tf1SlIVu0q";
protected EditText mInput;
protected void initialTts() {
    LoggerProxy.printable(true); // 日志打印在logcat中
    // 设置初始化参数
    // 此处可以改为 含有您业务逻辑的SpeechSynthesizerListener的实现类
    SpeechSynthesizerListener listener = new UiMessageListener(mainHandler);

    Map params = getParams();


    // appId appKey secretKey 网站上您申请的应用获取。注意使用离线合成功能的话,需要应用中填写您app的包名。包名在build.gradle中获取。
    InitConfig initConfig = new InitConfig(appId, appKey, secretKey, ttsMode, params, listener);

    // 如果您集成中出错,请将下面一段代码放在和demo中相同的位置,并复制InitConfig 和 AutoCheck到您的项目中
    // 上线时请删除AutoCheck的调用
    AutoCheck.getInstance(getApplicationContext()).check(initConfig, new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 100) {
                AutoCheck autoCheck = (AutoCheck) msg.obj;
                synchronized (autoCheck) {
                    String message = autoCheck.obtainDebugMessage();
                    toPrint(message); // 可以用下面一行替代,在logcat中查看代码
                    // Log.w("AutoCheckMessage", message);
                }
            }
        }

    });
    synthesizer = new NonBlockSyntherizer(this, initConfig, mainHandler); // 此处可以改为MySyntherizer 了解调用过程
}

开始播报内容

播报EditText输入框的文字内容

private void speak() {
    mShowText.setText("");
    String text = mInput.getText().toString();
    // 需要合成的文本text的长度不能超过1024个GBK字节。
    if (TextUtils.isEmpty(mInput.getText())) {
        text = "支付宝到账一百万";
        mInput.setText(text);
    }
    // 合成前可以修改参数:
    // Map params = getParams();
    // synthesizer.setParams(params);
    int result = synthesizer.speak(text);
    checkResult(result, "speak");
}

demo链接:https://download.csdn.net/download/meixi_android/11193641

在线回复bug:QQ1085220040

附:切换声音类型dialog

AlertDialog.Builder builder = new AlertDialog.Builder(SynthActivity.this, android.R.style.Theme_Holo_Light_Dialog);
builder.setTitle("引擎空闲时切换");
final Map map = new LinkedHashMap<>(4);
map.put("离线女声", OfflineResource.VOICE_FEMALE);
map.put("离线男声", OfflineResource.VOICE_MALE);
map.put("离线度逍遥", OfflineResource.VOICE_DUXY);
map.put("离线度丫丫", OfflineResource.VOICE_DUYY);
final String[] keysTemp = new String[4];
final String[] keys = map.keySet().toArray(keysTemp);
builder.setItems(keys, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        loadModel(map.get(keys[which]));
        Log.i("lgq","....."+map.get(keys[which]));
    }
});
builder.show();

 

你可能感兴趣的:(移动开发)