语音合成(Synthesizer)
这里介绍的是Android API关于语音合成(Synthesizer)的相关说明,点击右侧目录可快速找到相应文件。
#类SpeechSynthesizer
java.lang.Object com.iflytek.cloud.msc.module.SpeechInterface com.iflytek.cloud.SpeechSynthesizer
public class SpeechSynthesizer extends com.iflytek.cloud.msc.module.SpeechInterface
#语音合成类
语音合成,又称文语转换(Text to Speech,TTS)技术,解决的主要问题 是如何将文字信息转化为可听的声音信息(即音频数据)。关于语音识别,请参考SpeechRecognizer类 。
语音合成,支持不同的语言,方言,或同一方言不同的人的声音特点等,请参考 发音人参数SpeechConstant.VOICE_NAME 。
本类使用单例,调用者使用本类的对象,只需要通过createSynthesizer(android.content.Context, com.iflytek.cloud.InitListener)创建 一次对象后,便可一直使用该对象,直到通过调用destroy()进行单例对象销毁。调 用者可通过getSynthesizer()获取当前已经创建的单例。在销毁本类的单例对象后, 需要先通过createSynthesizer(android.content.Context, com.iflytek.cloud.InitListener)再次创建单例对象,方可再使用。
在当前应用生命周期第一次使用本类的任何函数前,须先调用SpeechUtility.createUtility(android.content.Context, java.lang.String) 进行SDK初始化。
另请参阅: SpeechUtility.createUtility(android.content.Context, java.lang.String) , SpeechRecognizer
#嵌套类概要
从类继承的嵌套类/接口 com.iflytek.cloud.msc.module.SpeechInterface
com.iflytek.cloud.msc.module.SpeechInterface.ENGINE_MODE
#方法概要
所有方法
限定符和类型 | 方法和说明 |
---|---|
static SpeechSynthesizer |
createSynthesizer(android.content.Context context, InitListener listener) 创建单例对象 使用此函数创建一个本类单例对象。 |
boolean |
destroy() 销毁单例对象 通过本函数,销毁由createSynthesizer(android.content.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:启动离线引擎; SpeechConstant.TTS_FADING : 合成淡入淡出; SpeechConstant.AUDIO_FORMAT_AUE:音频流编解码格式; |
int |
startSpeaking(java.lang.String text, SynthesizerListener listener) 开始合成 调用此函数,开始合成文本并播放音频。 |
void |
stopSpeaking() 停止合成 调用此函数,取消当前合成会话,并停止音频播放。 |
int |
synthesizeToUri(java.lang.String text, java.lang.String uri, SynthesizerListener listener) 合成到文件 合成文本到一个音频文件,不播放。 |
从类继承的方法 com.iflytek.cloud.msc.module.SpeechInterface
setParameter
从类继承的方法 java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
#方法详细资料
#createSynthesizer
public static SpeechSynthesizer createSynthesizer(android.content.Context context,
InitListener listener)
创建单例对象
使用此函数创建一个本类单例对象。当成功创建一次单例对象后,可一直使用此对象, 直到调用destroy()销毁已创建的单例对象为止。若在当前应用生命周期内调用destroy()前再次调用本函数,则直接返回已创建的单例对象。可通过getSynthesizer()获取已创建的单例对象。
返回:
合成对象
另请参阅:
destroy(),getSynthesizer()
#getSynthesizer
public static SpeechSynthesizer getSynthesizer()
获取单例对象
通过函数获取已创建的单例对象。当单例对象未创建时,将返回null,此时应先通过createSynthesizer(android.content.Context, com.iflytek.cloud.InitListener)创建单例对象。
返回:
合成对象
另请参阅:
createSynthesizer(android.content.Context, com.iflytek.cloud.InitListener), destroy()
#startSpeaking
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(android.content.Context, com.iflytek.cloud.InitListener), getSynthesizer(), synthesizeToUri(java.lang.String, java.lang.String, com.iflytek.cloud.SynthesizerListener), stopSpeaking(), setParameter(String, String), SynthesizerListener
#synthesizeToUri
public int synthesizeToUri(java.lang.String text,
java.lang.String uri,
SynthesizerListener listener)
合成到文件
合成文本到一个音频文件,不播放。使用此函数时,请考虑应用是否 有在设置的目录中保存文件的权限。
参数:
text - 要合成的文本
uri - 要保存的文件路径(含文件名)
listener - 合成音频回调接口
另请参阅: startSpeaking(String, SynthesizerListener)
#pauseSpeaking
public void pauseSpeaking()
暂停播放
暂停播放,仅在合成播放模式下有效,暂停播放,并不会暂停音频的获取过程, 只是在把播放器暂停。
另请参阅: resumeSpeaking(),startSpeaking(String, SynthesizerListener)
#resumeSpeaking
public void resumeSpeaking()
恢复播放
在暂停后,在当前暂停位置开始播放合成的音频。
另请参阅:
pauseSpeaking(), stopSpeaking()
#stopSpeaking
public void stopSpeaking()
停止合成
调用此函数,取消当前合成会话,并停止音频播放。调用此函数后,未合 成的音频将不再返回,若为合成到文件模式,音频文件将不会被保存。
另请参阅: startSpeaking(String, SynthesizerListener)
#isSpeaking
public boolean isSpeaking()
是否在合成
是否在合成状态,包括是否在播放状态,音频从服务端获取完成后,若未播放 完成,依然处于当前会话的合成中。
返回:
true 是,false 否
另请参阅: startSpeaking(String, SynthesizerListener), stopSpeaking()
#setParameter
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: 启动离线引擎;
SpeechConstant.TTS_FADING: 合成淡入淡出;
SpeechConstant.AUDIO_FORMAT_AUE: 音频流编解码格式;
覆盖:
setParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterface
参数:
key - 参数名
value - 参数值
返回:
设置是否成功
另请参阅:
startSpeaking(String, SynthesizerListener), getParameter(String)
#getParameter
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)
#destroy
public boolean destroy()
销毁单例对象 通过本函数,销毁由createSynthesizer(android.content.Context, com.iflytek.cloud.InitListener)创建的单例对象。
在调用本函数进行销毁前,应先保证当前不在会话中,否则,本函数将尝试取消当前 会话,并返回false,此时销毁失败。关于当前是否在会话中,请参考函数isSpeaking()。若销毁失败,请在取消当前会话后,再次调用本函数重试。
当本函数返回true时,销毁成功。此时,之前创建的单例对象已不能再使用,否则, 将会报错。此时需要再使用,应先通过createSynthesizer(android.content.Context, com.iflytek.cloud.InitListener)创建一个新的单例 对象。
覆盖:
destroy 在类中 com.iflytek.cloud.msc.module.SpeechInterface
返回:
销毁成功:true;销毁失败:false。
另请参阅:
createSynthesizer(android.content.Context, com.iflytek.cloud.InitListener),stopSpeaking()
#接口SynthesizerListener
public interface SynthesizerListener
#合成监听器
通过实现此接口,获取当前合成的状态和结果
识别监听器,请参考RecognizerListener
另请参阅:
SpeechSynthesizer.startSpeaking(String, SynthesizerListener), RecognizerListener
#方法概要
所有方法
限定符和类型 | 方法和说明 |
---|---|
void |
onBufferProgress(int progress, int beginPos, int endPos, java.lang.String info) 缓冲进度 SDK回调此函数,通知应用层,当前合成音频的缓冲进度。 |
void |
onCompleted(SpeechError error) 结束 SDK回调此接口,通知应用,将结束会话。 |
void |
onEvent(int eventType, int arg1, int arg2, android.os.Bundle obj) 合成会话事件 扩展用接口,由具体业务进行约定。 |
void |
onSpeakBegin() 开始播放 SDK回调此函数,通知应用层,将要进行播放。 |
void |
onSpeakPaused() 暂停播放 SDK回调此接口,通知应用,将暂停播放。 |
void |
onSpeakProgress(int progress, int beginPos, int endPos) 播放进度 SDK回调此接口,通知应用,当前的播放进度。 |
void |
onSpeakResumed() 恢复播放 SDK回调此接口,通知应用,将恢复播放。 |
#方法详细资料
#onSpeakBegin
void onSpeakBegin()
开始播放 SDK回调此函数,通知应用层,将要进行播放。
在第一次回调了onBufferProgress(int, int, int, String)后,便会回调此 函数,告知应用层,将要进行播放。此函数在一次会话中,只会被调用一次,当出现 错误时,可能不会回调此函数。
另请参阅:
onBufferProgress(int, int, int, String), onSpeakProgress(int, int, int)
#onBufferProgress
void onBufferProgress(int progress,
int beginPos,
int endPos,
java.lang.String info)
缓冲进度
SDK回调此函数,通知应用层,当前合成音频的缓冲进度。
除非出现错误,否则,在合成过程,第一个回调的应当是此函数。此函数在 一次会话中,可能会被调用多次,直到参数3的值为( textLen-1 )为止,textLen 即为在SpeechSynthesizer.startSpeaking(String, SynthesizerListener)传入的文本长度。当出现错误时,可能不会回调此函数。缓冲进度的文本结束位 置一般为文本中句子停顿位置,如逗号,句号等。
参数:
progress - 百分比,当前已合成文本占当前会话全部文本的百分比。
beginPos - 文本开始位置,从0开始计数。
endPos - 文本结束位置,最大值为(textLen-1)。
info - 信息,暂不支持。
另请参阅: onSpeakProgress(int, int, int)
#onSpeakPaused
void onSpeakPaused()
暂停播放
SDK回调此接口,通知应用,将暂停播放。
仅在当前缓冲音频已播完,下一段音频未到时,SDK回调此函数,告知 应用层,将暂停播放。而当应用主动调用SpeechSynthesizer.pauseSpeaking()暂停播放时,不会回调此函数。
另请参阅:
onSpeakResumed()
#onSpeakResumed
void onSpeakResumed()
恢复播放
SDK回调此接口,通知应用,将恢复播放。
仅在当前暂停由于音频缓存未到而引起的暂停,再恢复播放时,SDK回调此 函数,告知应用层,将恢复播放。而当应用主动调用SpeechSynthesizer.pauseSpeaking()暂停播放后,再调用SpeechSynthesizer.resumeSpeaking()恢复播放时,不会回调此函数。
另请参阅:
onSpeakPaused()
#onSpeakProgress
void onSpeakProgress(int progress,
int beginPos,
int endPos)
播放进度
SDK回调此接口,通知应用,当前的播放进度。
在回调了onSpeakBegin()后,便会回调此函数,告知应用层,当前的播 放进度。此函数在一次会话中,可能会被回调多次,且被调用次数与onBufferProgress(int, int, int, String)的被用次数一样。且,在同一次被调 用时,此函数的回调中的文本开始位置和结束位置,与对应那次被调用的onBufferProgress(int, int, int, String)的值一致。然而,除了第一次外,播 放进度,总是比缓冲进度慢,即可能全部文本已缓冲完成,播放进度还没开始下一次 的回调。当出现错误时,可能不会回调此函数。
参数:
progress - 百分比,当前待播放音频,占已合成音频数据长度的百分比。
beginPos - 文本开始位置。
endPos - 文本结束位置。
另请参阅:
onBufferProgress(int, int, int, String)
#onCompleted
void onCompleted(SpeechError error)
结束
SDK回调此接口,通知应用,将结束会话。
在音频播放完成,或会话出现错误时,将回调此函数。若应用主动调用SpeechSynthesizer.stopSpeaking()停止会话,则不会回调此函数。
参数:
error - 错误信息,若为null,则没有出现错误。
另请参阅:
SpeechSynthesizer.stopSpeaking()
#onEvent
void onEvent(int eventType,
int arg1,
int arg2,
android.os.Bundle obj)
合成会话事件
扩展用接口,由具体业务进行约定。
参数:
eventType - 消息类型
arg1 - 参数1
arg2 - 参数2
obj - 扩展参数
另请参阅:
SpeechEvent