Android 原生TextToSpeech 的基本使用

代码如下



	private var mTextToSpeech: TextToSpeech? = null
	private var initSuccess = false
	
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        
        //首先需要初始化引擎
        initialize(this)
		
		if(initSuccess){
			speak("这是一条测试语音播报")
		}
    }

    private fun initialize(context: Context){
    	//初始化回调,成功之后就可以对 Tts 进行设置
        mTextToSpeech = TextToSpeech(context, object: TextToSpeech.OnInitListener{
            override fun onInit(status: Int) {
                if (status == TextToSpeech.SUCCESS){
                	initSuccess = true
                	//设置 Tts 的语言种类,并且判断是否设置成功
                    if(mTextToSpeech?.setLanguage(Locale.CHINESE) == TextToSpeech.LANG_AVAILABLE){
                    	//设置 Tts 的音调高度,默认为1,越低则声调越低
                        mTextToSpeech!!.setPitch(0.8f)
                        //设置 Tts 的语速
                        mTextToSpeech!!.setSpeechRate(1.0f)
                        //这里设置的为 Tts.speak 的回调
                        mTextToSpeech!!.setOnUtteranceProgressListener(object: UtteranceProgressListener() {
                            override fun onStart(utteranceId: String?) {
                            }
                            override fun onStop(utteranceId: String?, interrupted: Boolean) {
                            }
                            override fun onDone(utteranceId: String?) {
                            }
                            override fun onError(utteranceId: String?) {
                            }
                        })
                    }
                }
            }
        })
    }


	private fun speak(text: String){
		/**
		* TextToSpeech.QUEUE_FLUSH 指语音播报为当语音播报未结束时
		* 	此时再调用 speak 方法则直接停止上一条播报
		* TextToSpeech.QUEUE_ADD 则为将下一条添加到队列中
		* 	上一条播报完毕再播放下一条
		* 这里最后一个参数为 utteranceId
		* 	如果需要对播报情况进行监听
		* 	即了解播报开始、结束、失败等状态
		* 	那么这个参数不能为空,否则上面的 UtteranceProgressListener 将不会收到任何回调
		**/
		mTextToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null, "testId")
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值