簡體   English   中英

文本到語音保存到音頻文件,靜音(長暫停)

[英]Text to Speech save to audio file with silent (long pause)

我希望將文本語音保存為音頻文件,暫停5秒鍾。我可以將文本保存到mp3文件。我試過,但我沒有得到任何地方。

將文本保存到mp3 file.i的代碼需要添加靜音5秒。

HashMap<String, String> myHashRender = new HashMap();
String text="Name ,How are you.";//After Name i need to stop 5 seconds silent
String destFileName = Environment.getExternalStorageDirectory()+"/myfolder/tts.mp3";
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, text);
tts.synthesizeToFile(text, myHashRender, destFileName);
   // TAKE PERMISSIONS RUNTIME TOO
   private void requestPermission() {
     ActivityCompat.requestPermissions(MainActivity.this, new 
       String[]{WRITE_EXTERNAL_STORAGE, RECORD_AUDIO}, RequestPermissionCode);
   }

   @Override
   public void onRequestPermissionsResult(int requestCode, 
      String permissions[], int[] grantResults) {
       switch (requestCode) {
        case RequestPermissionCode:
          if (grantResults.length> 0) {
           boolean StoragePermission = grantResults[0] == 
              PackageManager.PERMISSION_GRANTED;
           boolean RecordPermission = grantResults[1] == 
             PackageManager.PERMISSION_GRANTED;

        if (StoragePermission && RecordPermission) {
           Toast.makeText(MainActivity.this, "Permission Granted", 
              Toast.LENGTH_LONG).show();
        } else {
           Toast.makeText(MainActivity.this,"Permission 
              Denied",Toast.LENGTH_LONG).show();
        }
     }
     break;
   }
 }

  public boolean checkPermission() {
    int result = ContextCompat.checkSelfPermission(getApplicationContext(), 
     WRITE_EXTERNAL_STORAGE);
   int result1 = ContextCompat.checkSelfPermission(getApplicationContext(), 
     RECORD_AUDIO);
   return result == PackageManager.PERMISSION_GRANTED && 
      result1 == PackageManager.PERMISSION_GRANTED;
  }

   //Prepare RECORDER
    String outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp";
    private MediaRecorder myAudioRecorder = new MediaRecorder();
    myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
    myAudioRecorder.setOutputFile(outputFile);


   // START THE RECORDING
       try {
                myAudioRecorder.prepare();
                myAudioRecorder.start();

                // START YOUR TEXT_TO_SPEECH HERE

            } catch (IllegalStateException ise) {
                // make something ...
            } catch (IOException ioe) {
                // make something
            }           
            Toast.makeText(getApplicationContext(), "Recording started", Toast.LENGTH_LONG).show();


           // NOW TO STOP OR TO SAVE USE BELOW CODE 
           // when TTS is done playing, the OnUtteranceCompletedListener() get called automatically, for this your activity needs to IMPLEMENTS OnUtteranceCompletedListener 
  // It's callback // After 5 sec of TTS's speaking, file have saved

  public void onUtteranceCompleted(String utteranceId) {
    Log.i(TAG, utteranceId); //utteranceId == "SOME MESSAGE"

    new Handler().postDelayed(new Runnable() {
       @Override
       public void run() {
          myAudioRecorder.stop();
          myAudioRecorder.release();
          myAudioRecorder = null;
          Toast.makeText(getApplicationContext(), "Audio Recorder successfully", Toast.LENGTH_LONG).show();                
       }
    }, 5000);

  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM