使用科大讯飞语音SDK实现文字在线合成语音
最近需要使用到语音播报的功能,在百度七武器百度语音和科大讯飞的语音当中考虑到准确性和专业性,选择了科大讯飞。科大讯飞所提供的android开发sdk有两种一种是集成了自身产品语音+的sdk,功能比较强大但是会初始化语音服务模块;另一种是纯开发sdk不集成产品只需要导入相应jar包就可以使用。考虑到只用到了语音合成的技术所以选择了第二种sdk。
具体代码如下所示:
private SpeechSynthesizer mTts; private int isSpeaking = 0; mTts= SpeechSynthesizer.createSynthesizer(this, null); /*
* 开始合成
*
* @param view
*/
public void start() {
mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
mTts.setParameter(SpeechConstant.SPEED, "50");//设置语速
mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围 0~100
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端
mTts.startSpeaking(search_word_content.getText().toString().trim(), mSynListener);
}
//合成监听器
private SynthesizerListener mSynListener = new SynthesizerListener(){
//缓冲进度回调
//percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在
//文本中结束位置,info为附加信息。
@Override
public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {
// TODO Auto-generated method stub
}
//会话结束回调接口,没有错误时,error为null
@Override
public void onCompleted(SpeechError arg0) {
// TODO Auto-generated method stub
}
//会话事件回调接口
@Override
public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
// TODO Auto-generated method stub
}
//开始播放
@Override
public void onSpeakBegin() {
// TODO Auto-generated method stub
}
//暂停播放
@Override
public void onSpeakPaused() {
// TODO Auto-generated method stub
}
//播放进度回调
//percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文
//本中结束位置.
@Override
public void onSpeakProgress(int arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
//恢复播放回调接口
@Override
public void onSpeakResumed() {
// TODO Auto-generated method stub
}
};
if (isSpeaking == 0) {
start();
gif_no.setVisibility(View.INVISIBLE);
gif.setVisibility(View.VISIBLE);
isSpeaking = 1;
} else if (isSpeaking == 1) {
// 暂停播放
mTts.pauseSpeaking();
gif_no.setVisibility(View.VISIBLE);
gif.setVisibility(View.INVISIBLE);
isSpeaking = 2;
} else if (isSpeaking == 2) {
// 继续播放
//System.out.println("..........");
mTts.resumeSpeaking();
isSpeaking = 1;
gif_no.setVisibility(View.INVISIBLE);
gif.setVisibility(View.VISIBLE);
}
// 取消合成
mTts.stopSpeaking();
isSpeaking = 0;
总结, 开始初始化,start方法里面设置参数,再根据需要调用停止和继续方法,假如换了文本调用取消合成方法,重新start方法
以上内容是小编给大家分享的使用科大讯飞语音SDK实现文字在线合成语音的全部叙述,希望大家喜欢。
相关文章
Kotlin 中范围操作符的使用示例代码(范围操作符不同用法)
Kotlin中的范围操作符(in、step、downTo、until)在Android开发中非常实用,通过这些操作符,可以简洁地遍历整数范围,实现各种遍历需求,提高代码的可读性和可维护性,本文介绍Kotlin 中范围操作符的使用示例,感兴趣的朋友一起看看吧2025-03-03
Android用StaticLayout实现文字转化为图片效果(类似长微博发送)
这篇文章主要给大家介绍了关于Android利用StaticLayout实现文字转化为图片效果,实现的效果类似我们常见的长微博效果,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面来一起看看吧。2017-08-08
一行代码教你解决Scrollview和TextInput焦点获取问题
这篇文章主要为大家介绍了一行代码教你解决Scrollview和TextInput焦点获取问题,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-12-12
根据USER-AGENT判断手机类型并跳转到相应的app下载页面
检测浏览器的USER-AGENT,然后根据正则表达式来确定客户端类型,并跳转到相应的app下载页面,这个方法还是比较实用的,大家可以看看2014-09-09


最新评论