首页 > 解决方案 > 如何将 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 );

    }
} 

我只是想要有关如何修复无效弹出窗口的帮助。

标签: javaandroidandroid-studiomobile

解决方案


推荐阅读