public class SpeechSynthesizer
extends com.iflytek.cloud.msc.module.SpeechInterface
语音合成,又称文语转换(Text to Speech,TTS)技术,解决的主要问题
是如何将文字信息转化为可听的声音信息(即音频数据)。关于语音识别,请
参考SpeechRecognizer类。
语音合成,支持不同的语言,方言,或同一方言不同的人的声音特点等,请参考
发音人参数SpeechConstant.VOICE_NAME。
本类使用单例,调用者使用本类的对象,只需要通过createSynthesizer(Context, com.iflytek.cloud.InitListener)创建
一次对象后,便可一直使用该对象,直到通过调用destroy()进行单例对象销毁。调
用者可通过getSynthesizer()获取当前已经创建的单例。在销毁本类的单例对象后,
需要先通过createSynthesizer(Context, com.iflytek.cloud.InitListener)再次创建单例对象,方可再使用。
在当前应用生命周期第一次使用本类的任何函数前,须先调用
SpeechUtility.createUtility(Context, java.lang.String)进行SDK初始化。
SpeechUtility.createUtility(Context, java.lang.String),
SpeechRecognizer| 限定符和类型 | 方法和说明 |
|---|---|
static SpeechSynthesizer |
createSynthesizer(Context context,
InitListener listener)
创建单例对象
使用此函数创建一个本类单例对象。
|
boolean |
destroy()
销毁单例对象
通过本函数,销毁由
createSynthesizer(Context, com.iflytek.cloud.InitListener)创建的单例对象。 |
java.lang.String |
getParameter(java.lang.String key)
获取参数
获取指定的参数的当前值。
|
static SpeechSynthesizer |
getSynthesizer()
获取单例对象
通过函数获取已创建的单例对象。
|
boolean |
isSpeaking()
是否在合成
是否在合成状态,包括是否在播放状态,音频从服务端获取完成后,若未播放
完成,依然处于当前会话的合成中。
|
void |
pauseSpeaking()
暂停播放
暂停播放,仅在合成播放模式下有效,暂停播放,并不会暂停音频的获取过程,
只是在把播放器暂停。
|
void |
resumeSpeaking()
恢复播放
在暂停后,在当前暂停位置开始播放合成的音频。
|
boolean |
setParameter(java.lang.String key,
java.lang.String value)
参数设置
可设置的参数有:
SpeechConstant.VOICE_NAME: 发音人SpeechConstant.SPEED: 合成语速SpeechConstant.VOLUME: 合成音量SpeechConstant.PITCH: 合成语调SpeechConstant.BACKGROUND_SOUND: 背景音乐SpeechConstant.TTS_BUFFER_TIME: 合成音频缓冲时间SpeechConstant.STREAM_TYPE: 播放类型SpeechConstant.SAMPLE_RATE: 采样率SpeechConstant.TTS_AUDIO_PATH: 合成录音保存路径
SpeechConstant.ENGINE_TYPE:引擎类型;
ResourceUtil.TTS_RES_PATH:离线资源路径;
ResourceUtil.ENGINE_START:启动离线引擎;
|
int |
startSpeaking(java.lang.String text,
SynthesizerListener listener)
开始合成
调用此函数,开始合成文本并播放音频。
|
void |
stopSpeaking()
停止合成
调用此函数,取消当前合成会话,并停止音频播放。
|
int |
synthesizeToUri(java.lang.String text,
java.lang.String uri,
SynthesizerListener listener)
合成到文件
合成文本到一个音频文件,不播放。
|
public static SpeechSynthesizer createSynthesizer(Context context, InitListener listener)
使用此函数创建一个本类单例对象。当成功创建一次单例对象后,可一直使用此对象,
直到调用destroy()销毁已创建的单例对象为止。若在当前应用生命周期内调用
destroy()前再次调用本函数,则直接返回已创建的单例对象。可通过
getSynthesizer()获取已创建的单例对象。
destroy(),
getSynthesizer()public static SpeechSynthesizer getSynthesizer()
通过函数获取已创建的单例对象。当单例对象未创建时,将返回null,此时应先通过
createSynthesizer(Context, com.iflytek.cloud.InitListener)创建单例对象。
createSynthesizer(Context, com.iflytek.cloud.InitListener),
destroy()public int startSpeaking(java.lang.String text,
SynthesizerListener listener)
调用此函数,开始合成文本并播放音频。关于合成到文件,请参考函数synthesizeToUri(java.lang.String, java.lang.String, com.iflytek.cloud.SynthesizerListener)。
目前SDK不支持多线程,所以在调用本函数开始一次会话后,直到结束前(结果返回 完毕,或出现错误),不能再调用本函数开始新的会话。一次会话,即从会话开始,到结 束为止。
在调用本函数开始听写或语法识别前,通过setParameter(String, String)设置相
应的参数。
可通过stopSpeaking()取消当前的会话。
text - 待合成的文本listener - 合成状态监听器createSynthesizer(Context, com.iflytek.cloud.InitListener),
getSynthesizer(),
synthesizeToUri(java.lang.String, java.lang.String, com.iflytek.cloud.SynthesizerListener),
stopSpeaking(),
setParameter(String, String),
#cancel(),
SynthesizerListenerpublic int synthesizeToUri(java.lang.String text,
java.lang.String uri,
SynthesizerListener listener)
合成文本到一个音频文件,不播放。使用此函数时,请考虑应用是否 有在设置的目录中保存文件的权限。
text - 要合成的文本uri - 要保存的文件路径(含文件名)listener - 合成音频回调接口startSpeaking(String, SynthesizerListener)public void pauseSpeaking()
暂停播放,仅在合成播放模式下有效,暂停播放,并不会暂停音频的获取过程, 只是在把播放器暂停。
public void resumeSpeaking()
在暂停后,在当前暂停位置开始播放合成的音频。
pauseSpeaking(),
stopSpeaking()public void stopSpeaking()
调用此函数,取消当前合成会话,并停止音频播放。调用此函数后,未合 成的音频将不再返回,若为合成到文件模式,音频文件将不会被保存。
public boolean isSpeaking()
是否在合成状态,包括是否在播放状态,音频从服务端获取完成后,若未播放 完成,依然处于当前会话的合成中。
startSpeaking(String, SynthesizerListener),
stopSpeaking()public boolean setParameter(java.lang.String key,
java.lang.String value)
可设置的参数有:
SpeechConstant.VOICE_NAME: 发音人
SpeechConstant.SPEED: 合成语速
SpeechConstant.VOLUME: 合成音量
SpeechConstant.PITCH: 合成语调
SpeechConstant.BACKGROUND_SOUND: 背景音乐
SpeechConstant.TTS_BUFFER_TIME: 合成音频缓冲时间
SpeechConstant.STREAM_TYPE: 播放类型
SpeechConstant.SAMPLE_RATE: 采样率
SpeechConstant.TTS_AUDIO_PATH: 合成录音保存路径
SpeechConstant.ENGINE_TYPE:引擎类型;
ResourceUtil.TTS_RES_PATH:离线资源路径;
ResourceUtil.ENGINE_START:启动离线引擎;
setParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterfacekey - 参数名value - 参数值startSpeaking(String, SynthesizerListener),
getParameter(String)public java.lang.String getParameter(java.lang.String key)
获取指定的参数的当前值。
某些有默认的值的参数,如SpeechConstant.VOICE_NAME,在应用层未
调用setParameter(String, String)来设置参数值前,可能获取到的是null值,
但在实际会话会始时,SDK会使用默认值传给服务器。
getParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterfacekey - 参数名称,所有支持参数,参考setParameter(String, String)SpeechConstant对各参数的说明。setParameter(String, String)public boolean destroy()
通过本函数,销毁由createSynthesizer(Context, com.iflytek.cloud.InitListener)创建的单例对象。
在调用本函数进行销毁前,应先保证当前不在会话中,否则,本函数将尝试取消当前
会话,并返回false,此时销毁失败。关于当前是否在会话中,请参考函数
isSpeaking()。若销毁失败,请在取消当前会话后,再次调用本函数重试。
当本函数返回true时,销毁成功。此时,之前创建的单例对象已不能再使用,否则,
将会报错。此时需要再使用,应先通过createSynthesizer(Context, com.iflytek.cloud.InitListener)创建一个新的单例
对象。
createSynthesizer(Context, com.iflytek.cloud.InitListener),
stopSpeaking()