Java SDK 语音合成(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对各参数的说明。

另请参阅:

setParameter(String, String)

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()

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