使用讯飞SDK,实现文字在线合成语音

private SpeechSynthesizer mTts; 
private int isSpeaking = 0;

mTts= SpeechSynthesizer.createSynthesizer(this, null);


/*
* 开始合成 * * @param view */ public void start() { mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan"); mTts.setParameter(SpeechConstant.SPEED, "50");//设置语速 mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围 0~100 mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端 mTts.startSpeaking(search_word_content.getText().toString().trim(), mSynListener); }
//合成监听器
    private SynthesizerListener mSynListener = new SynthesizerListener(){
        //缓冲进度回调
        //percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在
        //文本中结束位置,info为附加信息。
        @Override
        public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {
            // TODO Auto-generated method stub
            
        }
        //会话结束回调接口,没有错误时,error为null
        @Override
        public void onCompleted(SpeechError arg0) {
            // TODO Auto-generated method stub
            
        }
        //会话事件回调接口
        @Override
        public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
            // TODO Auto-generated method stub
            
        }
        //开始播放
        @Override
        public void onSpeakBegin() {
            // TODO Auto-generated method stub
            
        }
        //暂停播放
        @Override
        public void onSpeakPaused() {
            // TODO Auto-generated method stub
            
        }
        //播放进度回调
        //percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文
        //本中结束位置.
        @Override
        public void onSpeakProgress(int arg0, int arg1, int arg2) {
            // TODO Auto-generated method stub
            
        }
    
        //恢复播放回调接口
        @Override
        public void onSpeakResumed() {
            // TODO Auto-generated method stub
            
        }


    };
if (isSpeaking == 0) {
                start();
                gif_no.setVisibility(View.INVISIBLE);
                gif.setVisibility(View.VISIBLE);
                isSpeaking = 1;
            } else if (isSpeaking == 1) {
                // 暂停播放
                mTts.pauseSpeaking();
                gif_no.setVisibility(View.VISIBLE);
                gif.setVisibility(View.INVISIBLE);
                isSpeaking = 2;
            } else if (isSpeaking == 2) {
                // 继续播放
                //System.out.println("..........");
                
                mTts.resumeSpeaking();
                isSpeaking = 1;
                gif_no.setVisibility(View.INVISIBLE);
                gif.setVisibility(View.VISIBLE);
                
            }
// 取消合成
        mTts.stopSpeaking();
        isSpeaking = 0;

总结, 开始初始化,start方法里面设置参数,再根据需要调用停止和继续方法,假如换了文本调用取消合成方法,重新start方法

转载于:https://www.cnblogs.com/520-1314/p/5048346.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值