TextToSpeech, 아이플라이텍

3575 단어
TextToSpeech 핵심 코드:
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        mBinding.setOnClick(this);
        mTextToSpeech = new TextToSpeech(this,this);
    }

 

    private void speakOut() {
        if (mTextToSpeech!= null && !mTextToSpeech.isSpeaking()){
//            Bundle bundle = new Bundle();
//            bundle.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME,1.0f);
            //  ,         added in API level 4        added in API level 21
//            mTextToSpeech.speak(mBinding.editText.getText().toString(),TextToSpeech.QUEUE_FLUSH,null);
            mTextToSpeech.speak(mBinding.editText.getText().toString(),TextToSpeech.QUEUE_FLUSH,null,"");
        }
    }

    /**
     *        
     * @param status
     */
    @Override
    public void onInit(int status) {
        if (status == TextToSpeech.SUCCESS){
            //     ,1.0   
            mTextToSpeech.setPitch(1.0f);
            //     ,  1.0    
            mTextToSpeech.setSpeechRate(1.0f);
            int result = mTextToSpeech.setLanguage(Locale.CHINA);
            if (result == TextToSpeech.LANG_MISSING_DATA
                    || result == TextToSpeech.LANG_NOT_SUPPORTED){
                Toast.makeText(this,"        ",Toast.LENGTH_SHORT).show();
            }
        }
    }

아이플라이텍:
@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mBinding = DataBindingUtil.setContentView(this, R.layout.activity_xun_fei);
        mBinding.setOnClick(this);
        //       
        SpeechUtility.createUtility(getApplicationContext(), SpeechConstant.APPID + "=5b558975");
        mSynthesizer = SpeechSynthesizer.createSynthesizer(this, this);
    }

    private void speak() {
        mSynthesizer.startSpeaking(mBinding.editTextXf.getText().toString(),mSynthesizerListener);
    }

    /*
            
     */
   private SynthesizerListener mSynthesizerListener = new SynthesizerListener() {
       @Override
       public void onSpeakBegin() {
           //    
       }

       @Override
       public void onBufferProgress(int i, int i1, int i2, String s) {
            //    
       }

       @Override
       public void onSpeakPaused() {
           //    

       }

       @Override
       public void onSpeakResumed() {
            //    
       }

       @Override
       public void onSpeakProgress(int i, int i1, int i2) {
            //    
       }

       @Override
       public void onCompleted(SpeechError speechError) {
            if (speechError == null){//    

            }else {

            }
       }

       @Override
       public void onEvent(int i, int i1, int i2, Bundle bundle) {
           //               id,         id         ,         ,      
           //        ,  id null
       }
   };


    @Override
    public void onInit(int i) {
        if (i != ErrorCode.SUCCESS){
            return;//     
        }
        mSynthesizer.setParameter(SpeechConstant.ENGINE_MODE, SpeechConstant.MODE_MSC);
        mSynthesizer.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL);
        mSynthesizer.setParameter(ResourceUtil.TTS_RES_PATH, getResourcePath());
        mSynthesizer.setParameter(SpeechConstant.VOICE_NAME, voicerLocal);
    }

 
코드가 비교적 간단하여, 부족한 점이 있으면 여러분은 댓글로 의사소통을 하실 수 있습니다.
전체 코드는 GitHub 참조

좋은 웹페이지 즐겨찾기