让你的App有声音

之前写过一篇文章,当时的需求是播放英文,最后使用的是Androi自带的TextToSpeech类来实现(http://blog.csdn.net/weixin_38251977/article/details/69944088),虽然播放英文效果还行,但是对中文的支持不是很好。最近新项目中又遇到一个语音的需求,这次是中英文都有,各种对比之后,选择了百度语音离在线融合SDK,播放效果非常好,关键是免费。趁着有空,记录下集成步骤,抽成一个demo,下次有需要的时候可以直接套用。 一 前提步骤 首先,需要在百度语音官网注册一个账号,然后创建应用,创建一个应用的大致步骤如下图:

Paste_Image.png

注册完应用后,根据我们给的包名,会生成对应的appid,apikey和secretkey,这几个参数在我们代码中会使用到。 二 代码集成 1.拷贝资源文件 在上边儿注册应用的时候,我们已经把SDK下载下来了,在里边儿我们找到需要的jar包,so文件以及语音模型拷贝到我们的项目中,各资源文件对应目录如下:

Paste_Image.png

因为我的项目中只有armeabi架构,所以只拷贝了对应的资源,这个需要根据实际情况添加。

2.配置build文件 将jar包等拷贝到项目中后,还需要配置工程目录下的build.gradle文件以添加依赖。 首先,在android闭包中添加:

android {

   sourceSets{
       main{
           jniLibs.srcDirs=['libs']
       }
   }
}

这样Android Studio就能识别我们放在libs文件夹下的so文件了,不然的话运行的时候会报找不到so文件的错误。 然后,在dependencies闭包中添加:

compile files('libs/com.baidu.tts_2.3.0.jar')

到这里我们可以同步一下项目了,然后就可以在代码中使用jar包提供的方法了。

3.添加权限 在清单文件中声明所需的权限:

<uses-permission android:name="android.permission.INTERNET" />

   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_SETTINGS" />
   <uses-permission android:name="android.permission.READ_PHONE_STATE" />
   <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

4.demo 关于具体的使用方法,这里抽成了一个demo,代码我已经测试过了,运行没有问题(demo里只支持armeabi框架,你可以将官方sdk的所有架构对应的so文件都拷贝进去),代码址:https://github.com/SolveBugs/BaiduTTSDemo

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猫哥学前班

猫哥网络编程系列:HTTP PEM 万能调试法

注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新。 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么...

3946
来自专栏FreeBuf

滥用Edge浏览器的“恶意站点警告”特性,实现地址栏欺骗

前言 在过去的几个月里,我们看到使用这种以技术支撑的骗术日益增多,用户的浏览器会被辣眼睛的红屏以及类似”你的电脑可能存在风险”的提示消息”锁定”。当然,这种情形...

2309
来自专栏玩转JavaEE

SpringBoot中使用Freemarker构建邮件模板

本文是vhr系列的第十三篇,项目地址:https://github.com/lenve/vhr 当邮件内容比较简单的时候,我们可能一行字符串就能表达所有意思...

3586
来自专栏腾讯移动品质中心TMQ的专栏

Android内存泄露测试不再蓝瘦,香菇

在进行Android内存泄露分析时,面对成千上万个对象,你是否蓝瘦,香菇?作为测试人员你在进行内存泄露测试之后,是否有勇气告诉开发同事程序已经没有内存泄露,可以...

2777
来自专栏Java帮帮-微信公众号-技术文章全总结

01.WebService_基础知识

01.WebService_基础知识 WebService基础学习(一)—基础知识 一、WebService 1.什么是WebService Web ...

3829
来自专栏小特工作室

工作流组件示例(全部开源)

1.概述 1.1简介 本文档旨在帮助开发人员快速使用工作流组件,完成OA或审批等涉及到工作流组件的系统开发工作 1.2组件构成 1.2.1组件层次图 ? 组...

72210
来自专栏EAWorld

微服务架构下分布式Session管理

一、应用架构变迁下的Session管理 1.1 单体架构 1.2 分布式架构 1.3 微服务架构 二、微服务架构下分布...

4228
来自专栏IT大咖说

vSAN架构解析与6.7功能介绍

内容来源:2018 年 7 月 17 日,VMware大中华区原厂高级技术讲师史峻在“VMware直播分享 第二期”进行《vSAN架构解析与6.7功能介绍》演讲...

2443
来自专栏一“技”之长

iOS10通知框架UserNotification理解与应用

        关于通知,无论与远程Push还是本地通知,以往的iOS系统暴漏给开发者的接口都是十分有限的,开发者只能对标题和内容进行简单的定义,至于UI展示和...

1342
来自专栏腾讯社交用户体验设计

高效编写微信小程序-你还在手动创建新项目吗?

2463

扫码关注云+社区

领取腾讯云代金券