java - 如何将 tts 的输出共享为 mp3 或 wav
问题描述
我正在开发一个具有文本输入字段和两个按钮的应用程序:完成和共享。您可以在字段中输入任何内容并按完成,它会将文本转换为语音。然后,如果您按下“分享”按钮,该应用程序会将您带到任何类型的信使,如 WhatsApp 或 Telegram 等。然后您可以选择 WhatsApp 上的任何联系人,您可以分享文本转语音“机器人”,说出您在应用程序。这就是我想要实现的。所以我制作了 Text To Speech 部分并添加了按钮。现在问题来了,例如,当我按下分享并转到 WhatsApp 时,它说它不支持或无效。
这是我的代码
主要活动
package com.example.texttospeech;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.HashMap;
import java.util.Locale;
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;
public class MainActivity extends AppCompatActivity {
EditText etInput;
Button btDone, btClear, btShare;
TextToSpeech textToSpeech;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etInput = findViewById(R.id.et_input);
btDone = findViewById(R.id.bt_done);
btShare = findViewById(R.id.btn_share);
textToSpeech = new TextToSpeech(getApplicationContext()
, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int i) {
if (i == TextToSpeech.SUCCESS) {
int lang = textToSpeech.setLanguage(Locale.ENGLISH);
}
}
});
btDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = etInput.getText().toString();
int speech = textToSpeech.speak(s, TextToSpeech.QUEUE_FLUSH, null);
shareAudio();
}
});
btShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
private void shareAudio()
{
HashMap<String, String> myHashRender = new HashMap();
String Text = "" + etInput.getText().toString();
String destFileName = "/sdcard/myAppCache/wakeUp.wav";
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, Text);
textToSpeech.synthesizeToFile(Text, myHashRender, destFileName);
Bundle bundle = new Bundle();
Intent intent = new Intent( Intent.ACTION_SEND );
intent.setType("audio/wav");
startActivity( intent );
}
}
我只是想要有关如何修复无效弹出窗口的帮助。
解决方案
推荐阅读
- java - 按顺序识别列表打印中的重复项
- java - 有什么方法可以在没有实体的情况下使用“@Procedure”注释?
- python - 对不同变量执行相同功能的有效方法
- reactjs - 尝试呈现 pdf 时出现 React-pdf 错误
- javascript - 在 React HOC 中渲染数组中的对象
- python - 神经网络中不断减少的损失
- ios - UIAlertController:如何使右键加粗?
- elasticsearch - 在 Liferay 中搜索
- android - 从 Android Studio 内部搜索 Android API 文档
- haproxy - HAProxy 上子域和通配符域的特定路由