android 文字转语音(中文) TextSpeech

1、介绍

TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。

它是同时运用语言学和心理学的杰出之作,在内置芯片的支持之下,通过神经网络的设计,把文字智能地转化为自然语音流。TTS技术对文本文件进行实时转换,转换时间之短可以秒计算。在其特有智能语音控制器作用下,文本输出的语音音律流畅,使得听者在听取信息时感觉自然,毫无机器语音输出的冷漠与生涩感。TTS语音合成技术 [1] 即将覆盖国标一、二级汉字,具有英文接口,自动识别中、英文,支持中英文混读。所有声音采用真人普通话为标准发音,实现了120-150个汉字/分钟的快速语音合成,朗读速度达3-4个汉字/秒,使用户可以听到清晰悦耳的音质和连贯流畅的语调。现在有少部分MP3随身听具有了TTS功能。

TTS是语音合成应用的一种,它将储存于电脑中的文件,如帮助文件或者网页,转换成自然语音输出。TTS不仅能帮助有视觉障碍的人阅读计算机上的信息,更能增加文本文档的可读性。现在的TTS应用包括语音驱动的邮件以及声音敏感系统,并常与声音识别程序一起使用。

2、主要方法说明

/**
 * text 需要转成语音的文字 
 * queueMode 队列方式: 
 * QUEUE_ADD:播放完之前的语音任务后才播报本次内容 
 * QUEUE_FLUSH:丢弃之前的播报任务,立即播报本次内容 
 * params 设置TTS参数,可以是null。 
 * KEY_PARAM_STREAM:音频通道,可以是:STREAM_MUSIC、STREAM_NOTIFICATION、STREAM_RING等 
 * KEY_PARAM_VOLUME:音量大小,0-1f 
 * utteranceId:当前朗读文本的id
 */
textToSpeech.speak(content, TextToSpeech.QUEUE_FLUSH, null,i+"");

// 不管是否正在朗读TTS都被打断
textToSpeech.stop();     

// 关闭,释放资源
textToSpeech.shutdown(); 

// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
textToSpeech.setPitch(0.5f);

// 设定语速,默认1.0正常语速
textToSpeech.setSpeechRate(1.5f);

3、实例代码

public class TextSpeech {
    private static TextSpeech textSpeech = new TextSpeech();

    public static TextSpeech getInstance() {
        return textSpeech;
    }

    private TextSpeech() {
    }

    private TextToSpeech tts;

    public void initSpeech(final Context context) {
        tts = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {
                // TODO Auto-generated method stub
                if (null != tts && status == TextToSpeech.SUCCESS) {
                    //支持的语言类型(依赖讯飞语音支持中文合成)
                    int result = tts.setLanguage(Locale.SIMPLIFIED_CHINESE);

                    if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                        Toast.makeText(context, "语言不可用,不支持语音播报功能!", Toast.LENGTH_SHORT).show();
                    }
                    Log.i("hwwFace", "initSpeech  getDefaultEngine = " + tts.getDefaultEngine() + "   " + result);
                }
            }
        });
    }


    /**
     * 设置语言播报速度
     *
     * @param speechRate
     */
    public void setSpeechRate(float speechRate) {
        if (null != tts) {
            tts.setSpeechRate(speechRate);
        }
    }

    /**
     * @param con
     */
    public void speak(String con) {
        if (null != tts && !StringUtils.isEmpty(con)) {
            if (!tts.isSpeaking()) {
                int speak = tts.speak(con, TextToSpeech.QUEUE_FLUSH, null);
            }
        }
    }

    /**
     * 播放tts,如果正在播放tts则停止之前的播放最新的
     *
     * @param message
     */
    public void ttsSpeak(String message) {
        if (tts != null && !StringUtils.isEmpty(message)) {
            int speak = tts.speak(message, TextToSpeech.QUEUE_FLUSH, null);
        }
    }

    /**
     * 关闭注销TTS的资源
     */
    public void closeTTS() {
        if (null != tts) {
            tts.stop();
            tts.shutdown();
            tts = null;
        }
    }

}

​​​​​​4、引擎补充说明

  • com.svox.pico 系统自带不支持中文语音
  • com.svox.classic 搜svox搜到的,和上面类似不支持中文
  • com.google.android.tts 谷歌文字转语音引擎,不支持5.0以下系统,大小17.98M
  • com.iflytek.speechcloud 科大讯飞语音引擎3.0,支持4.0以上系统,大小27.27M
  • com.iflytek.speechsuite 新版科大讯飞语音引擎,2018年开始新版手机一般会内置,如oppo、vivo、华为
  • com.baidu.duersdk.opensdk 度秘语音引擎3.0 不支持5.0以下系统,大小11.95M
  • com.iflytek.tts 科大讯飞语音合成,较老,不支持7.0以上系统,大小9M
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值