如何在外部存储中以阿拉伯语将文本转换为语音文件为.wav / .mp3格式?

时间:2012-05-01 05:34:55

标签: android text-to-speech

我想用阿拉伯语保存音频文件。因为我使用的代码如下。
我正在尝试,但我无法用阿拉伯语保存。它仅以英语保存。 请帮帮我,谢谢

package com.t;

import java.io.File;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle; 
import android.os.Environment;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class TextToSpeechNewActivity extends Activity {

Button store, play;
EditText input;
String speakTextTxt;
TextToSpeech mTts;
HashMap<String, String> myHashRender = new HashMap<String, String>();
String tempDestFile ;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    store = (Button) findViewById(R.id.button1);
    play = (Button) findViewById(R.id.button2);
    input = (EditText) findViewById(R.id.editText1);
    store.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            speakTextTxt = input.getText().toString();
            Log.v("log", ""+input.getText().toString());

            myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,speakTextTxt);

            String exStoragePath = Environment.getExternalStorageDirectory().getAbsolutePath();
            File appTmpPath = new File(exStoragePath + "/pradip");
            appTmpPath.mkdirs();
            String tempFilename = input.getText().toString()+".wav";
            tempDestFile = appTmpPath.getAbsolutePath() + "/"+ tempFilename;
            new MySpeech(speakTextTxt);

        }
    });
}

class MySpeech implements OnInitListener{

            String tts;

    public MySpeech(String tts)
    {
        this.tts = tts;
        mTts = new TextToSpeech(TextToSpeechNewActivity.this, this);
    }

    @Override
    public void onInit(int status) 
    {
        Log.v("log", "initi");
        mTts.synthesizeToFile(speakTextTxt, myHashRender, tempDestFile);
    }
  }
 }

1 个答案:

答案 0 :(得分:0)

从之前的评论:

  

这可能听起来有点明显,但您是否尝试使用setLanguage(...)明确将语言设置为阿拉伯语Locale?您还可以通过检查isLanguageAvailable(...)

的返回值来首先检查Locale是否可用

  

从维基百科中获取它们:ISO 3166-1ISO 639-1。请注意Locale docs说:“语言代码是ISO 639-1定义的双字母小写ISO语言代码(例如”en“)。国家代码两个 - 字母 ISO 3166-1定义的大写ISO国家代码(例如“US”)。“