1、在科大讯飞上注册账号,创建项目,获取appid
2、添加对应的jar包 Msc.jar、Sunflower.jar
3、配置权限

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

4、在创建的MyApplication文件中配置:

SpeechUtility.createUtility(this, SpeechConstant.APPID + "=你的id");

5、创建MainActivity文件,在里面实现播放:

public class MainActivity extends AppCompatActivity implements OnClickListener {private static String TAG = MainActivity .class.getSimpleName();    // 语音合成对象private SpeechSynthesizer mTts;String text;// 默认发音人private String voicer = "xiaoyan";private String[] mCloudVoicersEntries;private String[] mCloudVoicersValue ;// 缓冲进度private int mPercentForBuffering = 0;// 播放进度private int mPercentForPlaying = 0;private SharedPreferences mSharedPreferences;@SuppressLint("ShowToast")
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.ttsdemo);// 初始化合成对象mTts = SpeechSynthesizer.createSynthesizer(TtsDemo.this, mTtsInitListener);mSharedPreferences = getSharedPreferences(MainActivity .PREFER_NAME, MODE_PRIVATE);mToast = Toast.makeText(this,"",Toast.LENGTH_SHORT);setParam();//配置信息mTts.startSpeaking("播放的文字", mTtsListener);  //开始播放}/*** 初始化监听。*/
private InitListener mTtsInitListener = new InitListener() {@Overridepublic void onInit(int code) {Log.d(TAG, "InitListener init() code = " + code);if (code != ErrorCode.SUCCESS) {showTip("初始化失败,错误码:"+code);} else {// 初始化成功,之后可以调用startSpeaking方法// 注:有的开发者在onCreate方法中创建完合成对象之后马上就调用startSpeaking进行合成,// 正确的做法是将onCreate中的startSpeaking调用移至这里}       }
};/*** 合成回调监听。*/
private SynthesizerListener mTtsListener = new SynthesizerListener() {@Overridepublic void onSpeakBegin() {showTip("开始播放");}@Overridepublic void onSpeakPaused() {showTip("暂停播放");}@Overridepublic void onSpeakResumed() {showTip("继续播放");}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos,String info) {// 合成进度mPercentForBuffering = percent;showTip(String.format(getString(R.string.tts_toast_format),mPercentForBuffering, mPercentForPlaying));}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {// 播放进度mPercentForPlaying = percent;showTip(String.format(getString(R.string.tts_toast_format),mPercentForBuffering, mPercentForPlaying));}@Overridepublic void onCompleted(SpeechError error) {if (error == null) {mTts.startSpeaking(text, mTtsListener);showTip("播放完成");} else if (error != null) {showTip(error.getPlainDescription(true));}}@Overridepublic void onEvent(int eventType, int arg1, int arg2, Bundle obj) {// 以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因// 若使用本地能力,会话id为null//  if (SpeechEvent.EVENT_SESSION_ID == eventType) {//      String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID);//      Log.d(TAG, "session id =" + sid);//  }}
};private void showTip(final String str) {mToast.setText(str);mToast.show();
}private void setParam(){// 清空参数mTts.setParameter(SpeechConstant.PARAMS, null);// 根据合成引擎设置相应参数if(mEngineType.equals(SpeechConstant.TYPE_CLOUD)) {mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);// 设置在线合成发音人mTts.setParameter(SpeechConstant.VOICE_NAME, voicer);//设置合成语速mTts.setParameter(SpeechConstant.SPEED, mSharedPreferences.getString("speed_preference", "50"));//设置合成音调mTts.setParameter(SpeechConstant.PITCH, mSharedPreferences.getString("pitch_preference", "50"));//设置合成音量mTts.setParameter(SpeechConstant.VOLUME, mSharedPreferences.getString("volume_preference", "50"));}else {mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL);// 设置本地合成发音人 voicer为空,默认通过语记界面指定发音人。mTts.setParameter(SpeechConstant.VOICE_NAME, "");/*** TODO 本地合成不设置语速、音调、音量,默认使用语记设置* 开发者如需自定义参数,请参考在线合成参数设置*/}//设置播放器音频流类型mTts.setParameter(SpeechConstant.STREAM_TYPE, mSharedPreferences.getString("stream_preference", "3"));// 设置播放合成音频打断音乐播放,默认为truemTts.setParameter(SpeechConstant.KEY_REQUEST_FOCUS, "true");// 设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限// 注:AUDIO_FORMAT参数语记需要更新版本才能生效mTts.setParameter(SpeechConstant.AUDIO_FORMAT, "wav");mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, Environment.getExternalStorageDirectory()+"/msc/tts.wav");
}@Override
protected void onDestroy() {super.onDestroy();mTts.stopSpeaking();// 退出时释放连接mTts.destroy();}
}

使用(科大讯飞)文字转语音播放相关推荐

  1. android 语音提醒,文字转语音播放

    android本身具有文字转语音播放的TTS,一些第三方的sdk,像百度语音,科大讯飞语音等等都提供了文字转语音播放的功能,但这些第三方sdk大都收费,还挺贵的. 这里推荐两种方法:1.android ...

  2. 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  3. Java实现语音阅读功能开发(输入文字,转语音播放)

    第一步 导入maven坐标 <!-- https://mvnrepository.com/artifact/com.jacob/jacob 文字转语音 --><dependency& ...

  4. vue+文字转换为语音播放,播放指定内容,附带js版本 ,SpeechSynthesisUtterance

    首先: 调动方法:参数为指定文字: //语音播报yybbFun(data){this.commonjs.handleSpeak(data);}, 公共方法地址: https://mp.csdn.net ...

  5. C++ —— 调用微软语音接口(SAPI),实现文字转语音播放

    SAPI介绍      SAPI(The Microsoft Speech API) ---- 微软语音接口      SAPI中的语音技术包括两部分内容:语音识别.语音合成.均需语音引擎的支持.   ...

  6. C# 文字输入语音播放,代码如下

    1.准备前工作,查看系统语音 2.C# 里引用speech 3.实现输入文字,语音播报出来,代码 private void btnplay_Click(object sender, EventArgs ...

  7. javascript调用百度API,文字转语音播放

    前言 文字转语音,运用在什么场景了?一般后台管理系统会用到,提示管理员有"新的订单"."新的任务"等等,管理员可以马上收到,并及时处理.就好比,在餐厅,经常会听 ...

  8. 【虚幻引擎】UE4/UE5科大讯飞文字合成语音

    一.链接地址 链接:https://pan.baidu.com/s/15Qoc48x3DLpw4eW1qHXInQ  提取码:jqpx  B站视频链接:https://space.bilibili.c ...

  9. VUE 文字转语音播放的实现示例(亲测好用)

    三.vue项目案例 <template><button @click="playVoice">播放语音</button> </templa ...

最新文章

  1. python发送给邮件 转
  2. 代练怎么检测出来的_王者荣耀:代练熬夜打上王者,天美发来58个字,不敢收一分钱...
  3. 「 每日一练,快乐水题 」744. 寻找比目标字母大的最小字母
  4. java8 b计算时间差_java8-计算时间差的方法
  5. 让一个python源文件也能像bat批处理文件那样运行[转]
  6. json java typeof_Json对象与Json字符串的转化、JSON字符串与Java对象的转换
  7. android图标错误的是什么意思啊,Android错误:找不到与给定名称匹配的资源(在icon处,值为@drawable/icon) - Android - srcmini...
  8. 博为峰Java技术题 ——JavaSE Java 方法Ⅰ
  9. OAuth2.0认证服务器之授权码存放
  10. odbc数据源的配置
  11. int n=10的sizeof 为什么是四_从int取值范围谈起
  12. DataGrip快捷键(执行SQL、格式化SQL)
  13. OpenCV 实现颜色直方图
  14. php递归mysql查询_PHP MySQL递归查询
  15. ImageJ如何获取图片RGB强度和灰度值
  16. 频繁gc是什么意思_经常听到的期货黄金gc是什么意思?
  17. 让Firefox未载入图片显示边框
  18. 如何做好创业公司CEO - 量力而行
  19. 【FPGA】基于OV5640的 图像边沿检测
  20. 博客园及相关学习地址收录

热门文章

  1. 音频ALSA架构简介
  2. 基于PyTorch实现Seq2Seq + Attention的英汉Neural Machine Translation
  3. 名帖350 高闲 草书《千字文》
  4. 超强大NLP标注工具——Prodigy
  5. Hive学习笔记总结
  6. DirectX3D游戏制作之---游戏界面的设计
  7. 五分钟学会各种环形进度条
  8. 什么是工业用计算机,工业电脑和普通电脑有什么不同?
  9. Mac电脑上最好的3个mobi阅读器
  10. php 给APP推送消息