语音合成(Synthesizer)
这里介绍的是Java SDK API关于语音合成(Synthesizer)的相关说明,点击右侧目录可快速找到相应文件。
#类SpeechSynthesizer
com.iflytek.cloud.speech
java.lang.Object
com.iflytek.cloud.msc.module.SpeechModule
com.iflytek.cloud.speech.SpeechSynthesizer
public abstract class SpeechSynthesizer
extends com.iflytek.cloud.msc.module.SpeechModule
#语音合成类
语音合成,又称文语转换(Text to Speech,TTS)技术,解决的主要问题 是如何将文字信息转化为可听的声音信息(即音频数据)。关于语音识别,请 参考SpeechRecognizer类。
语音合成,支持不同的语言,方言,或同一方言不同的人的声音特点等,请参考 发音人参数SpeechConstant.VOICE_NAME。
本类使用单例,调用者使用本类的对象,只需要通过createSynthesizer()创建 一次对象后,便可一直使用该对象,直到通过调用destroy()进行单例对象销毁。调 用者可通过getSynthesizer()获取当前已经创建的单例。在销毁本类的单例对象后, 需要先通过createSynthesizer()再次创建单例对象,方可再使用。
在当前应用生命周期第一次使用本类的任何函数前,须先调用 SpeechUtility.createUtility(java.lang.String)进行SDK初始化。
从以下版本开始:
version:1015
另请参阅:
SpeechUtility.createUtility(String), SpeechRecognizer
#构造器概要
#构造器
构造器和说明 |
---|
SpeechSynthesizer() |
#方法概要
限定符和类型 | 方法和说明 |
---|---|
static SpeechSynthesizer` | createSynthesizer()创建单例对象 使用此函数创建一个本类单例对象。 |
abstract boolean | destroy()销毁单例对象 通过本函数,销毁由createSynthesizer()创建的单例对象。 |
java.lang.String | getParameter(java.lang.String key)获取参数 获取指定的参数的当前值。 |
static SpeechSynthesizer | getSynthesizer()获取单例对象 通过函数获取已创建的单例对象。 |
abstract boolean | isSpeaking()是否在合成是否在合成状态,包括是否在播放状态,音频从服务端获取完成后,获未播放完成,依然处理于当前会话的合成过程中。 |
abstract void | pauseSpeaking()暂停播放 暂停播放,仅在合成播放模式下有效,暂停播放,并不会暂停音频的获取过程, 只是在把播放器暂停。 |
abstract 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.TTS_AUDIO_PATH: 合成录音保存路径 |
abstract void | startSpeaking(java.lang.String text, SynthesizerListener listener)开始合成 调用此函数,开始合成文本拼播放音频。 |
abstract void | stopSpeaking()停止合成 调用此函数,停止当前合成会话,并停止音频播放。 |
abstract void | synthesizeToUri(java.lang.String text, java.lang.String uri, SynthesizeToUriListener listener)合成到文件 合成文本到一个Windows PCM文件,不播放。 |
从类继承的方法 com.iflytek.cloud.msc.module.SpeechModule
cancel, getStaticSync, getSync, setParameter
从类继承的方法 java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
#构造器详细资料
#SpeechSynthesizer
public SpeechSynthesizer()
#方法详细资料
#createSynthesizer
public static SpeechSynthesizer createSynthesizer()
创建单例对象
使用此函数创建一个本类单例对象。当成功创建一次单例对象后,可一直使用此对象, 直到调用destroy()销毁已创建的单例对象为止。若在当前应用生命周期内调用destroy()前再次调用本函数,则直接返回已创建的单例对象。可通过getSynthesizer()获取已创建的单例对象。
返回:
合成对象
返回:
身份验证对象 另请参阅:
destroy(), getSynthesizer()
#getSynthesizer
public static SpeechSynthesizer getSynthesizer()
获取单例对象
通过函数获取已创建的单例对象。当单例对象未创建时,将返回null,此时应先通过 createSynthesizer()创建单例对象。
返回:
合成对象
另请参阅:
createSynthesizer(), destroy()
#startSpeaking
public abstract void startSpeaking(java.lang.String text,
SynthesizerListener listener)
开始合成
调用此函数,开始合成文本拼播放音频。关于合成到文件,请参考函数synthesizeToUri(String, String, SynthesizeToUriListener)。
目前SDK不支持多线程,所以在调用本函数开始一次会话后,直到结束前(结果返回 完毕,或出现错误),不能再调用本函数开始新的会话。一次会话,即从会话开始,到结 束为止。
在调用本函数开始听写或语法识别前,通过setParameter(String, String)设置相 应的参数。
可通过SpeechModule.cancel()取消当前的会话。
参数:
- text - 要合成的文本
- listener - 合成状态监听器
#synthesizeToUri
public abstract void synthesizeToUri(java.lang.String text,
java.lang.String uri,
SynthesizeToUriListener listener)
合成到文件
合成文本到一个Windows PCM文件,不播放。使用此函数时,请考虑应用是否 有在设置的目录中保存文件的权限。
参数:
- text - 要合成的文本 -uri - 要保存的文件路径(含文件名)
- listener - 合成音频回调接口
另请参阅:
startSpeaking(String, SynthesizerListener)
#pauseSpeaking
public abstract void pauseSpeaking()
暂停播放
暂停播放,仅在合成播放模式下有效,暂停播放,并不会暂停音频的获取过程, 只是在把播放器暂停。
另请参阅:
resumeSpeaking(), startSpeaking(String, SynthesizerListener)
#resumeSpeaking
public abstract void resumeSpeaking()
恢复播放
在暂停后,在当前暂停位置开始播放合成的音频。
另请参阅:
pauseSpeaking(), stopSpeaking()
#stopSpeaking
public abstract void stopSpeaking()
停止合成
调用此函数,停止当前合成会话,并停止音频播放。调用此函数后,未合 成的音频将不再返回,若为合成到文件模式,音频文件将不会被保存。
另请参阅:
startSpeaking(String, SynthesizerListener)
#isSpeaking
public abstract boolean isSpeaking()
是否在合成
是否在合成状态,包括是否在播放状态,音频从服务端获取完成后,获未播放 完成,依然处理于当前会话的合成过程中。
返回:
false:否;true:是。
另请参阅:
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.TTS_AUDIO_PATH: 合成录音保存路径
覆盖:
setParameter 在类中 com.iflytek.cloud.msc.module.SpeechModule
参数:
- key - 参数名
- value - 参数值
返回:
设置是否成功
另请参阅:
startSpeaking(String, SynthesizerListener),getParameter(String)
#getParameter
public java.lang.String getParameter(java.lang.String key)
获取参数
获取指定的参数的当前值。
某些有默认的值的参数,如SpeechConstant.SAMPLE_RATE,在应用层未 调用setParameter(String, String)来设置参数值前,可能获取到的是null值, 但在实际会话会始时,SDK会使用默认值传给服务器。
覆盖:
getParameter 在类中 com.iflytek.cloud.msc.module.SpeechModule
参数:
- key - 参数名称,所有支持参数,参考setParameter(String, String)
返回:
参数值,值意义,参考SpeechConstant对各参数的说明。
另请参阅:
#destroy
public abstract boolean destroy()
销毁单例对象
通过本函数,销毁由createSynthesizer()创建的单例对象。
在调用本函数进行销毁前,应先保证当前不在会话中,否则,本函数将尝试取消当前 会话,并返回false,此时销毁失败。关于当前是否在会话中,请参考函数isSpeaking()。若销毁失败,请在取消当前会话后,再次调用本函数重试。
当本函数返回true时,销毁成功。此时,之前创建的单例对象已不能再使用,否则, 将会报错。此时需要再使用,应先通过createSynthesizer()创建一个新的单例 对象。
指定者:
destroy 在类中 com.iflytek.cloud.msc.module.SpeechModule
返回:
销毁成功:true;销毁失败:false。
另请参阅:
createSynthesizer(), stopSpeaking()
#接口SynthesizerListener
com.iflytek.cloud.speech
public interface SynthesizerListener
#合成监听器
通过实现此接口,获取当前合成的状态和结果
识别监听器,请参考RecognizerListener
合成至文件监听器,请参考SynthesizeToUriListener
从以下版本开始:
version:1015
另请参阅:
SpeechSynthesizer.startSpeaking(String, SynthesizerListener), RecognizerListener, SpeechUnderstanderListener, TextUnderstanderListener
#方法概要
限定符和类型 | 方法和说明 |
---|---|
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, int arg3, java.lang.Object obj1, java.lang.Object obj2)事件、 通过此接口函数,获取对应的事件。 |
void | onSpeakBegin()开始播放 SDK回调此函数,通知应用层,将要进行播放。 |
void | onSpeakPaused()暂停播放 SDK回调此接口,通知应用,将暂停播放。 |
void | onSpeakProgress(int progress, int beginPos, int endPos)播放进度 SDK回调此接口,通知应用,当前的播放进度。 |
void | onSpeakResumed()恢复播放 SDK回调此接口,通知应用,将恢复播放。 |
#方法详细资料
#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)
#onSpeakBegin
void onSpeakBegin()
开始播放
SDK回调此函数,通知应用层,将要进行播放。
在第一次回调了onBufferProgress(int, int, int, String)后,便会回调此 函数,告知应用层,将要进行播放。此函数在一次会话中,只会被调用一次,当出现 错误时,可能不会回调此函数。 返回:
合成对象
另请参阅:
onBufferProgress(int, int, int, String)
#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)
#onSpeakPaused
void onSpeakPaused()
暂停播放
SDK回调此接口,通知应用,将暂停播放。
仅在当前缓冲音频已播完,下一段音频未到时,SDK回调此函数,告知 应用层,将暂停播放。而当应用主动调用 SpeechSynthesizer.pauseSpeaking()暂停播放时,不会回调此函数。
另请参阅:
#onSpeakResumed
void onSpeakResumed()
恢复播放
SDK回调此接口,通知应用,将恢复播放。
仅在当前暂停由于音频缓存未到而引起的暂停,再恢复播放时,SDK回调此 函数,告知应用层,将恢复播放。而当应用主动调用 SpeechSynthesizer.pauseSpeaking()暂停播放后,再调用 SpeechSynthesizer.resumeSpeaking()恢复播放时,不会回调此函数。
另请参阅:
onSpeakPaused()
#onCompleted
结束
SDK回调此接口,通知应用,将结束会话。
在音频播放完成,或会话出现错误时,将回调此函数。若应用主动调用 SpeechSynthesizer.stopSpeaking()停止会话,则不会回调此函数。
参数:
- error - 错误信息,若为null,则没有出现错误。
另请参阅:
SpeechSynthesizer.stopSpeaking()
#onEvent
void onEvent(int eventType,
int arg1,
int arg2,
int arg3,
java.lang.Object obj1,
java.lang.Object obj2)
事件 、 通过此接口函数,获取对应的事件。
参数:
- eventType - 目前合成支持的事件有: SpeechEvent.EVENT_TTS_BUFFER。
- arg1 -
- arg2 -
- arg3 -
- obj1 -
- obj2 -
另请参阅:
SpeechEvent
#接口SynthesizeToUriListener
com.iflytek.cloud.speech
public interface SynthesizeToUriListener
#合成至文件监听器
通过实现此接口,获取当前合成至文件的状态和结果
识别监听器,请参考RecognizerListener
合成监听器,请参考SynthesizerListener
从以下版本开始:
version:1015
另请参阅:
SpeechSynthesizer.synthesizeToUri(String, String, SynthesizeToUriListener), RecognizerListener, SpeechUnderstanderListener, TextUnderstanderListener, SynthesizerListener
#方法概要
限定符和类型 | 方法和说明 |
---|---|
void | onBufferProgress(int progress)缓冲进度 SDK回调此函数,通知应用层,当前合成音频的缓冲进度。 |
void | onEvent(int eventType, int arg1, int arg2, int arg3, java.lang.Object obj1, java.lang.Object obj2)事件、 通过此接口函数,获取对应的事件。 |
void | onSynthesizeCompleted(java.lang.String uri, SpeechError error)结束 SDK回调此接口,通知应用,将结束会话。 |
#方法详细资料
#onBufferProgress
void onBufferProgress(int progress)
缓冲进度
SDK回调此函数,通知应用层,当前合成音频的缓冲进度。
此函数在一次会话中,可能会被调用多次,直到参数1为100比为止。当 出现错误时,可能不会回调此函数。
参数:
- progress - 百分比,当前已合成文本占当前会话全部文本的百分比。
#onSynthesizeCompleted
void onSynthesizeCompleted(java.lang.String uri,
SpeechError error)
结束
SDK回调此接口,通知应用,将结束会话。
在音频合成完成,或会话出现错误时,将回调此函数。若应用主动调用 SpeechSynthesizer.stopSpeaking()停止会话,则不会回调此函数。
参数:
- uri - 音频文件保存路径
- error - 错误信息,若为null,则没有出现错误。
另请参阅:
SpeechSynthesizer.stopSpeaking()
#onEvent
void onEvent(int eventType,
int arg1,
int arg2,
int arg3,
java.lang.Object obj1,
java.lang.Object obj2)
事件 、 通过此接口函数,获取对应的事件。
参数:
- eventType - 目前合成支持的事件有: SpeechEvent.EVENT_TTS_BUFFER。
- arg1 -
- arg2 -
- arg3 -
- obj1 -
- obj2 -
另请参阅:
SpeechEvent