java - 文本到语音以静音(长时间停顿)保存到音频文件
问题描述
我想将文本语音另存为音频文件,暂停 5 秒静音。我可以将文本保存到 mp3 文件。我试过但我没有得到任何地方。
将文本保存到 mp3 文件的代码。我需要添加静音 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);
}
推荐阅读
- cobol - 如何将最后一位数字移动到cobol中数字的第一位
- javascript - 将 SurveyJS 数据推送到 MongoDB
- android - Kivy & Buildozer: How to play audio while Android Application is loading?
- php - 如何使用 PHP 从 URL 下载多个图像并将它们保存在我的文件夹中?
- identityserver4 - 检查 identityserver4 上的 Id_token 或 access_token
- python - 关于yolov2中损失函数的问题?
- php - 调用未定义的方法 Spatie\Geocoder\Facades\Geocoder::setApiKey()
- python - 将条件定义为类
- xamarin.forms - 访问 D365 CRM API
- reactjs - 使用 TypeScript 在 useState React Hook 上设置类型