需求:采用高德导航SDK实现路线导航,并且实现语音播报导航
问题:高德导航语音合成开发指南中,建议采用的科大讯飞在线语音合成存在次数限制,远远达不到生产环境的需求量
解决:采用百度离在线语音识别 Android SDK

一、科大讯飞语音合成使用次数有限

高德导航语音合成开发指南中,建议采用的科大讯飞在线语音合成,兼容性好,且使用简单,查看高德导航demo,在接入科大讯飞在线语音合成SDK后,只要一行代码就能实现语音合成播放:

@Overridepublic void onGetNavigationText(String s) {amapTTSController.onGetNavigationText(s);}

当然得先初始化:

        // 科大讯飞在线语音合成初始化// SpeechUtils.getInstance(this).speakText();系统自带的语音播报amapTTSController = AmapTTSController.getInstance(getApplicationContext());amapTTSController.init();

但是存在次数限制:

Dear:感谢您致信和支持讯飞开放平台!是的,您的应用集成上线前需要提交审核,审核通过后可提额到2万次/日的交互次数。祝您工作愉快~

远远不够本公司产品的需求量,买套餐又有点小贵,没办法只能使用第三方的语音合成SDK。

二、百度语音合成无限制

应用需要先在百度云平台进行注册,后添加相关功能:

其实是有初始次数限制的,但只要申请提高配额,就可以无限制合成:

三、接入百度离在线语音识别SDK

这里有个问题,离在线语音识别SDK总是下载到一半就断掉了,下载了N次都没有成功:

只能去社区提问:
离在线融合SDK 不能下载 http://ai.baidu.com/forum/topic/show/497323

然后找到了这个下载地址:
http://bos.nj.bpc.baidu.com/v1/audio/Baidu-TTS-Android-2.3.2-2017-12-28.zip

然后呢,这个demo的SDK版本都没有我在百度 github上找到的百度语音示例demo版本新:

不过还好,我还沉浸于“机智的我居然想到去github找”的成就感中,没有发飙:
https://github.com/baidu/speech-samples

接入流程:百度语音文档中心 + 百度语音示例demo

1、引入jar包

2、引入库文件

3、设置权限

<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.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

4、百度离在线语音合成初始化

    /*** 百度离在线语音合成初始化*/private void initialTts() {this.mSpeechSynthesizer = SpeechSynthesizer.getInstance();this.mSpeechSynthesizer.setContext(this);this.mSpeechSynthesizer.setSpeechSynthesizerListener(this);// TODO 选择TtsMode.ONLINE 不需要设置以下参数; 选择TtsMode.MIX 需要设置下面2个离线资源文件的路径// TODO 因为离线功能需要手动将assets目录下的3个dat文件复制到该目录,大大增加了app大小,所以建议不采用// 文本模型文件路径 (离线引擎使用), 注意TEXT_FILENAME必须存在并且可读// this.mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_TEXT_MODEL_FILE, mSampleDirPath + "/" + TEXT_MODEL_NAME);// 声学模型文件路径 (离线引擎使用), 注意TEXT_FILENAME必须存在并且可读// this.mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_SPEECH_MODEL_FILE, mSampleDirPath + "/" + SPEECH_FEMALE_MODEL_NAME);// 本地授权文件路径,如未设置将使用默认路径.设置临时授权文件路径,LICENCE_FILE_NAME请替换成临时授权文件的实际路径,仅在使用临时license文件时需要进行设置,如果在[应用管理]中开通了正式离线授权,不需要设置该参数,建议将该行代码删除(离线引擎)// 如果合成结果出现临时授权文件将要到期的提示,说明使用了临时授权文件,请删除临时授权即可。// 临时授权文件。目前SDK会自动下载正式授权文件。正式授权文件有效期3年,并在最后一个月SDK自动更新下载授权文件。// this.mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_LICENCE_FILE, mSampleDirPath + "/" + LICENSE_FILE_NAME);// 请替换为语音开发者平台上注册应用得到的App ID (离线授权)this.mSpeechSynthesizer.setAppId("10611756");// 请替换为语音开发者平台注册应用得到的apikey和secretkey (在线授权)this.mSpeechSynthesizer.setApiKey("DxQms5tV0PK0GPxPi7MxUvOi", "4xkoLSQOrfICDRmHqSmURFkPQVIx24TH");// 发音人(在线引擎),可用参数为0,1,2,3。。。(服务器端会动态增加,各值含义参考文档,以文档说明为准。0--普通女声,1--普通男声,2--特别男声,3--情感男声。。。)this.mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER, "0");// 设置Mix模式的合成策略(MIX_MODE_DEFAULT:WIFI下在线优先;MIX_MODE_HIGH_SPEED_NETWORK:WIFI 4G 3G 2G下在线优先)// 如果在线连接百度服务器失败或者超时6s,那么切换成离线合成。this.mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_MIX_MODE, SpeechSynthesizer.MIX_MODE_HIGH_SPEED_NETWORK);// 授权检测接口(只是通过AuthInfo进行检验授权是否成功。)// AuthInfo接口用于测试开发者是否成功申请了在线或者离线授权,如果测试授权成功了,可以删除AuthInfo部分的代码(该接口首次验证时比较耗时),不会影响正常使用(合成使用时SDK内部会自动验证授权)// 检查合成服务是否开通,如果只需要检查在线合成服务,使用 TtsMode.ONLINE/*AuthInfo authInfo = this.mSpeechSynthesizer.auth(TtsMode.ONLINE);if (authInfo.isSuccess()) {Toast.makeText(this, "语音合成成功", Toast.LENGTH_SHORT).show();} else {String errorMsg = authInfo.getTtsError().getDetailMessage();Toast.makeText(this, "语音合成成失败 errorMsg=" + errorMsg, Toast.LENGTH_SHORT).show();}*/// 初始化tts// 初始化离在线混合模式,如果只需要在线合成功能,使用 TtsMode.ONLINE// TtsMode.ONLINE 纯在线,断网即不可使用,TtsMode.MIX 离在线混合,断网或者网络请求超时使用离线。mSpeechSynthesizer.initTts(TtsMode.ONLINE);}

5、语音播报

    /*** 导航播报信息回调函数*/@Overridepublic void onGetNavigationText(String s) {/** 如果需要合成后立即播放的请调用speak方法,如果只需要合成请调用synthesize方法* 该接口线程安全,可以重复调用。内部采用排队策略,调用后将自动加入队列,SDK会按照队列的顺序进行合成及播放。* 注意需要合成的每个文本text不超过1024的GBK字节,即512个汉字或英文字母数字。超过请自行按照句号问号等标点切分,调用多次合成接口。* 调用这两个方法后,SDK会回调 SpeechSynthesizerListener 中的 onSynthesizeDataArrived 方法* */mSpeechSynthesizer.speak(s);Log.v("GetNavigationText导航信息", s);}

ps:接入百度语音SDK后还没有出现什么问题,不过高德+百度的组合…继续观察啦

接入高德 SDK 遇到的问题 01:语音导航中科大讯飞在线语音合成次数限制相关推荐

  1. uni-app 微信小程序接入高德SDK

    uni-app 微信小程序接入高德SDK 参考文档:https://lbs.amap.com/api/wx/gettingstarted 一.获取高德Key 配置高德key 二.获取高德key的操作步 ...

  2. android打包jar包给unity使用接入高德sdk,实现定位。

    https://blog.csdn.net/unity_http/article/details/79929454 https://blog.csdn.net/why1happy/article/de ...

  3. Unity接入高德SDK实现定位

    一.在高德官网下载需要对应的SDK  http://lbs.amap.com/api/android-location-sdk 通过SHA1值获取对应的key值 a.SHA1值得获取:  1.在cmd ...

  4. Android 语音播报 , 百度在线语音合成封装;

    Android自带的语音播报不支持中文: 科大讯飞开始收费了: 百度离线语音合成也收费,但是! 在线语音合成不收费,需要在百度开放平台申请AppId: 文档:https://cloud.baidu.c ...

  5. 接入高德sdk的几个问题,=。=

    第一场景: APP上显示红叉 解决: 把这个代码 sourceSets {main {jniLibs.srcDirs = ['libs']} 放在下面就行 android {} 第二场景: 确保调用S ...

  6. Android studio接入高德SDK(1)--获取地址信息

    1.创建一个Empty Activity 的应用项目 a.File->New->New Project b.选择Phone and Table -> Empty Activity - ...

  7. android接入高德API,生成正式包后,导航页面闪退

    添加如下混淆,可防止,出现问题,记录一下,希望对别人有帮助. #3D 地图 V5.0.0之前: -keep class com.amap.api.maps.{;} -keep class com.au ...

  8. 【方法】科大讯飞在线语音合成API使用-文字转语音音频

    文章目录 开始使用服务 下载并修改代码 批量化处理 2020.3.16更新 一年过去,讯飞居然改了python的使用代码,变复杂了一点,而且不能直出wav格式的音频,只有pcm的源文件:另外不需要设置 ...

  9. 高德地图小程序步行路线显示_微信小程序之:小程序接入高德地图SDK

    前言 最近在捣腾小程序,想开发一个自己的小程序,过一把独立开发的瘾. 自己设计,自己搞数据,自己找图标,自己决定要或者不要什么功能,完全跟着心走,目前体验下来,感觉还是蛮爽的.比在公司产品要你做什么你 ...

最新文章

  1. 节省两倍开发时间,Java静态方法还可以这么玩
  2. PC上虚拟机中安装NW 7.02 ABAP试用版
  3. 今日arXiv精选 | 21篇EMNLP 2021最新论文
  4. php后端如何搭建socket服务,从php做一个简单的socket服务器流程
  5. 集合框架-ArrayList源码学习
  6. EF6 MVC5译文
  7. IBM 推出世界最小电脑,应用区块链技术防偷骗!
  8. Python3.4下使用sqlalchemy
  9. Android 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore
  10. MySQL数据库如何启动?
  11. UE4UI制作_MainMenu
  12. Xilinx FPGA下载器(DLC9)的 [Labtoolstcl 44-494] 报错解决方法
  13. 斗兽棋项目开发计划书
  14. oracle12c cdb修改,Oracle 12C CDB字符集修改
  15. 机器学习 最小角回归法 LARS
  16. Android适配曲面屏
  17. 二十九、重磅:近1GB的三千万聊天语料供出
  18. 教你用PS制作创意分割海报,让海报更有新意
  19. 敢达java_java 实现websocket
  20. 关于广告中的定向和人群包

热门文章

  1. OSChina 周一乱弹 ——用电脑搞了个烹饪料理机 !
  2. 为何浙江富人多(一点启示)
  3. R语言和医学统计学系列(1):t检验
  4. 大型多人在线游戏服务器架构设计 - RPC封装原理
  5. 五、HTML5单页框架View.js介绍 - View.js的比较优势
  6. 《左耳听风》读书心得之高手成长篇书单
  7. 腾讯QQ的回应来了~
  8. declare命令,export命令
  9. 【有奖评论】HMS Core.Sparkle创新沙龙来啦,参与互动赢华为三脚架自拍杆(无线版)
  10. 一个Spring Bean从诞生到逝去的九次人生转折!