ReactNative集成百度语音合成

32次阅读

共计 2447 个字符,预计需要花费 7 分钟才能阅读完成。

语音交互是现今应用最多的智能交互方式,在人工智能越来越火的当下应用十分广泛,所以特别针对车内环境,在驾驶员安心驾驶的时候,用语音可以安全的进行操控。恰好新版项目中要加入语音播报功能,因为我们的应用和司机有关,于是在网上搜索一些解决方案,目前有阿里云,百度云以及科大讯飞还有一些其他公司提供的相关解决方案。不同方案之间的对比,可以参考下面的文章:智能语音方案比对介绍 http://www.jianshu.com/p/95d9…
目前计划采用的是百度云提供的语音合成技术:有如下几个优势:
1. 支持多种语言多种音色支持中文、英文混读,男声、女声、童声、情感男声可供选择,更支持语速、音调、音量、音频码率设置,让应用拥有最甜美和最磁性的声音 2. 支持离线在线融合模式 SDK 可以根据当前网络状况及指令的类型,自动判断使用本地引擎还是云端引擎进行语音合成 3. 合成效果流畅自然语音合成技术业界领先,合成效果接近真人发声,流畅自然,且极具表现力,给你最舒适的听觉体验 4. 免费额度高

好了,不给它打广告了,开始整干货,下面是集成步骤。先贴上百度云官网文档地址:http://ai.baidu.com/docs#/TTS…1. 创建一个 ReactNative 工程,不会的自行百度吧;或者在已有项目中,总之你得有个 RN 项目 2. 登录网址百度语音开发者平台注册账号并创建应用:进入控制台 –> 选择产品服务 –> 选择人工智能 –> 创建应用 –> 填写有关应用信息

同理点击查看 Key,查看当前应用的所需的主要三个参数 AppId APIKey SecretKey,后面会用得到.
3. 下载相关平台的 SDK

4. 解压后
BaiduTtsSample: 为一个模板代码,eclipse 版本的,我就是借鉴里面稍微修改了一下。data: 为百度语音资源,声音文件,它为一个必须文件,中英文资源。最后使用是放在手机物理存储下的。doc: 为一个 pdf 的简介使用方法以及网络的使用 Api 文档说明。我们用不到,可以下去读一读的。libs: 为资源 jar 包和语音引擎文件.so 库。也是我们集成必须使用到的。5. 接下来的步骤是,我们将语音资源和 libs 下的资源方法 android studio 我们的项目里面。将 data 里面的文件全部复制到 Asserts 文件夹下。将 libs 下的两个 jar 文件复制到项目的 libs 中, 并添加 Add As library 关联。在项目中的 main 路径下新建一个 jnilibs 文件夹,用于放置剩余的 libs 下的文件。现在的工程目录是 (Android)

6. 添加权限 <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” />
7. 到此,集成就结束了,接下来就是如何使用。当然可以参照 BaiduTtsSample 文件夹下的 src 里面的一个 MainActvity 的写法。也可以按照下面的总结的工具类来直接使用,方便快捷省事。参考文章:http://blog.csdn.net/bk120/ar…————————– 华丽的分割线 —————————- 因为咱们的的项目是 ReactNative,所以要进行原生和 js 的交互 1. 创建一个原生模块是一个继承了 ReactContextBaseJavaModule 的 Java 类,它可以实现一些 JavaScript 所需的功能。

2. 注册模块

3. 在这个 package 需要在 MainApplication.java 文件的 getPackages 方法中提供。这个文件位于你的 react-native 应用文件夹的 android 目录中。

4. 为了让你的功能从 JavaScript 端访问起来更为方便,通常我们都会把原生模块封装成一个 JavaScript 模块。这不是必须的,但省下了每次都从 NativeModules 中获取对应模块的步骤。这个 JS 文件也可以用于添加一些其他 JavaScript 端实现的功能。

5. 使用

6. 集成常见问题:百度语音文档中心:http://yuyin.baidu.com/docs/t…
Oc 百度语音的 ios 集成:http://blog.csdn.net/qq_40691…iOS 一行代码简单调用百度语音合成:http://www.jianshu.com/p/1c4a…
ps: 使用 Android 原生自带的语音合成:https://github.com/SolveBugs/…https://blog.csdn.net/csdn_bl…

正文完
 0