开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
语音技术

    集成指南

    • DEMO 中已经集成了 SDK。您可以参考DEMO,集成SDK。
    • 集成前,请先测通DEMO,了解调用原理。
    • 如果您自己代码过于复杂,可以使用一个helloworld项目了解集成过程。

    AndroidManifest.xml 文件

    设置权限:

    <!-- 必要的权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 非必要权限 -->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

    支持level 28以上编译

    <uses-library android:name="org.apache.http.legacy" android:required="false"/>

    设置AppId, AppKey, SecretKey

    mSpeechSynthesizer.setAppId(appId);
    mSpeechSynthesizer.setApiKey(appKey, secretKey);

    android 6.0 以上版本权限申请

    以下代码可以在demo中查找

    /**
     * android 6.0 以上需要动态申请权限
      */
     private void initPermission() {
         String permissions[] = {
                 Manifest.permission.INTERNET,
                 Manifest.permission.ACCESS_NETWORK_STATE,
                 Manifest.permission.MODIFY_AUDIO_SETTINGS,
                 Manifest.permission.ACCESS_WIFI_STATE,
                 Manifest.permission.CHANGE_WIFI_STATE
         };
    
         ArrayList<String> toApplyList = new ArrayList<String>();
    
         for (String perm : permissions) {
             if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) {
                 toApplyList.add(perm);
                 //进入到这里代表没有权限.
             }
         }
         String tmpList[] = new String[toApplyList.size()];
         if (!toApplyList.isEmpty()) {
             ActivityCompat.requestPermissions(this, toApplyList.toArray(tmpList), 123);
         }
    
     }
    
    
     @Override
     public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
         // 此处为android 6.0以上动态授权的回调,用户自行实现。
     }

    引入jar包

    com.baidu.tts_2.6.*.jar 库 将app/libs/com.baidu.tts_2.6.xxxxxx.jar复制到您的项目的同名目录中。确认在build.gradle文件中引入。

    复制NDK 架构目录

    1. 将 app/src/main/jniLibs 下armeabi等5个目录,复制到您的项目的同名目录中。
    2. 如与第三方库集成,至少要保留armeabi目录。如第三方库有7个架构目录,比语音合成SDK多出2个目录 mips和mips64,请将mips和mips64目录删除,剩下5个同名目录合并。
    3. 如第三方库仅有armeabi这一个目录,请将语音合成SDK的额外4个目录如armeabi-v7a删除,合并armeabi目录下的so。 即目录取交集,so文件不可随意更改所属目录。
    4. 打包成apk文件,按照zip格式解压出libs目录可以验证。
    5. 运行时 getApplicationInfo().nativeLibraryDir 目录下查看是否有完整so文件。 特别是系统app需要手动push so文件到这个目录下。

    build.gradle 文件及包名确认

    1. 根目录下build.gradle确认下gradle的版本。
    2. app/build.gradle 确认下 applicationId 包名是否与官网申请应用时相一致(离线功能需要)。 demo的包名是"com.baidu.tts.sample"。
    3. 确认 compileSdkVersion buildToolsVersion 及 targetSdkVersion, API LEVEL 28的编译产物在android 9.0系统上运行需要在app/src/main/AndroidManifest.xml 里添加 <uses-library android:name="org.apache.http.legacy" android:required="false"/>

    proguard 混淆文件

        -keep class com.baidu.tts.**{*;}
        -keep class com.baidu.speechsynthesizer.**{*;}

    BEST PRACTICE

    • 请先测通DEMO,了解DEMO的功能,代码的运行原理后再集成。DEMO有bug,请立即反馈。
    • 对应任何第三方库,从一开始集成,边开发边测试,不要等所有功能都开发完再集成。否则一旦有问题,难以隔离排查。
    • 有问题先与DEMO做对比。DEMO有bug,请查看错误码文档,如无法解决请立即反馈;DEMO无bug,自身代码有问题,请设置同样的输入参数后,对比两边代码及日志,自行排查问题。
    上一篇
    简介
    下一篇
    接口及调用过程