setting alipay wechat success appmanage dollor user cart order workorder logout left1 left2 app unfree free chart coupon note copy pencil price-tag database cog bin list link plus minus codepen 审核 cross table search user-tie eye github cancel-circle checkmark icon-upload icon-smartphon icon-auth-user icon-arroba-symbol icon-check-pass icon-red-cross icon-pwd-key icon-used icon-expired android appleinc tux windows8 java webAPI mail vip

    # Android 语音合成(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类 (opens new window)

    语音合成,支持不同的语言,方言,或同一方言不同的人的声音特点等,请参考 发音人参数SpeechConstant.VOICE_NAME (opens new window)

    本类使用单例,调用者使用本类的对象,只需要通过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) (opens new window)进行SDK初始化。

    另请参阅: SpeechUtility.createUtility(android.content.Context, java.lang.String) (opens new window), SpeechRecognizer (opens new window)

    # 嵌套类概要

    从类继承的嵌套类/接口 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: (opens new window) 发音人
    SpeechConstant.SPEED: (opens new window) 合成语速
    SpeechConstant.VOLUME: (opens new window) 合成音量
    SpeechConstant.PITCH: (opens new window) 合成语调
    SpeechConstant.BACKGROUND_SOUND: (opens new window) 背景音乐
    SpeechConstant.TTS_BUFFER_TIME: (opens new window) 合成音频缓冲时间
    SpeechConstant.STREAM_TYPE: (opens new window) 播放类型
    SpeechConstant.SAMPLE_RATE: (opens new window) 采样率
    SpeechConstant.TTS_AUDIO_PATH: (opens new window) 合成录音保存路径
    SpeechConstant.ENGINE_TYPE: (opens new window) 引擎类型;
    ResourceUtil.TTS_RES_PATH: (opens new window) 离线资源路径;
    ResourceUtil.ENGINE_START: (opens new window) 启动离线引擎;
    SpeechConstant.TTS_FADING: (opens new window) 合成淡入淡出;
    SpeechConstant.AUDIO_FORMAT_AUE: (opens new window) 音频流编解码格式;

    覆盖:
    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 (opens new window)对各参数的说明。

    另请参阅:
    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 (opens new window)

    另请参阅:
    SpeechSynthesizer.startSpeaking(String, SynthesizerListener), RecognizerListener (opens new window)

    # 方法概要

    所有方法

    限定符和类型 方法和说明
    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 (opens new window)