使用(科大讯飞)文字转语音播放
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();}
}
使用(科大讯飞)文字转语音播放相关推荐
- android 语音提醒,文字转语音播放
android本身具有文字转语音播放的TTS,一些第三方的sdk,像百度语音,科大讯飞语音等等都提供了文字转语音播放的功能,但这些第三方sdk大都收费,还挺贵的. 这里推荐两种方法:1.android ...
- 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- Java实现语音阅读功能开发(输入文字,转语音播放)
第一步 导入maven坐标 <!-- https://mvnrepository.com/artifact/com.jacob/jacob 文字转语音 --><dependency& ...
- vue+文字转换为语音播放,播放指定内容,附带js版本 ,SpeechSynthesisUtterance
首先: 调动方法:参数为指定文字: //语音播报yybbFun(data){this.commonjs.handleSpeak(data);}, 公共方法地址: https://mp.csdn.net ...
- C++ —— 调用微软语音接口(SAPI),实现文字转语音播放
SAPI介绍 SAPI(The Microsoft Speech API) ---- 微软语音接口 SAPI中的语音技术包括两部分内容:语音识别.语音合成.均需语音引擎的支持. ...
- C# 文字输入语音播放,代码如下
1.准备前工作,查看系统语音 2.C# 里引用speech 3.实现输入文字,语音播报出来,代码 private void btnplay_Click(object sender, EventArgs ...
- javascript调用百度API,文字转语音播放
前言 文字转语音,运用在什么场景了?一般后台管理系统会用到,提示管理员有"新的订单"."新的任务"等等,管理员可以马上收到,并及时处理.就好比,在餐厅,经常会听 ...
- 【虚幻引擎】UE4/UE5科大讯飞文字合成语音
一.链接地址 链接:https://pan.baidu.com/s/15Qoc48x3DLpw4eW1qHXInQ 提取码:jqpx B站视频链接:https://space.bilibili.c ...
- VUE 文字转语音播放的实现示例(亲测好用)
三.vue项目案例 <template><button @click="playVoice">播放语音</button> </templa ...
最新文章
- python发送给邮件 转
- 代练怎么检测出来的_王者荣耀:代练熬夜打上王者,天美发来58个字,不敢收一分钱...
- 「 每日一练,快乐水题 」744. 寻找比目标字母大的最小字母
- java8 b计算时间差_java8-计算时间差的方法
- 让一个python源文件也能像bat批处理文件那样运行[转]
- json java typeof_Json对象与Json字符串的转化、JSON字符串与Java对象的转换
- android图标错误的是什么意思啊,Android错误:找不到与给定名称匹配的资源(在icon处,值为@drawable/icon) - Android - srcmini...
- 博为峰Java技术题 ——JavaSE Java 方法Ⅰ
- OAuth2.0认证服务器之授权码存放
- odbc数据源的配置
- int n=10的sizeof 为什么是四_从int取值范围谈起
- DataGrip快捷键(执行SQL、格式化SQL)
- OpenCV 实现颜色直方图
- php递归mysql查询_PHP MySQL递归查询
- ImageJ如何获取图片RGB强度和灰度值
- 频繁gc是什么意思_经常听到的期货黄金gc是什么意思?
- 让Firefox未载入图片显示边框
- 如何做好创业公司CEO - 量力而行
- 【FPGA】基于OV5640的 图像边沿检测
- 博客园及相关学习地址收录