Any TTS api for Android in turkish?

a 夏天 提交于 2019-11-28 08:40:28

问题


Is there any free TTS (text-to-speech) service for Android in Turkish? I've not found anything useful in google.


回答1:


I didnt try it yet on android, but I recently discovered this one: http://www.ispeech.org The speech quality looks promising on the web app.

Give it a shot :)




回答2:


Here you can use Google TTS as below:

strText =  converToTurkishCharacter(strText);
     if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
                        textToSpeech = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {


                            @Override
                            public void onInit(int status) {

                                Locale locale = new Locale("tr_TR");//set Locale
                                textToSpeech.setLanguage(locale);


                                if (status != TextToSpeech.ERROR) {

                                }
                                if (status == TextToSpeech.SUCCESS) {


                                    String[] text = strText.split("\\.");//split with every "dot"

                                    for (int i = 0; i < text.length; i++) {
                                        HashMap uttrerance = new HashMap();
                                        uttrerance.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, Integer.toString(i));
                                        textToSpeech.speak(text[i], 1, uttrerance);

                                    }
                                }


                                //-------checks engine
                                List engineList = textToSpeech.getEngines();

                                for(Object strEngine : engineList){
                                    Log.d("tagg",strEngine.toString());
                                    if(strEngine.toString().equals("EngineInfo{name=com.google.android.tts}")){//check if google tts api engine is installed on device

                                        isGoogleAvaible = true;
                                    }
                                }
                                if(!isGoogleAvaible){
                                    Toast toast = Toast.makeText(ActivityColumnistArticle.this,
                                            "Google TTS Eksik...Lutfen yukleyin", Toast.LENGTH_LONG);
                                    toast.setGravity(Gravity.BOTTOM, 0, 0);
                                    toast.show();
                                    Intent intent = new Intent(Intent.ACTION_VIEW);
                                    intent.setData(Uri.parse("market://details?id=com.google.android.tts"));
                                    startActivity(intent);//user should install google tts , if it is defaultly not installed
                                }
                                //---------------For missing data
                                int code = textToSpeech.isLanguageAvailable(locale);
                                if (code == -2 || code == -1) {
                                    Intent installIntent = new Intent();
                                    installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                                    startActivity(installIntent);
                                }
                            }

                        }, "com.google.android.tts");
                    }
                    else{
                        Toast toast = Toast.makeText(ActivityColumnistArticle.this,
                                "Ses destegi icin minumum Icecream Sandwich yuklu olmalı...", Toast.LENGTH_LONG);
                        toast.setGravity(Gravity.BOTTOM, 0, 0);
                        toast.show();
                    }

Moreover, Google TTS have bug with türkish character like "ö", "ğ" so that you should convert them with unicode:

    private String converToTurkishCharacter(String text){


           text = text.replace("\u015f", "\u015f");
           text = text.replace("\u00e7", "\u00e7");
           text = text.replace("\u011f", "\u011f");
           text = text.replace("\u0131", "\u0131");
           text = text.replace("\u00fc", "\u00fc");
           text = text.replace("\u00f6", "\u00f6");
          // ----
           text = text.replace("\u011e", "\u011e");
           text = text.replace("\u0130", "\u0130");
           text = text.replace("\u00d6", "\u00d6");
           text = text.replace("\u00dc", "\u00dc");
           text = text.replace("\u015e", "\u015e");
           text = text.replace("\u00c7", "\u00c7");
           return  text;
       }

Some android device have pico TTS only, so that is why you check Google TTS, and ask user to install...

Not:In order tts to work,You should have real android device




回答3:


I fixed this problem in my case,

define that variable:

final Locale locale = new Locale("tr", "TR");

in onCreate method:

      tts = new TextToSpeech(getApplicationContext(), new
      TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {

                 if (status == TextToSpeech.SUCCESS) {
                    int result = tts.setLanguage(locale);
                    if (result == TextToSpeech.LANG_MISSING_DATA
                            || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                        tts.speak("bir sorun oluştu", TextToSpeech.QUEUE_FLUSH, null);
                    }
                } else {
                    tts.speak("bir sorun oluştu.", TextToSpeech.QUEUE_FLUSH, null);
                    Log.d(TAG, "Text to speech is not successful");
                }
            }
        });
       tts.speak("bağlanıyor", TextToSpeech.QUEUE_FLUSH, null);

it will say "bağlanıyor"



来源:https://stackoverflow.com/questions/9311274/any-tts-api-for-android-in-turkish

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!