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()
,
SynthesizerListener
public 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.SpeechInterface
key
- 参数名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.SpeechInterface
key
- 参数名称,所有支持参数,参考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()