石家庄网站制作公司宁波seo推荐推广平台
1、介绍
TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。
它是同时运用语言学和心理学的杰出之作,在内置芯片的支持之下,通过神经网络的设计,把文字智能地转化为自然语音流。TTS技术对文本文件进行实时转换,转换时间之短可以秒计算。在其特有智能语音控制器作用下,文本输出的语音音律流畅,使得听者在听取信息时感觉自然,毫无机器语音输出的冷漠与生涩感。TTS语音合成技术 [1] 即将覆盖国标一、二级汉字,具有英文接口,自动识别中、英文,支持中英文混读。所有声音采用真人普通话为标准发音,实现了120-150个汉字/分钟的快速语音合成,朗读速度达3-4个汉字/秒,使用户可以听到清晰悦耳的音质和连贯流畅的语调。现在有少部分MP3随身听具有了TTS功能。
TTS是语音合成应用的一种,它将储存于电脑中的文件,如帮助文件或者网页,转换成自然语音输出。TTS不仅能帮助有视觉障碍的人阅读计算机上的信息,更能增加文本文档的可读性。现在的TTS应用包括语音驱动的邮件以及声音敏感系统,并常与声音识别程序一起使用。
2、主要方法说明
/*** text 需要转成语音的文字 * queueMode 队列方式: * QUEUE_ADD:播放完之前的语音任务后才播报本次内容 * QUEUE_FLUSH:丢弃之前的播报任务,立即播报本次内容 * params 设置TTS参数,可以是null。 * KEY_PARAM_STREAM:音频通道,可以是:STREAM_MUSIC、STREAM_NOTIFICATION、STREAM_RING等 * KEY_PARAM_VOLUME:音量大小,0-1f * utteranceId:当前朗读文本的id*/
textToSpeech.speak(content, TextToSpeech.QUEUE_FLUSH, null,i+"");// 不管是否正在朗读TTS都被打断
textToSpeech.stop(); // 关闭,释放资源
textToSpeech.shutdown(); // 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
textToSpeech.setPitch(0.5f);// 设定语速,默认1.0正常语速
textToSpeech.setSpeechRate(1.5f);
3、实例代码
public class TextSpeech {private static TextSpeech textSpeech = new TextSpeech();public static TextSpeech getInstance() {return textSpeech;}private TextSpeech() {}private TextToSpeech tts;public void initSpeech(final Context context) {tts = new TextToSpeech(context, new TextToSpeech.OnInitListener() {@Overridepublic void onInit(int status) {// TODO Auto-generated method stubif (null != tts && status == TextToSpeech.SUCCESS) {//支持的语言类型(依赖讯飞语音支持中文合成)int result = tts.setLanguage(Locale.SIMPLIFIED_CHINESE);if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {Toast.makeText(context, "语言不可用,不支持语音播报功能!", Toast.LENGTH_SHORT).show();}Log.i("hwwFace", "initSpeech getDefaultEngine = " + tts.getDefaultEngine() + " " + result);}}});}/*** 设置语言播报速度** @param speechRate*/public void setSpeechRate(float speechRate) {if (null != tts) {tts.setSpeechRate(speechRate);}}/*** @param con*/public void speak(String con) {if (null != tts && !StringUtils.isEmpty(con)) {if (!tts.isSpeaking()) {int speak = tts.speak(con, TextToSpeech.QUEUE_FLUSH, null);}}}/*** 播放tts,如果正在播放tts则停止之前的播放最新的** @param message*/public void ttsSpeak(String message) {if (tts != null && !StringUtils.isEmpty(message)) {int speak = tts.speak(message, TextToSpeech.QUEUE_FLUSH, null);}}/*** 关闭注销TTS的资源*/public void closeTTS() {if (null != tts) {tts.stop();tts.shutdown();tts = null;}}}
4、引擎补充说明
com.svox.pico
系统自带不支持中文语音com.svox.classic
搜svox搜到的,和上面类似不支持中文com.google.android.tts
谷歌文字转语音引擎,不支持5.0以下系统,大小17.98Mcom.iflytek.speechcloud
科大讯飞语音引擎3.0,支持4.0以上系统,大小27.27Mcom.iflytek.speechsuite
新版科大讯飞语音引擎,2018年开始新版手机一般会内置,如oppo、vivo、华为com.baidu.duersdk.opensdk
度秘语音引擎3.0 不支持5.0以下系统,大小11.95Mcom.iflytek.tts
科大讯飞语音合成,较老,不支持7.0以上系统,大小9M