如何将TTS输出保存到Android上的音频文件中?

问题描述 投票:3回答:4

这是我在这里的第一篇文章。我是Android编程的新手。我想创建一个应用程序,可以在其中将文本输出转换为语音文件,并将音频文件保存到数据库中。我听说过synthesizeToFile(),但不是。

android text-to-speech
4个回答
1
投票

使用此代码并从资产文件夹中获取mp3文件,然后尝试使用此代码。

mMediaPlayer = new MediaPlayer();
mMediaPlayer = MediaPlayer.create(this,R.raw.button);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.start();
mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {                   
    @Override
    public void onCompletion(MediaPlayer mp) {
        mMediaPlayer.stop();
    }
});

8
投票

synthesizeToFile()应该创建一个wav(您可以将其解码并发送到db或另存为文件或进行任何操作),然后可以使用Nitesh的代码对其进行播放。

来自http://android-developers.blogspot.fi/2009/09/introduction-to-text-to-speech-in.html

HashMap<String, String> myHashRender = new HashMap();
String wakeUpText = "Are you up yet?";
String destFileName = "/sdcard/myAppCache/wakeUp.wav";
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, wakeUpText);
mTts.synthesizeToFile(wakeUpText, myHashRender, destFileName);

一旦通知合成完成,您就可以播放就像其他音频资源一样输出文件android.media.MediaPlayer。


0
投票

您应该保存在tts文件资产文件夹中。


0
投票

mTTS = new TextToSpeech(this,new TextToSpeech.OnInitListener()

        private String mAudioFilename = "";
        private final String mUtteranceID = "totts";
        @Override
        public void onInit(int status) {
            bsave.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    saveToAudioFile(mEditText.getText().toString().trim());
                }
            });

            CreateFile();
        }



        private void CreateFile() {
                // Perform the dynamic permission request
                if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION_WRITE_EXTERNAL_STORAGE);

                // Create audio file location
                File sddir = new File(Environment.getExternalStorageDirectory() + "/My File/");
                sddir.mkdir();


                mAudioFilename = sddir.getAbsolutePath() + "/" + mUtteranceID + ".wav";


            }



        private void saveToAudioFile(String text) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                mTTS.synthesizeToFile(text, null, new File(mAudioFilename), mUtteranceID);
                Toast.makeText(MainActivity.this, "Saved to " + mAudioFilename, Toast.LENGTH_LONG).show();
            } else {
                HashMap<String, String> hm = new HashMap();
                hm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,mUtteranceID);
                mTTS.synthesizeToFile(text, hm, mAudioFilename);
                Toast.makeText(MainActivity.this, "Saved to " + mAudioFilename, Toast.LENGTH_LONG).show();
            }



        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.